ראשי חלון וירטואלי

טופס התחברות



חלון וירטואלי: עיבוד תמונה, מצלמות רשת ומנועי סרוו

חלון וירטואלי

בימים האחרונים אני עובד על פרויקט קצרצר שיוצג בכנס שבו אני עתיד להשתתף. הפרויקט מראה כיצד ניתן לשלב תוכנה ומספר רכיבי חומרה כדי להשיג אפקט של חלון וירטואלי -- חלון שמורכב ממסך מחשב ותוכנו משתנה בהתאם למיקום המביט ומרחקו מהחלון.

התחלתי לעבוד על הפרויקט היום, ואני צופה שהוא יסתיים אחרי סוכות. אני אעדכן את העמוד בכל התקדמות.

חלון ווירטואלי
לא חלון רגיל - מסכי מחשב :)
איך זה אמור לעבוד? ישנם שלושה חלקים עיקריים:
  1. מציאת מיקום הצופה, ומרחקו מהחלון
  2. שליחת הנתונים למצלמה נעה שנמצאת מחוץ לבית, ומהווה את תוכן החלון
  3. שינוי תוכן החלון בהתאם למיקום הצופה
נשמע פשוט? אז זהו, שלא כל כך.

מציאת מיקום הצופה

מציאת מיקום הצופה ביחס לחלון היא לא פעולה פשוטה. ישנן שלוש שיטות שונות בהן אני הולך להשתמש, לכל אחת יתרונות וחסרונות מסויימים.

השיטה הראשונה - Head Tracking (מעקב מיקום ראש) באמצעות עיבוד תמונה

בשיטה זו מוצבת מצלמת ווידאו קטנה מתחת למיקום החלון, ומצלמת את חלל החדר. התמונה מועברת למחשב ומיקום הצופה מחושב באמצעות שרשרת של אלגוריתמים של עיבוד תמונה. כתבתי קוד די יעיל ב-#C שלוכד תמונות מהמצלמה ומבצע שרשרת של עיבודים עד למציאת מיקום הפנים. את התהליך ניתן לראות בתמונות הבאות:

 

 

התמונה המקורית מהמצלמה

התמונה המקורית מהמצלמה

 

 

התמונה לאחר מעבר לגווני אפור, ווהעברת פילטרי פיקסלציה

התמונה אחרי המרה לגווני אפור והרצת פילטרי Erosion ופיקסלציה

 

ההפרש בין התמונה הנוכחית לקודמת

ההפרש בין התמונה הנוכחית לקודמת. זהו בעצם השוני בין התמונות - התנועההקלה של הראש שבוצעה.

 

פילטר סף

הרצה של פילטר סף (Threshold) על התמונה הקודמת מראה את האיזורים שהשתנו

 

Edge Detection

מציאת קצוות האיזורים שהשתנו. ניתן ממש לראות איזורים סגורים של שינוי.

עקרונית יכולתי להפסיק כאן, אבל כדי שזה יהיה קצת יותר אלגנטי, הוספתי קוד נוסף שמוצא את השטח המקסימלי שהשתנה ומקיף אותו בריבוע.

Head Tracking

לאחר הרצת כל הפילטרים הנ"ל, הריבוע מצוייר על התמונה המקורית.

 

(אני אשתדל להעלות סרטון של הכל ביחד, זה נראה הרבה יותר שווה Live :)

 

השיטה השנייה - איכון (טרינגולציה) של לדים אינפרה-אדומים ע"י מצלמה עם פילטר אינפרה-אדום

משקפיים עם לדים אינפרה אדומים

בשיטה הזו הצופה עונד משקפים (הם יכולים להיות ללא זכוכית אלא רק המסגרת), ובצידי המסגרת ממוקמים לדים אינפרה-אדומים. כדי שהמצלמה תוכל להבחין בקלות במיקום הלדים ללא צורך בעיבוד תמונה מתקדם שהוא מסובך ואיטי יחסית, מולבש על המצלמה פילטר אינפרה אדום. זה אומר שהאור היחיד שהמצלמה תראה הוא אור אינפרה-אדום - האור שמאיר מקצוות המשקפיים שעונד הצופה.

מכאן בעזרת חישובים מתמטיים ניתן למצוא את המיקום המדוייק של הצופה לעומת המסך.

 

 

 

השיטה השלישית - שימוש בשלט WII

 

 

תגובות
הוסף תגובה
אורח  - אשמח מאוד אם תוסיף את הקוד שרשמת לעיבוד התמונה.   |2008-10-28 07:39:58
וחשבתי שתבנה הכל ללא עזרת מחשב אלא עם מיקרו בקר בלבד :O
הוסף תגובה
שם:
דואל:
 
כותרת:

!joomlacomment 4.0 Copyright (C) 2009 Compojoom.com . All rights reserved."

עדכון אחרון: חמישי, 15 יולי 2010 22:38