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

יום חמישי, 9 במאי 2013

R2013a מחכה לכם !


בחודש מרץ שוחררה גרסה חדשה של כלי MathWorks, ראשונה מאז השקת MATLAB 8 ו-Simulink 8, והיא כוללת עדכונים ל-MATLAB  ו-Simulink, שני כלים חדשים, ושדרוגים + תיקוני באגים ל-82 כלים אחרים.

בין היכולות החדשות במשפחת מוצרי MATLAB:

* MATLAB – קל יותר לכתוב ולהריץ unit tests כדי לפתח קוד רובסטי יותר (קישור לסרטון, קישור לתיעוד); שיפורי ביצועים לפונקציות fft ו-permute; פונקציות חדשות לפיצול ואיחוד סטרינגים (strsplit, strjoin); מירקור מילות חיפוש בעמודי התיעוד שמוצגים כתוצאה מהחיפוש (ניתן לבטל את המירקור על ידי לחיצה על Esc); אפשרות לבצע פעולות כמו Zoom in ושמירה לתוך קובץ מתוך עמודי תיעוד (באמצעות הלחצן הימני של העכבר); טבלת תוכן עניינים המקלה על הניווט בעמודי התיעוד (פתיחה על ידי לחיצה על Contents בפינה השמאלית העליונה).

* Image Processing Toolbox – אפשרות להמרה אוטומטית של 10 פונקציות נוספות על ידי ה-MATLAB Coder לקוד C  עבור PC; יכולת האצה של 11 פונקציות באמצעות כרטיס המסך (GPU) על ידי ה-Parallel Computing Toolbox; ביצוע סגמנטציה תוך שימוש ב-Active Contours.

* Parallel Computing Toolbox – האצה של 11 פונקציות מעולם עיבוד התמונה באמצעות כרטיס המסך (GPU); תוספת פונקציות אחרות הניתנות להאצה באמצעות ה-GPU; יכולת להפעיל קוד CUDA  מתוך פונקציות MEX במערכות הפעלה מסוג  64 ביט.

* Image Acquisition Toolbox – בכלי המאפשר הזרמת וידאו ותמונות ממגוון התקנים ישירות לתוך MATLAB ו-Simulink  נוספה תמיכה ברכישת תמונות ממערכת חישת-התנועה Kinect בסביבת Windows (קישור למידע נוסף, קישור לפוסט ישן יותר הקשור לנושא).

* Statistics Toolbox – כולל כעת את פקודות ה-SVM לסיווג בינארי (svmclassify ו- svmtrain, אשר בעבר היו חלק מה-Bioinformatics Toolbox).

* Trading Toolbox – כלי חדש המאפשר גישה לשערים של מכשירים פיננסים ושליחה אוטומטית של פקודות למערכות מסחר בזמן אמת (קישור לעמוד הכלי).

* MATLAB Distributed Computing Server – בכלי המאפשר להאיץ ביצועים של תוכניות MATLAB ומודלי Simulink על ידי אשכול מחשבים (Cluster), ענן (Cloud) או מחשוב שריגי (Grid) – התווספו workers לבעלי רישיונות לכלי (ללא תשלום נוסף). לקוחות חדשים יוכלו להינות ממחירים מוזלים על חבילות ה-workers השונות.

בין היכולות החדשות במשפחת מוצרי Simulink:

* Simulink – שדרוג יועץ הביצועים (Performance Advisor) המראה כיצד ניתן לשפר את מהירות הסימולציה; ביצועי סימולציה משופרים למקרה בו בוחרים באפשרות לחזור אחורה בזמן הסימולציה; אפשרות להחלפת סדר ה-Tab-ים בחלון המודל (ע"י גרירת Tab-ים למיקומים הרצויים); אפשרות לבצע masking לבלוק ה-MATLAB Function בצורה ישירה (אין עוד צורך להכניסו לתוך תת-מערכת); תמיכה built-in בחומרותRaspberry Pi  ו- Gumstix Overo (בנוסף לתמיכה שהיתה קיימת ב-Lego Mindstorm NXT, Beagleboard, Arduino ו-PandaBoard, חפשו כאן את החומרה שעל התמיכה בה תרצו לקרוא עוד).

* SimRF – בכלי המאפשר מידול וסימולציה של מקלטים-משדרים אלחוטיים במערכות תקשורת ומערכות מכ"מ, מתאפשרות כעת טעינה וסימולציה מהירות יותר של מודלים המכילים בלוקים מספרית Circuit Envelope, הודות לפותרן חדש.

בין היכולות החדשות במשפחת ה-System Toolboxes:

* Communications System Toolbox – לכלי המקל על תכנון, סימולציה וניתוח של מערכות תקשורת ב-MATLAB ו-Simulink נוספו System Objects חדשים: Sphere Decoder ו- Constellation Diagram.

* Computer Vision System Toolbox – לכלי המשמש לעיבוד וידאו, עיבוד תמונה וראיה ממוחשבת בסביבות MATLAB ו-Simulink נוסף אלגוריתם חילוץ הפיצ'רים FREAK, המבוסס על מערכת הראיה האנושית ואשר נמצא כמהיר יותר, חסכוני יותר בזיכרון ורובסטי יותר מ-SIFT ו-SURF; ניתן כעת לאמן את ה-Cascade Object Detector לקבלת גלאי המסוגל לאתר אובייקטים שונים בתמונה, מעבר לאובייקטים כמו פנים, אף, עיניים, פה ופלג גוף עליון (קישור לתיעוד, קישור ל-GUI בנושא); נוספו פונקציות חדשות המבצעות פעולות שבעבר בוצעו רק על ידי System Objects (גילוי פינות, שערוך התמרה גיאומטרית, טקסט וגרפיקה).

* DSP System Toolbox – לכלי המקל על תכנון וסימולציה של מערכות עיבוד אות נוספו מגוון System Objects, וביניהם שניים עבור סינון אדפטיבי.

* Phased Array System Toolbox – הכלי המשמש לתכנון, סימולציה וניתוח של מערכות מכ"מ, מערכות Ultrasound ומערכות תקשורת מרובות-אנטנות עבר שדרוג משמעותי (קישור לפרטים המלאים), והוא מאפשר כעת למדל מערכת phased-array קצה-לקצה ולעבד מידע מכ"מ נרכש תוך שימוש בשיטות חדשות, וכן הוא מספק Apps חדשים.

בין היכולות החדשות בתחום ה-Code Generation:

* MATLAB Coder – הכלי המאפשר יצירת קוד C/C++ בצורה אוטומטית מתוך קוד MATLAB תומך כעת בעוד מגוון פונקציות, וביניהן, כמפורט למעלה, 10 פונקציות מתוך ה-Image Processing Toolbox.

* Fixed-Point Designer – כלי חדש, המשלב את יכולות ה-Fixed-Point Toolbox וה-Simulink Fixed Point, ומקל על פיתוח אלגוריתמי Fixed-Point ב-MATLAB ו-Simulink. בין היתר, הכלי מאפשר המרה אוטומטית ומהירה של קוד MATLAB ב-Floating Point לקוד C ב-Fixed-Point (יש צורך ברישיון גם ל-MATLAB Coder).

היכולות לעיל הן רק חלק מאלה שנוספו בגרסה החדשה. למידע מלא על
R2013a, בקרו בעמוד הגרסה באתר MathWorks.

מה דעתכם על הגרסה החדשה? מאיזה פיצ'ר התלהבתם במיוחד? האם יש חידוש משמעותי עבורכם שלא צויין למעלה?


יום ראשון, 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?