‏הצגת רשומות עם תוויות Mapping. הצג את כל הרשומות
‏הצגת רשומות עם תוויות Mapping. הצג את כל הרשומות

יום שישי, 4 באפריל 2014

מנהל מוצרי עיבוד התמונה והראיה הממוחשבת של חברת MathWorks ביקר בישראל

ברוס טננבאום, מנהל מוצרי עיבוד התמונה והראיה הממוחשבת של חברת MathWorks, ביקר בישראל בתחילת החודש לרגל כנס הראיה הממוחשבת הישראלי השנתי IMVC שמתקיים זו השנה החמישית ברציפות. במסגרת הכנס הרצה טננבאום בפני מאות מהנדסים וחוקרים על "המעבר ממחקר בתחומים עיבוד תמונה וראיה ממוחשבת, למימושים בעולם האמיתי".
טננבאום במהלך הרצאתו בכנס IMVC, לחצו להגדלה
פרט להרצאתו בכנס, קיים טננבאום 8 פגישות עם עשרות משתמשים שונים של כלי MathWorks בארץ, מחברות מובילות מהשוק הרפואי, הביטחוני והאלקטרוני. בפגישות הדגים האמריקאי את היכולות החדשות של כלי עיבוד התמונה והראיה הממוחשבת של חברת MathWorks, ושמע את הדרישות השונות של הלקוחות הישראלים ליכולות נוספות שהיו רוצים לראות בכלים.

