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

יום שישי, 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

יום חמישי, 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.

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


יום שלישי, 5 בפברואר 2013

לא רק שואב אבק | דברים ש-MATLAB ו-Simulink יכולים לגרום לרובוט לעשות

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

ולמי שלא מצליח לראות את הסרטון, הנה רצף תמונות (ניתן ללחוץ כדי להגדיל):
הרובוט המופיע בסרטון ובתמונות הוא NAO, רובוט משוכלל הניתן לתכנות, פרי פיתוח של Aldebaran Robotics, אשר לדברי החברה נמצא בשימוש במאות אוניברסיטאות יוקרתיות ומעבדות מחקר ברחבי העולם. גובהו של הרובוט 57 ס"מ, והוא בעל 25 דרגות חופש, דבר המאפשר לו לבצע תנועות אנושיות. כאמור, בהדגמה שניתן לראות למעלה השתמשו ב-MATLAB ו-Simulink כדי להעביר את המידע שהתקבל ממערכת חישת-התנועה Kinect בתור הוראות לרובוט NAO, במטרה שיחקה במהירות את תנועות האדם אשר ניצב לידו. כיצד עשו זאת?
מודל ה-Simulink אשר שימש לכך מופיע למטה (חלק עליון), והוא עושה שימוש באתר שיתוף הקבצים של MathWorks, בו יש סט של בלוקי Simulink תחת השם Simulink Support for Kinect. אוסף בלוקים זה מאפשר לקחת בקלות את המידע מה- Kinect של מיקרוסופט (או ממערכת Xtion PRO של Asus), להכניסו לתוך Simulink (צד ימין למטה) ולייצר skeleton (צד שמאל למטה), וכל זה קורה בחצי השמאלי של המודל (כלומר בצד שמאל של החלק העליון).
Level-2 MATLAB S-Function (מסומן בחץ ירוק בחצי הימני של המודל) לוקח את ה-skeleton וממיר אותו לזוויות למפרקים הנשלחות כהוראות לרובוט בעזרת ה-API של Aldebaran Robotics.
קשה היה להישאר אדיש מול ההדגמה הזו, ואפילו קליב מולר, ממציא ה-MATLAB, ניסה ללמד את הרובוט מספר תנועות:

מה דעתכם על ההדגמה הזו? האם אי פעם השתמשתם בכלי MathWorks כדי לשלוט על חומרה? ומתי לאחרונה כתבתם S-Function בעצמכם?