האם קינקט משתמש באינפרא אדום
סיכום
במאמר זה, נחקור כיצד ניתן לשנות את מיקרוסופט קינקט כדי לתפקד כמצלמה אינפרא אדום (IR). הקינקט ידוע בדרך כלל כמצלמה עומק, אך עם כמה שינויים, הוא יכול לתפוס תמונות IR. על ידי חסימת מקרן ה- IR והוספת מנורות IR חיצוניות, אנו יכולים לאפשר לקינקט לאתר ולהקליט אור אינפרא אדום. להלן נקודות המפתח שנדונו במאמר זה:
- ה- Kinect הוא היקפי עבור קונסולת Xbox 360 המאפשרת למשתמשים לקיים אינטראקציה מבלי להשתמש בבקר.
- הקינקט היא מצלמה עומקת, כלומר היא יכולה לחשב מרחקים בינו לבין חפצים בשדה הראיה שלה.
- על ידי שינוי הקינקט, אנו יכולים להשתמש בו כמצלמת IR כדי לתפוס תמונות IR.
- רכיבי הקינקט כוללים מקרן IR, מצלמת IR ומצלמת RGB.
- מקרן ה- IR פולט רשת של נקודות IR על חפצים, שמצלמת ה- IR מזהה כדי לחשב תמונות עומק.
- תיאור מפורט של הקינקט והשימושים הפוטנציאליים שלו ניתן למצוא בספר “לגרום לדברים לראות” מאת גרג בורנשטיין.
- כדי לחבר את הקינקט למחשב, עלינו להתקין תוכנה וספריות ספציפיות, כמו Openni, Nite, חיישן ו- Sensorkinect.
- לאחר ההתקנה, אנו יכולים לאמת את ההצלחה על ידי הפעלת סקריפטים לדוגמא בעיבוד.
- על מנת לחסום את מקרן ה- IR, אנו יכולים ליצור כיסוי עיניים באמצעות קלטת צינור וכריות וולקרו.
- מכיוון שחסימת מקרן ה- IR משפיעה על נראות ה- IR, יש להוסיף מנורות IR חיצוניות כדי לספק תאורת IR מספקת.
- כדי לבנות מנורות IR, אנו יכולים לעקוב אחר תרשים מעגלים ולחשב ערכי התנגדות עבור נוריות LED.
שאלות ותשובות
ש 1: מה הקינקט הידוע בעיקר בו?
A1: הקינקט ידוע בעיקר כמצלמה עומקת, המסוגלת לחשוב מרחקי מחשוב בין חפצים לעצמה.
ש 2: כיצד ניתן לשנות את הקינקט כדי לתפקד כמצלמה אינפרא אדום?
A2: ניתן לשנות את הקינקט על ידי חסימת מקרן ה- IR והוספת מנורות IR חיצוניות כדי לתפוס תמונות אינפרא אדום.
ש 3: מהם מרכיבי הקינקט?
A3: רכיבי הקינקט כוללים מקרן IR, מצלמת IR ומצלמת RGB.
Q4: איך Kinect Compute Compute תמונות עומק?
A4: הקינקט מחשב תמונות עומק על ידי פליטת רשת של נקודות IR על חפצים, שמצלמת ה- IR מגלה ומשתמשת בחישוב המרחקים.
ש 5: האם יש משאבים מומלצים ללמוד יותר על הקינקט?
A5: כן, “לגרום לדברים לראות” מאת גרג בורנשטיין מספק תיאור מפורט של הקינקט והיישומים הפוטנציאליים שלו.
ש 6: אילו תוכנה וספריות נדרשים לחיבור הקינקט למחשב?
A6: התוכנה והספריות הדרושים כוללים Openni, Nite, חיישן וסנסקורקט.
ש 7: כיצד נוכל לאמת את ההתקנה המוצלחת של תוכנת Kinect?
A7: על ידי הפעלת סקריפטים לדוגמא בעיבוד, כגון דימום ודיאקטור, אנו יכולים לוודא אם ההתקנה הצליחה.
ש 8: כיצד ניתן לחסום את מקרן ה- IR של הקינקט?
A8: ניתן ליצור כיסוי עיניים באמצעות קלטת צינור וכריות וולקרו לכיסוי ולחסום את מקרן ה- IR.
Q9: מדוע יש צורך להוסיף מנורות IR חיצוניות?
A9: חסימת מקרן ה- IR מפחיתה את נראות ה- IR, ולכן מנורות IR חיצוניות נחוצות כדי לספק תאורת IR מספקת ללכידת תמונות IR.
Q10: כיצד נוכל לבנות מנורות IR כדי לשפר את נראות ה- IR?
A10: בעקבות תרשים מעגלים וחישוב ערכי התנגדות עבור נוריות LED, אנו יכולים לבנות מנורות IR כדי לשפר את נראות ה- IR.
סיכום
במאמר זה בדקתי כיצד ניתן לשנות את מיקרוסופט קינקט כדי לתפקד כמצלמה אינפרא אדום. עם השינויים והתוספות הנכונים, ה- Kinect יכול לתפוס תמונות אינפרא אדום ולספק אפשרויות חדשות לפרויקטים שונים. פרויקט זה מאפשר לנו לרתום את הפוטנציאל של קינקט מעבר לשימושים המסורתיים שלו, ולהפגין את הרבגוניות שלו והרחבתו.
באמצעות קינקט כמצלמה אינפרא אדום
בורנשטיין, גרג, גורם לדברים לראות, O’Reilly Media, Inc., 978-1-449-30707-3, ינואר 2012.
האם קינקט משתמש באינפרא אדום
Б эой сранице
Ы зé. С помדיר. Почем эо мого?
Эа сраница о бображае тех сах, кога воматеשיים си сисלוח рmе рגות р רבות ш רבות р р рוהים р рוהים которые нé. Сраница пересанет ообрוחים. До эого момента д.
Исочником запросов может сmжж вредоносfte по, подаееые моди базלוח нилm mчnзnзnчnчnчnчnчnчnчnчnчnчnчnчnчnчnчзדי ы з запросов. Еи ы иололalty ощий дדיר. O. Подробнרבה.
Проверка по сов может тelte пояяе, еи ы водите сדיר еами, или же водите запроы ченн часо.
באמצעות קינקט כמצלמה אינפרא אדום
פרויקט זה יראה כיצד ניתן לשנות את מיקרוסופט קינקט שישמש כמצלמה אינפרא אדום (IR).
- הזמן הנדרש: 2-3 שעות
- הדפיס פרויקט זה
מאת דיימון קונובר
דיימון קונובר
ה- Kinect הוא היקפי עבור קונסולת Xbox 360 המאפשרת למשתמש לקיים אינטראקציה עם ה- Xbox 360 מבלי לגעת בבקר. תיאור כללי של הקינקט הוא שמדובר במצלמה עומקת. המשמעות היא שאתה יכול למקם חפצים לפניו, והוא יחשב את המרחק ממנו לאובייקטים, ובכך יוצר תמונה עומק. לפיכך, הקינקט יכול לספק את מיקומי האובייקטים בתמונה ביחס לעצמו, וניתן להשתמש במידע זה במגוון פרויקטים. כמו כן, הקינקט מכיל רכיבים רבים אשר עם שינויים קלים יכולים לשמש למטרות חדשות. כדוגמה, פרויקט זה יראה כיצד ניתן להשתמש בקינקט כמצלמה אינפרא אדום (IR).
לתיאור מפורט של אופן הפעולה של הקינקט וכיצד ניתן להשתמש בו בפרויקטים שונים, אני ממליץ לך לקרוא גורם לדברים לראות מאת גרג בורנשטיין (http: // חנות.או ‘ריילי.com/מוצר/06369200 …). התמונה בשלב 1 מציגה את רכיבי הקינקט הנחוצים להבנת פרויקט זה. מקרן ה- IR מאיר רשת של נקודות IR על האובייקטים שלפניו. איננו מסוגלים לראות את הנקודות, אך מצלמת ה- IR יכולה לגלות אותן. בעזרת דפוס הנקודות בכל אובייקט, הקינקט מסוגל לחשב את תמונת העומק. הרכיב הסופי הוא מצלמת RGB הדומה למצלמת רשת רגילה.
שלבי פרויקט
התקן את התוכנה הדרושה כדי לחבר את הקינקט למחשב שלך
עקוב אחר ההוראות הספציפיות לפלטפורמה כאן ל:
התקן מנהלי התקן Openni, Nite, חיישן ומנהג Sensorkinect
התקן ספריית SimpleOpenni לעיבוד
ודא שההתקנה הצליחה
התחל לעבד ולהפעיל את הדוגמאות של Depthimage ו- Deptherfrad.
ספק כוח לקינקט שלך וחבר אותו למחשב שלך דרך יציאת ה- USB.
עבור לקובץ → דוגמאות → ספריות שתרמו → SimpleOpenni → Openni.
לחץ פעמיים על הדוגמה שברצונך להריץ (לדוגמה, Deptherfred), ותסריט הדוגמה ייפתח.
לחץ על כפתור הפעלה ותמונה תופיע על המסך שלך. עבור התסריט העומד -פרש, תמונת עומק תהיה משמאל ותמונת IR תהיה בצד ימין, כפי שמוצג משמאל.
חסום את מקרן ה- IR
כפי שניתן לראות בשלב הקודם, תמונת ה- IR המיוצרת על ידי הסקריפט העומד -פרטרי מכילה דפוס נקודות שאנו רוצים להסיר.
לשם כך, צור כיסוי עיניים לכיסוי מקרן ה- IR.
קח שתי רצועות קלטת צינור, כל אחת יותר מ- 9 אינץ ‘, והניחו אחת כזו שהיא מעט חופפת את השנייה. ואז חזור על ידי שימוש בשתי רצועות נוספות של קלטת צינור.
קח את שתי הרצועות של קלטת צינור כפולה ורחב את הצדדים הדביקים יחד.
חותכים את הרצועה שהתקבלה לאורך 9 אינץ ‘.
הניחו רפידות velco בקצה אחד של הרצועה, עטפו את הרצועה סביב הקינקט, מכסים את מקרן ה- IR והניחו את רפידות הוולקו הנגדיות כך שהרצועה מוחזקת חזק, כפי שמוצג משמאל.
בנה את מנורות ה- IR
כעת, כאשר מקרן ה- IR נחסם, אין עוד מספיק אור IR למצלמת ה- IR כדי ליצור תמונה טובה.
לכן יש להוסיף תאורת IR חיצונית. תרשים המעגל משמאל מראה עיצוב אפשרי אחד לשתי מנורות IR.
חבר את ספק הכוח DC לשקע הכוח ומדוד את המתח שלו (VDC) באמצעות מולטימטר. לאספקת הכוח שלי, VDC = 15.6 v.
חפש את המתח הקדימה האופייני (VF) ואת הזרם המקסימלי קדימה (אם, מקסימום) של נוריות ה- LED. שלי היו VF = 1.5 v ו- if = 20 mA, בהתאמה.
חישוב ההתנגדות (r1 = r2 = r3 = r4) הנחוצה כדי להגביל את הזרם דרך כל סדרה של שש נוריות. השתמשתי בנגדים של 360 Ω. R> ((vdc – (# נוריות LED)*VF)/אם)
בנה את מנורות ה- IR (המשך)
במחצית אחת של PCB, הניחו שישה נוריות LED ונגד אחד. חוטי הלחמה המחברים בין נוריות LED, הקתודה לאנודה והנגד. חזור על המחצית השנייה של ה- PCB. ואז הלחם חוט המחבר בין האנודות החינמיות וחוט נוסף המחבר בין הקצה החופשי של הנגדים.
הלחם חוט ארוך ואדום לאנודות המחוברות וחוט שחור ארוך לנגדים המחוברים.
(אופציונלי) השתמש בסוגרו כדי להחזיק את החוטים הארוכים ל- PCB על מנת לספק הקלה במתח כל.
תקע חורים בתחתית כוס פלסטיק, האכיל את החוטים דרך החור ולחץ על ה- PCB בחוזקה לספל. אם ה- PCB אינו מתאים בחוזקה, השתמש בסוגר כדי להחזיק אותו במקום.
חזור על ארבעת השלבים הקודמים עבור המנורה השנייה.
בנה את בקר עוצמת המנורה
השתמש במחוגה כדי למדוד את גדלי החורים הנחוצים כדי להרכיב את שני הסירים, המתג, מחזיק הנתיכים ושקע הכוח.
קדחו חורים במתחם הפרויקט והעלו את החומרה. כמו כן, קדחו שני חורים קטנים לחוטים להיכנס. כשאתה מתכנן היכן למקם כל חור, זכור היכן כל חלק ישב במתחם, על מנת לוודא שהכל יתאים.
תצטרך לפתוח את החור לשקע הכוח באמצעות כלי דרמל או עם סכין.
הניחו את סוגגרו מבפנים ומחוצה למתחם כדי להחזיק את השקע במקום.
בנה את בקר עוצמת המנורה (המשך)
הפוך כל סיר למצב שיהיה ההגדרה הנמוכה ואז השתמש במולטימטר שלך’S בודק המשכיות כדי למצוא את שני הסיכות שישמשו במעגל (הבוחן יצפצף).
כמו כן, השתמש בבוחן המשכיות כדי לקבוע אילו שני סיכות על המתג מחוברים כאשר המתג למעלה ואילו מחובר כאשר המתג למטה.
חוטים קצרים של הלחמה המחברים בין החלקים בתוך המתחם, על פי דיאגרמת המעגל.
הלחמה שני חוטים ארוכים ואדומים אל הסירים ושני חוטים שחורים ארוכים למתג ואז תוקנים אותם דרך שני החורים הקטנים.
בורג על המתחם’מכסה והניח נתיך במחזיק הנתיכים.
סובב את החוטים היוצאים מהמנורות יחד עם החוטים שנכנסים לבקר (אדום-לאד-אדום, שחור לשחור), הלחמה במידת הצורך, ואז מכסים את החוטים החשופים עם קלטת חשמלית.
לעלות על הקינקט ומנורות
מקם את הקינקט על משטח, מופנה אל החפץ שאתה רוצה לדמיין.
(אופציונלי) חבר את הקינקט למחבר החצובה ואז לחצובה. חבר את החצובה לדוכן טבעת, וממקם אותו מול משטח ההדמיה.
הר את המנורות בכיוון כך שמשטח ההדמיה יואר.
(אופציונלי) חבר את המנורות לעמדת הטבעת והחזק אותן במצב עם המהדקים, הצירים והקלטת.
חבר את אספקת החשמל של קיר לשקע ואז חבר אותו לבקר עוצמת המנורה דרך שקע החשמל.
לבצע את הניסוי
קח חתיכת נייר בנייה וצייר חפץ אחד בצד שמאל ואחר בצד ימין, בעזרת עיפרון פחם.
צבע מעל האובייקט השמאלי עם הפסטל הכחול של פתלו וצבע על האובייקט הימני עם הפסטל הכחול הפרוסי.
הניחו את הנייר מול המצלמה.
עיבוד פתוח, צור סקריפטים RGB_SAVE.PDE וכן ir_save.PDE (הקוד מסופק בקוד המצורף.PDF), שנה את הקוד כך שהקבצים ושמות הנתיבים מתאימים למחשב שלך, הפעל RGB_SAVE.PDE, ואז לרוץ ir_save.PDE.
הפעל את המנורות על ידי הדפדוף המתג ואז התאם את העוצמה באמצעות הידיות על הבקר. לא תוכל לראות את אור ה- IR הנפלט על ידי נוריות ה- LED, אז השתמש בסרטון ה- IR שנלכד על ידי המצלמה כדי לקבוע את העוצמה הרצויה. תצטרך להריץ את שני הסקריפטים שוב, לאחר התאמת המנורות.
התמונה שהתקבלה, המוצגת משמאל, אמורה להציג תמונת צבע בחלק העליון וסרטון IR בתחתית. התוצאות מראות ששני הפיגמנטים נראים דומים בחלק הצבעוני של הספקטרום, אך שונים מאוד בחלק ה- IR.
לתיאור מפורט של המדע שמאחורי ניסוי זה, אני ממליץ לקרוא את העיתונים מאת Delaney et al. רשום בהפניות.
הפניות
Wiki פשוט-אופני (גישה לאחרונה ב- 20 באפריל 2012). *** הדוגמאות הכלולות בארגז הכלים מועילות במיוחד.
בורנשטיין, גרג, גורם לדברים לראות, O’Reilly Media, Inc., 978-1-449-30707-3, ינואר 2012.
ריס, קייסי ובן פריי, תחילת העבודה עם עיבוד, O’Reilly Media, Inc., 978-1-449-37980-3, יוני 2010.
בלייק, יהושע, “פריצת קינקט”, עשה :, כרך 29, 124-133, http: // makeprojects.com/wiki/29#section_… (גישה לאחרונה ב- 20 באפריל 2012).
Delaney, John K., אליזבת וולמסלי, ברברה ח ‘. Berrie, and Colin F. פלטשר, “הדמיה רב -ספקטרלית של ציורים באינפרא אדום כדי לאתר ולמפות פיגמנטים כחולים”, (Sackler Nas Colloquium) בחינה מדעית של אמנות: טכניקות מודרניות בשימור וניתוח, המשך האקדמיה הלאומית למדעים, 120-136, http: // www.תְנוּמָה.EDU/קטלוג/11413.HTML (גישה לאחרונה ב- 20 באפריל 2012), 0-309-54961-2, 2005.
Delaney, John K., ג’ייסון ז. זייבל, מתיו תורי, רוי ליטלטון, קתרין מ. מוראלס, מייקל פאלמר, ה. רנה דה לה ריי, “השתקפות גלויה ואינפרא אדום הספקטרוסקופיה של ציורים: מיפוי פיגמנט ושיפור השקף אינפרא אדום”, Q3A: אופטיקה לאמנויות, ארכיטקטורה וארכיאולוגיה II, בעריכת לוקה פזאטי ורנזו סלימבני, פרוק. של Spie Vol. 7391, 2009.
תודות
המחבר מבקש להודות לד”ר. מוריי לוו, מאוניברסיטת ג’ורג ‘וושינגטון, וד”ר. ג’ון דלייני וד”ר. ה. מלאני גפורד, מהגלריה הלאומית לאמנות, וושינגטון, ד ‘.ג., למשוב שלהם לגבי מערך הניסוי.
המחבר גם מבקש להכיר בתמיכה במלגה שקיבל מהקרן לתגמולים להישג עבור מדעני המכללות (ARCS).
סיכום
הערה: לאחר שהתקנת בהצלחה את התוכנה לחיבור הקינקט למחשב שלך, הצעדים הנדרשים היחידים להשלמת פרויקט זה הם: 1) חסום את מקרן ה- IR, 2) לבנות ולהרכיב מקור תאורה IR החלפה (עם אורך גל מרכזי קרוב ל 830 ננומטר), ו -3) ניסוי. פרטי המנגנון והניסוי שלי ניתנים, אך אני ממליץ לך לשנות את הפרטים על פי החלקים והציוד שיש לך זמין ומבוסס על הדברים שאתה רוצה לדמיין. בניין שמח!
כיצד פועלת איתור תנועה ב- Xbox Kinect
האב -טיפוס למיקרוסופט’S kinect מצלמה ומיקרופון מפורסמים עלו 30,000 $. בחצות יום חמישי בבוקר, אתה’אני יוכל לקנות אותו ב -150 דולר כ- Xbox 360 היקפי. מיקרוסופט מקרינה שהיא תמכור 5 מיליון יחידות בין עכשיו לחג המולד. אָנוּ’ל- LL יש פרטים נוספים וסקירה של המערכת בקרוב, אך עבור […]
שמור סיפור
שמור סיפור
האב -טיפוס למצלמת קינקט של מיקרוסופט ומיקרופון עולה מפורסם 30,000 $. בחצות יום חמישי בבוקר, תוכלו לקנות אותו ב -150 דולר כ- Xbox 360 היקפי.
מיקרוסופט מקרינה שהיא תמכור 5 מיליון יחידות בין עכשיו לחג המולד. יהיה לנו פרטים נוספים וביקורת על המערכת בקרוב, אך לעת עתה כדאי לקחת קצת זמן לחשוב איך הכל עובד.
מַצלֵמָה
המצלמה של קינקט מופעלת על ידי חומרה ותוכנה כאחד. וזה עושה שני דברים: ליצור תמונה תלת מימדית (מרגשת) של האובייקטים בשדה הראיה שלה, ולהכיר (נעים) בני אדם בין אותם חפצים.
תוכנות תוכנה ישנות השתמשו בהבדלים בצבע ובמרקם כדי להבדיל בין אובייקטים מהרקע שלהן. Primesense, החברה שהטכנולוגיה שלה סמכות את קינקט, והרכישה האחרונה של מיקרוסופט Canesta משתמשת במודל אחר. המצלמה משדרת אור כמעט אינפרא אדום בלתי נראה ומודדת את “זמן הטיסה” שלה לאחר שהיא משקפת את החפצים.
זמן טיסה עובד כמו סונאר: אם אתה יודע כמה זמן לוקח האור לחזור, אתה יודע כמה רחוק חפץ. הטילו שדה גדול, עם המון פינגים שהולכים קדימה ואחורה במהירות האור, ותוכלו לדעת כמה רחוק הרבה חפצים.
באמצעות גנרטור אינפרא אדום פותר גם חלקית את בעיית האור הסביבה. מכיוון שהחיישן לא נועד לרשום אור גלוי, הוא לא מקבל כל כך הרבה חיובי שווא.
Primesense ו- Kinect עוברים צעד אחד קדימה ומקודדים מידע באור ה- IR כמעט. כאשר מידע זה מוחזר, חלקו מעוות-מה שבתורו יכול לעזור לייצר תמונה עדינה יותר של מרקם התלת-ממדי של אותם אובייקטים, ולא רק בעומק שלהם.
בעזרת טכנולוגיה זו, Kinect יכול להבחין בעומק האובייקטים בתוך סנטימטר אחד ואת גובהם ורוחבם בטווח של 3 מ”מ.
בקר משחקי וידאו מסורתי הוא אינדיבידואלי וסדרתי: זה אני וכל מה שאני שולט על המסך לעומתך ועל מה שאתה שולט. אנו עשויים לשחק בשיתוף פעולה, אך אנו בעצם ישויות נפרדות מבודדות זו מזו, תוך מניפולציה של חפצים בידינו.
בקר משחקי וידאו הוא גם מכשיר מיוחד ביותר. זה עשוי לעשות עבודה קלה כשלט רחוק, אבל הכפתורים, D-Pads, Jewsticks, Accelerometers, Gyroscopes, מנגנוני משוב של האפטי וממשק עם הקונסולה נועדו לתקשר סוגים מאוד ספציפיים של מידע מאוד ספציפי.
Kinect הוא משהו שונה. זה קהילתי, רציף וכללי: ממשק משתמש טבעי (או NUI) למולטימדיה, ולא GUI למשחקים.
אבל דרוש הרבה טכנולוגיה כדי לגרום לממשק כזה שמתכנסת בצורה חלקה ו”אופן טבעי.”
Kinect 2 ידיים במעבדות
מעבדה 2: הצגת נתוני אינפרא אדום
זמן מוערך להשלים: 20 דקות
מעבדה זו היא חלק מסדרת ידיים במעבדות המלמדות אותך כיצד ליצור Windows 8.1 חנות יישום, תוך שימוש כמעט בכל תכונה זמינה ב- Kinect 2. זו המעבדה השנייה בסדרה. במעבדה זו תלמד כיצד לאחזר את הזנת האינפרא אדום מחיישן Kinect, וכיצד להציג את ההזנה ב- XAML כתמונה.
- כיצד לפתוח את קורא המסגרת האינפרא אדום על חיישן Kinect בקוד.
- כיצד לקבל את מסגרת האינפרא אדום כשהוא מוכן.
- כיצד להמיר את נתוני המסגרת האינפרא אדום למפת סיביות מונוכרומית
- כיצד להציג את מפת הסיביות המשתנה ל- XAML.
- כיצד להשיג ולהציג נתונים על המצב והרזולוציה של ה- Kinect 2.
תרגיל 1 – הצגת מסגרת האינפרא אדום
- פתח את הקיים מדגם Kinect 2 פיתרון ב- Visual Studio, או בעותק שיש לך מסוף המעבדה הקודמת.
- ראשית תפתח את קורא מסגרת אינפרא אדום על מנת לאחזר נתונים אינפרא אדום מחיישן Kinect. פתח את ה עמוד ראשי.XAML.CS קובץ מה- סייר פתרונות. הקוד שאתה כותב יגדיר את העדכון, האירועים והנתונים של האינפרא אדום, לפני שתפתח את חיישן Kinect. כאשר הקינקט מתחיל לספק מסגרות, יש לך משהו שמקבל את הקלט. כדי להסביר את הקוד הבא כאן הוא תיאור של המשתנים החשובים:
- אינפרא אדום פרמראדר – קורא למסגרות אינפרא אדום
- אינפרא אדום פרמדאטה – אחסון ביניים לקבלת נתוני מסגרת מהחיישן
- אינפרא אדום -פיקסל – אחסון ביניים לנתוני מסגרת שהומרו לפיקסלים צבעוניים לתצוגה
- מפת סיביות – WratibleBitmap שיחליף את תוכן התמונה ב- XAML
מסגרת חדשה מתקבלת מקורא המסגרת כאשר היא מוכנה, בדרך כלל בערך 30 פריימים בשנייה. כל מסגרת מגיעה כנתוני אינפרא אדום לכל פיקסל ברזולוציית המצלמה. נתונים אלה מומרים לטווח צבעוני אפור, באינפראדרפיקסלים. ואז ה- infraradpixels משמשים לכתיבה לאובייקט מפת סיביות.
יש לאתחל את כל המשתנים הללו עם הגודל המתאים, שהוא גודל המסגרת האינפרא אדום המגיע מה- Kinect 2.
כדי לאתחל משתנים אלה כראוי, העתק את הקוד המודגש למטה:
// . מרחבי שמות אחריםבאמצעות Windows.UI.XAML.כְּלֵי תִקְשׁוֹרֶת.הַדמָיָה;מרחב שמות kinect2sample < public sealed partial class MainPage : Page < // Size of the RGB pixel in the bitmapפרטי const int bytesperpixel = 4;kinectsensor פרטי kinectsensor = null;פרטי WriteableBitMap bitmap = null;// מסגרת אינפרא אדוםinfraredframereader פרטי infraredframereader = null;ushort פרטי [] infraredframedata = null;בתים פרטיים [] infraredpixels = null;Public Mainpage () < // one sensor is currently supported this.kinectSensor = KinectSensor.GetDefault(); // get the infraredFrameDescription from the // InfraredFrameSourceFramedescription InfraredFramedescript =זֶה.Kinectsensor.אינפרא אדום -מסור.תיאור מסגרת;// פתח את הקורא למסגרות האינפרא אדוםזֶה.infraredframereader =זֶה.Kinectsensor.אינפרא אדום -מסור.OpenReader ();// מטפל תיל להגעת מסגרתזֶה.אינפרא אדום פרמראדר.Framearrive +=זֶה.Reader_InfraredFramearribed;// להקצות שטח כדי להציב את הפיקסלים // שהתקבלו והוסבוזֶה.infraredframedata =USHORT חדש [InfraredFramedescript.רוחב *תיאור אינפרא אדום.גוֹבַה];זֶה.infraredpixels =בתים חדשים [אינפרא אדום כתובת.רוחב *תיאור אינפרא אדום.גובה * bytesperpixel];// צור את מפת הסיביות לתצוגהזֶה.מפת סיביות =New WriteableBitmap (infraredframedescript.רוֹחַב,תיאור אינפרא אדום.גוֹבַה);// פתח את החיישן זה.Kinectsensor.לִפְתוֹחַ(); זֶה.InitializeComponent (); >>>
דף מיינון חלקי אטום אטום ציבורי: עמוד < // .reader reader_infraredframearrived פרטי (שולח אובייקטים,Infraredframearriveventargs e)<bool infraredframeprocessed = false;// infraredframe הוא idisposableשימוש (infraredframe infraredframe =ה.מסגרות.Accireframe ())אם (infraredframe != null)<Framedescription InfraredFramedescript =אינפרא אדום.תיאור מסגרת;// אמת נתונים וכתוב את נתוני מסגרת האינפרא אדום החדשים // למפת הסיביות לתצוגהאם (((infraredframedescript.רוחב *תיאור אינפרא אדום.גוֹבַה)== זה.אינפרא אדום פרמדאטה.אורך) &&(InfraredFramedescription.רוחב ==זֶה.מפת סיביות.Pixelwidth) &&(InfraredFramedescription.גובה ==זֶה.מפת סיביות.Pixelheight))// העתק את נתוני הפיקסלים מהתמונה למערך זמני //אינפרא אדום.CopyframedatatatoArray (זֶה.אינפרא אדום פרמדיאטא);infraredframeprocessed = true;>>>// קיבלנו מסגרת, המרה ומגבירהאם (infraredframeprocebled)ConvertinFraredDatoPixels ();Renderpixelarray (זה.InfraredPixels);>>>
דף מיינון חלקי אטום אטום ציבורי: עמוד </// & ltsummary & gt/// הערך הגבוה ביותר שניתן להחזיר במסגרת האינפרא אדום./// זה מושלך לצוף לקריאות בקוד ההדמיה./// & lt/סיכום & gtפרטי const צף infraredsourcevaluemaximum =(צף).ערך מקסימלי;/// & lt/סיכום & gt/// משמש להגדרת הגבול התחתון, עיבוד פוסט, של/// נתוני אינפרא אדום שנעשה./// הגדלה או ירידה של ערך זה מגדירה בהירות/// "קיר" קרוב יותר או רחוק יותר./// & lt/סיכום & gtconst פרטי צף infrareDoutputValueMinimum = 0.01f;/// & ltsummary & gt/// הגבול העליון, עיבוד פוסט, של/// נתוני אינפרא אדום שיובילו./// & lt/סיכום & gtconst פרטי צף infraredOutputValueMaximum = 1.0F;/// & ltsummary & gt/// infraredscenevalueaverage מציין את/// ערך אינפרא אדום ממוצע של הסצנה./// ערך זה נבחר על ידי ניתוח הממוצע/// עוצמת פיקסל לסצנה נתונה./// ניתן לחשב זאת בזמן ריצה כדי להתמודד עם שונה/// IR תנאי סצנה (בחוץ לעומת בפנים)./// & lt/סיכום & gtפרטי const צף infraredscenevalueaverage = 0.08F;/// & ltsummary & gt/// infraredscenestandarddeviations מציין/// מספר סטיות התקן לחלות עליה/// infraredscenevalueaverage./// ערך זה נבחר על ידי ניתוח נתונים מסצנה נתונה./// ניתן לחשב זאת בזמן ריצה כדי להתמודד עם שונה/// IR תנאי סצנה (בחוץ לעומת בפנים)./// & lt/סיכום & gtפרטי const צף infraredscenestandarddeviations = 3.0F;//. משתנים פרטיים אחרים עוקבים אחרי>
דף מיינון חלקי אטום אטום ציבורי: עמוד < // Reader_InfraredFrameArrived() before this.חלל פרטי המרת פרפרדאטופיקסלים ()<// להמיר את האינפרא אדום ל- RGBint colorpixelindex = 0;עבור (int i = 0; i < this.infraredFrameData.Length; ++i)// נורמליזציה של נתוני האינפרא אדום הנכנסים (USHORT) ל// צף שנע בין infraredOutputvalueminimum// ל- infraredOutputValueMaximum] על ידי// 1. חלוקת הערך הנכנס על ידי// מקור ערך מקסימליfloat intemanteratio = (צף) זה.infraredframedata [i] /Infraredsourcevaluemaximum;// 2. חלוקת על ידי// (ערך סצנה ממוצע * סטיות תקן)PITENTYRATIO /=Infraredscenevalueaverage * infraredscenestandarddivations;// 3. הגבלת הערך ל- infraredoutputvaluemaximumPITENTYRATIO = מתמטיקה.דקות (infraredOutputValueMaximum,IntectionRatio);// 4. הגבלת הערך הנמוך יותר infraredoutputvalueminimumPITENTYRATIO = מתמטיקה.מקסימום (infraredoutputvalueminimum,IntectionRatio);// 5. המרת הערך הנורמלי לביט ושימוש// התוצאה כרכיבי RGB הנדרשים על ידי התמונהעוצמת בתים = (בייט) (IntinectionRatio * 255.0f);זֶה.infraredpixels [colorpixelindex ++] = עוצמה; //כְּחוֹלזֶה.infraredpixels [colorpixelindex ++] = עוצמה; //ירוקזֶה.infraredpixels [colorpixelindex ++] = עוצמה; //אָדוֹםזֶה.infraredpixels [colorpixelindex ++] = 255; // אלפא>>>
דף מיינון חלקי אטום אטום ציבורי: עמוד <// המיר.חלל פרטי renderpixelarray (בייט [] פיקסלים)פיקסלים.Copyto (זה.מפת סיביות.Pixelbuffer);זֶה.מפת סיביות.לִפְסוֹל();FramedisplayImage.מקור = זה.מפת סיביות;>>
& ltgrid רקע = "" & gt& ltgrid margin = "30" & gt& ltgrid.Rowdefinitions & gt& ltrowdefinition גובה = "70"/& gt& ltrowdefinition גובה = "*"/& gt& ltrowdefinition גובה = "100"/& gt& LT/Grid.RowDefinitions>& LttextBlock Grid.Row = "0"Style = ""Text = "kinect עבור Windows 2"/>& Littige x: name = "framedisplayimage".שורה = "1"STREAT = "מדים"/>& LT/Grid>& LT/Grid>
בשביל הכיף, נסה לכבות את האורות. אור אינפרא אדום בלתי נראה לבני אדם ולכן המצלמה עובדת אפילו בחושך מוחלט, זה הבסיס לאופן שבו ראיית הלילה פועלת.
מעבדה 2: הצגת נתוני אינפרא אדום
תרגיל זה יראה לך כיצד להציג נתוני ניפוי באגים שימושיים על מסגרת האינפרא אדום הנוכחית וגם על הסטטוס הנוכחי של הקינקט. תרגיל זה יסייע לך בפתרון בעיות כל בעיה עם הקינקט בהמשך, וכדי להדגיש את ההבדל ברזולוציה בין מסגרות בתרגילים הבאים.
כדי לאחזר ולהציג נתוני מסגרת מ- Kinect 2, בצע את הצעדים שלהלן:
- ראשית, יתכן ששמת לב שה- מְעַצֵב בעת צפייה ב- XAML אינה זמינה בבניית ארכיטקטורות X64. זֶה’S בסדר מכיוון ש- Kinect 2 תואם גם את ארכיטקטורת X86, שתוכלו לעבור אליו כעת:
- נְקִישָׁה לִבנוֹת לאחר מכן מנהל תצורה… כדי לפתוח את מנהל התצורה.
- לחץ על התיבה הנפתחת מתחת פיתרון פעיל פלטפורמה: ובחר x86.
- נְקִישָׁה סגור.
- כעת פתחו את מאפייני הפרויקט על ידי לחיצה ימנית על פרויקט kinect2sample בסייר הפתרונות, ואז לחיצה על נכסים.
- לחץ על לִבנוֹת כרטיסייה משמאל, ואז לצד פּלַטפוֹרמָה: בחר x86 מהנפתח.
- נְקִישָׁה קוֹבֶץ, לאחר מכן שמור הכל או להכות Ctrl + Shift + S כדי לשמור את כל הקבצים.
- לבנות ולרוץ היישום לבדיקת שגיאות.
- הדברים שעליכם להתמקד בהם הם סטטוס הקינקט (אם זה מגיב או לא) וה- הרזולוציה הנוכחית של המסגרת (וזה מעניין עכשיו, ובהמשך כאשר המעבדה משנה את סוג המסגרת). זה מספיק קל להכניס את הערכים האלה לקוד מאחור. כדי לאפשר ל- XAML להיקשר לערכי הסטטוס, אם הם ישתנו, עליך ליישם את Inotifypropertychanged ממשק ב עמוד ראשי מעמד. ואז הקוד יפטר את האירוע שהשתנה בנכס כאשר הסטטוס ישתנה, וכאשר תיאור המסגרת משתנה. כדי להגדיר זאת, העתק תחילה את הקוד המודגש הבא בסעיפים הרלוונטיים של עמוד ראשי כיתה לאתחל ולהשתמש במאפיינים הניתנים לשינוי:
באמצעות מערכת.רכיב מודל;מרחב שמות kinect2sample < public sealed partial class MainPage : Page, Inotifypropertychanged< // . consts and other private variables. private KinectSensor kinectSensor = null;מחרוזת פרטית statustext = null;פרטי WriteableBitMap bitmap = null;כתב פרטי פרטי CurrentFramedescript;// משתני מסגרת אינפרא אדום.אירוע ציבורי PropertyChangedEventHandler PropertyChanged;מחרוזת ציבורית statustextלקבלמַעֲרֶכֶתאם זה.Statustext != ערך)זֶה.statustext = ערך;אם זה.נכסים != null)זֶה.PropertyChanged (זה, חדשPropertyChangedEventArgs ("StatusText"));>>>>תיאור ציבורי ציבורי CurrentFramedescriptלקבלמַעֲרֶכֶתאם זה. CurrentFramedescript!= ערך)זֶה. CurrentFramedEsscript = ערך;אם זה.נכסים != null)זֶה.PropertyChanged (זה, חדשPropertyChangedEventArgs ("CurrentFramedescription"));>>>>// . >>Public Mainpage () < // . // create the bitmap to display this.bitmap = new WriteableBitmap(infraredFrameDescription.Width, infraredFrameDescription.Height);
זֶה.CurrentFramedEsscript = infraredframedescript;// הגדר את Notifier EventabalChangedזֶה.Kinectsensor.IsavailableChanged +=זֶה.Sensor_isavailableChanged;// השתמש באובייקט החלון כמודל התצוגה בדוגמה זוזֶה.Datacontext = זה;// פתח את החיישן זה.Kinectsensor.לִפְתוֹחַ(); זֶה.InitializeComponent (); >חיישן חלל פרטי_סוואלבלאנג '(שולח KinectSensor,Isavailablechangedeventargs args)זֶה.Statustext = זה.Kinectsensor.זמין ?"ריצה": "לא זמין";>& LttextBlock Grid.Row = "0" style = "" text = "kinect עבור Windows 2"/& gt
& Ltstackpanel Grid.Row = "0" אוריינטציה = "אופקי"HorizontalAlignment = "מימין"Verticalalignment = "תחתון" & gt& lttextblock text = "סטטוס kinect:"/& gt& lttextblock text = ""/& gt& lttextblock text = ", framewidth"/& gt& lttextblock text = ", frameheight"/& gt& LT/StackPanel & GT& Littige x: name = "framedisplayimage".שורה = "1" מתיחה = "אחיד"/& gtנסה לנתק את הקינקט ולראות את שינוי הסטטוס. ואז אם תחבר את הקינקט פנימה, הסטטוס יתעדכן וההזנה תחזור.
סיכום
מעבדה זו לימדה אותך איך אחזר והשתמש במסגרת אינפרא אדום ממכשיר Kinect 2, ו השתמש בנתוני המסגרת האלה כדי ליצור מפת סיביות גלויה להיות מוצג ב- XAML.
מעניין לציין שרוב התהליך הזה הוא ידני. הנתונים מה- אינפרא אדום אינו שמיש עד שזה’s הומר למפת סיביות. זהו תכנון לוואי מכיוון שיש שימושים רבים באור אינפרא אדום מעבר להמרתו לתמונה גלויה. ה- Kinect 2 משתמש במצלמת האינפרא אדום כדי לחשב גופות וצורות ידועות בתנאי אור נמוכים. לכן הרזולוציה של מסגרת האינפרא אדמה כל כך נמוכה: זה תואם את הרזולוציה שנראתה על ידי המסגרת העומדת לחשב את מה שיש ו- ISN’לא אדם.
במעבדה הבאה תראה את ההבדל ברזולוציה בין ColorFrame ל- InfraredFrame עכשיו לאחר שהצגת את נתוני המסגרת ב- XAML.
יש קוד זמין שהוא פיתרון הקוד שהושלם של העבודה במעבדה זו. המעבדה הבאה תתחיל מקוד זה.