"הרשו לי לפנות את הבמה בפוסט הזה פעם נוספת לטובת אריאל רובננקו, אשר התארח בבלוג הזה בעבר. אריאל עובד יחד עמי בחברת סיסטמטיקס ומתמחה בכלי 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?
הייתי צריך דברים מסוג זה במשרה הקודמת שלי ולא הכרתי SURF ואת Computer Vision System Toolbox (הוא די חדש אז לא מפתיע).
השבמחקתודה, תמשיכו לפרסם פוסטים מעניינים.
שלום לכולם,
השבמחקגם אני לא הכרתי את כל הכלים ושמחתי להשתמש בהם,
אני מבצע רגיסטרציה לתמונת IR ותמונה ממצלמה רגילה.
האם מישהו ממימש רגיסטרציה דומה בשיטת התאמת בלוקים?
ובכך להימנע ממציאת נקודות עניין ידנית(שימוש ב cpselect)?