בין הדוגמאות שהציג טננבאום במהלך ביקורו ניתן למנות דוגמה לזיהוי תווים (OCR), דוגמה לרגיסטרציה של תמונת IR עם תמונה הנרכשת ממצלמת אינטרנט פשוטה (Intensity-Based Registration), דוגמה לגילוי אוטומטי של פנים (אלגוריתם Viola-Jones) ועקיבה אחריהם (בשיטת (KLT, דוגמה ליכולת להאיץ אלגוריתמי עיבוד תמונה וראיה ממוחשבת באמצעות שימוש בכרטיס המסך (GPU) או באמצעות המרה אוטומטית שלהם לקוד C (בעזרת MATLAB Coder, יכולת אשר שופרה משמעותית בגרסת R2014a), דוגמה לשימוש בפיצ'רים לצורך מציאת אובייקט בתמונה, דוגמה לשערוך פרמטרים אינטרינזים ואקסטרינזים של מצלמה (Camera Calibration), דוגמה לביצוע סגמנטציה של תמונה תוך שימוש בשיטת Active Contours, ודוגמה לזיהוי מחוות.

בדוגמת זיהוי המחוות, יצר האמריקאי skeleton בסביבת MATLAB בזמן אמת, תוך שימוש במערכת חישת-התנועה Kinect (המבוססת על טכנולוגיה של חברת פריים-סנס הישראלית , שנרכשה לאחרונה על ידי חברת Apple). על סמך ה-skeleton מצא האלגוריתם את ידו של המצולם, ותוך שימוש בפעולות מורפולוגיות ו-Blob Analysis – הצליח לקבוע האם האדם מסמן בידו "אבן", "נייר" או "מספרים". בתמונה למטה ניתן לראות את טננבאום מדגים את האלגוריתם בזמן אמת – המצולם מסמן "מספרים", בחלון התצוגה השמאלי מסומן בירוק מרכז הכובד של היד ומסומנות באדום שתי האצבעות אשר זוהו, ובחלון התצוגה הימני מוצגת התמונה הנרכשת בזמן אמת, ועליה ה-skeleton (באדום), אזור היד (ריבוע צהוב), וחיווי המעיד על כך שהאלגוריתם גילה שהאדם בחר ב"מספרים" (scissors). 
טננבאום מדגים זיהוי מחוות, לחצו להגדלה
"זה היה הביקור הראשון שלי בישראל, והוא היה מוצלח במיוחד", סיכם ברוס טננבאום את השבוע העמוס שעבר, "אני בטוח שבמהלך השבוע הזה נחשפו עוד ועוד אנשים ליכולות המתקדמות של כלי MathWorks בתחומים רכישת תמונה (Image Acquisition), עיבוד תמונה (Image Processing), ראיה ממוחשבת (Computer Vision System Toolbox), המרה אוטומטית של קוד MATLAB לקוד C (MATLAB Coder), האצת ביצועי אלגוריתמים (Parallel Computing Toolbox), ניתוח והצגת מידע גיאוגרפי (Mapping Toolbox) וכו'. גם אני למדתי המון על צרכי השוק הישראלי, ואני מאמין שהדרישות השונות שהועלו יקבלו מענה בגרסאות הקרובות של כלי MathWorks. התרשמתי מאוד מהרמה המקצועית של האנשים עימם נפגשתי ומהדברים שאותם הם מפתחים, ואני כבר מצפה לביקור הבא שלי בישראל".
כל הדוגמאות בהן עשה טננבאום שימוש נמצאות ברשותי, במידה ותרצו לקבל אותן או שאגיע על מנת להציגן אצלכם, אנא כתבו לי ל-  royf@systematics.co.il

יום ראשון, 3 ביוני 2012

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


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

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

תמונה 1.  חלק מיכולות ה- Mapping Toolbox (מימין לשמאל – הצגה תלת מימדית של מפת גובה, מפה רב שכבתית, מציאת קו ראיה ושטח כיסוי)

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

החלק המורכב והקשה ביותר בתהליך המתואר לעיל הינו מציאת נקודות תואמות בתמונה ובמפה. ניתן לבצע זאת באופן ידני על ידי התבוננות וסימון נקודות זהות בתמונה ובמפה כפי שמודגם בדוגמה המגיעה עם הכלי (Georeferencing an Image to an Orthotile Base Layer), המשתמשת בפקודה cpselect מתוך ה- Image Processing Toolbox.


תמונה 2. מציאת נקודות עניין זהות באופן ידני על ידי שימוש ב cpselect
(התמונה משמאל, המפה מימין)


 
למרות שהתוצאות באמצעות השיטה הידנית מצויינות, השיטה אינה עומדת במבחן התרחיש המציאותי בו מתקבל סרט וידיאו בקצב גבוה ויש לבצע רגיסטרציה אוטומטית ללא מגע אדם. במקרה זה רצוי להפעיל אלגוריתמים אוטומטיים של ראיה ממוחשבת למציאת נקודות עניין, ואחת מהשיטות בקטגוריה זו היא להשתמש באלגוריתם SIFT (scale invariant feature transform). אלגוריתם זה עובד בשיטה של "טשטוש" התמונה בסקלות שונות ומציאת סקלת הטשטוש והמיקום בתמונה בהם העצם עובר טשטוש לכדי כתם יחיד עם עוצמה ההולכת ודועכת ממרכזו. לדוגמה, במבט מקרוב על כדור הארץ ניתן להבחין בפרטים כמו יבשות, הרים וימים, אך אם נטשטש את התמונה בשלבים לבסוף נקבל כתמים חומים באזורי היבשה וכתמים כחולים באזורי הים. מרכזו של כל כתם חום יהיה מרכז של יבשת (שהוא בעצם מרכז נקודת העניין) ואילו המעגל התוחם את הכתם יגדיר סקלה של גודל הכתם (תחום העניין). כדי לתאר את "אופיה" של כל נקודת עניין מחלקים את תחום העניין לרשת של 4x4 ומחשבים היסטוגרמות של גרדיאנטים עבור כל נקודה ברשת, כך שעבור כל נקודת עניין מתקבל תאור הכולל את מיקומה, תחום העניין שסביבה (סקלה) ותיאור (descriptor) בן 128 נתונים המתאר את פילוג הגרדיאנטים בתוך תחום העניין.

בגרסת R2011a של כלי MathWorks הצטרף כלי לביצוע משימות ראיה ממוחשבת
(Computer Vision System Toolbox), הכולל את אלגוריתם ה- SURF (speeded-up robust feature), שהינו אלגוריתם מהיר ושימושי יותר מאלגוריתם ה- SIFT. העבודה עם האלגוריתם מודגמת בקובץ mapReg_RANSAC.m, הניתן להורדה מכאן, והמוסבר להלן:


1) בשלב הראשון מתבצעת מציאה של נקודות עניין ותחומי עניין הן במפה והן בתמונה

תמונה 3. נקודות עניין + תחומי עניין בתמונה (למעלה) ובמפה (למטה). מרכזי המעגלים הם נקודות העניין והמעגלים עצמם הם תחומי העניין

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

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

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

תמונה 4. נקודות עניין זהות בתמונה (למעלה) ובמפה (למטה)

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

תמונה 5. הטלה של התמונה על המפה


לאילו תמונות אתם מבצעים רגיסטרציה? האם הכרתם את ה-Mapping Toolbox לפני הפוסט הזה? ומה לגבי אלגוריתמי SURF ו-SIFT? האם השתמשתם בעבר בפקודת cpselect? האם ידעתם שקיים מימוש של אלגוריתם ה-SURF בתוך ה-Computer Vision System Toolbox?