Quantcast
Viewing all 99 articles
Browse latest View live

ניקיון בררני


קרה לכם פעם שרציתם למחוק משתנים רבים מה-workspace, אך לא את כל אלה
שבו ? למשל, נניח שב-
workspaceשלנו יש משתנים ששמותיהם הינם שמות האותיות ב-ABC, ואנו מעוניינים לשמור רק את משתנה R.

אחת הדרכים לעשות זאת היא באמצעות פקודת clear, תוך ציון שמות כל המשתנים שאתם מעוניינים למחוק:  clear A B C D…Q S T…Z

דרך אחרת הינה לסמן את כל המשתנים המיותרים ב-workspace, ללחוץ על הלחצן הימני של העכבר, ולבחור ב-delete.

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

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

clearvars –except R

ואגב, אם ה-workspaceשלכם נראה כמו זה:


 ואתם מעוניינים לשמור את כל המשתנים שמתחילים באות A, ניתן להשתמש בסינטקס:

clearvars -except A*

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

 

MATLAB 8 ו-Simulink 8 כבר כאן !

כידוע, מזה מספר שנים חברת MathWorks משחררת גרסת מוצרים חדשה פעמיים בשנה במועדים קבועים, ובשבוע שעבר שוחררה אחת מהגרסאות המשמעותיות ביותר של MATLAB ו-Simulink. אחרי 14 גרסאות לפלטפורמת MATLAB 7 ו-9 גרסאות לפלטפורמת Simulink 7, שתי הסביבות קיבלו בגרסת R2012b ממשק מודרני הצפוי לייעל את תהליכי העבודה של כל משתמש ומשתמשת. ופרט ל-MATLAB 8
ו-Simulink 8, נוספו יכולות חדשות למגוון הכלים האחרים של MathWorks.

בין היכולות החדשות במשפחת מוצרי MATLAB:
  • MATLAB - שולחן עבודה (Desktop) חדש, אשר בחלקו העליון toolstrip הכולל לשוניות (Tabs) אשר נמצאות בו תמיד (גלובליות) או נפתחות רק כתוצאה מביצוע פעולה מסוימת (המטרה הינה לפתוח אופציות נוספות רק כאשר הן באמת רלוונטיות). בתוך כל לשונית יש sections שונים, ובתוכם לחצנים (controls) אשר ניתן להוסיפם ל-Quick access toolbar המופיע מעל ה-toolstrip (וכך לבצע פעולות נפוצות באמצעות קליק אחד של עכבר). לחצו לסרטון קצר בנושא ה-Desktop החדש, או קראו פוסטים באנגלית בנושא (קישור 1, קישור 2)
    אחת מהלשוניות המעניינות הינהגלריית ה-Apps, אשר כוללת אפליקציות אינטראקטיביות המגיעות כחלק מהכלים השונים של MathWorks, מאתר שיתוף הקבציםאו מקולגות, ואשר מאפשרת אריזת אפליקציות אותן המשתמש בונה והעברתן בקלות למשתמשים אחרים. לחצו לסרטון בנושא התקנת ואריזת אפליקציות, או קראו פוסט באנגלית בנושא.
    ה-Helpהמעולה של MathWorks עבר שינוי גדול כדי לשפר עוד יותר את חווית המשתמש. הממשק שלו מזכיר כעת דפדפן אינטרנט, והוא מקל על ביצוע שאילתות ומאפשר הצגה של מספר עמודי תיעוד בלשוניות נפרדות. שימו לב שניתן לבצע חיפוש בתיעוד גם באמצעות חלון החיפוש הנמצא ליד ה-Quick access toolbar. לחצו לסרטון בנושא ה-Help החדש.
    ולסיום, נוספה ל-MATLAB יכולת להציע תיקונים לטעויות הקלדהשל שמות פונקציות ומשתנים ב-Command Window. לחצו לסרטון בנושא, או צפו בתיקונים לשם הפונקציה ושם המשתנה בדוגמה למטה, בה ניתן להתרשם גם מה-Desktop החדש (ה-Quick access toolbar מוקף באליפסה).


  • MATLAB Coder - לכלי המאפשר יצירה אוטומטית של קוד C מתוך MATLAB נוספה יכולת להעריך עד כמה יהיה קל להמיר באמצעותו קוד MATLAB מסויים לקוד C. לחצו לתיעוד בנושא הפקודה הרלוונטית.
    הכלי תומך כעת בפונקציית parfor לצורך ייצור קבצי MEX המסוגלים להשתמש במספר ליבות.
    ולסיום, רשימת הפונקציות וה-System Objectsהנתמכות על ידי הכלי הורחבה, ונוספו כאלה מהכלים Image Processing Toolbox
    Computer Vision System Toolbox, DSP System Toolbox ו- Communications System Toolbox (כל ה-System Objects שבו נתמכים כעת).
  • Computer Vision System Toolbox - לכלי המקל על פיתוח מערכות ראיה ממוחשבת ועיבוד וידאו ותמונה נוספו אלגוריתמים לעקיבה אחר מספר אובייקטים ומתן הסבר (Annotation) לגבי האובייקטים המאותרים.
    בנוסף, הכלי כולל כעת את אלגוריתם KLT לעקיבה אחר פיצ'ריםותומך בגילוי אנשים מבוסס HOG.
  • Image Processing Toolbox - הביצועים של מספר פונקציות בכלי שופרו, והוא גם כולל כעת פונקציות חדשות לחישובי גרדיאנטבתמונה והתאמת היסטוגרמות. בנוסף, לפונקציה imregister, שהתווספה לכלי בגרסה הקודמת, נוספה תמיכה ברגיסטרציה מבוססת-עוצמה בתלת-מימד (RGB).
  • DSP System Toolbox - לכלי המקל על תכנון וסימולציה של מערכות עיבוד אות נוסף System Object המאפשר לצפות בספקטרום ההספק או בצפיפות ההספק הספקטרלי.
  • Parallel Computing Toolbox - מזה שנתיים ניתן להאיץ את ביצועי MATLAB על ידי שימוש בכרטיס הגרפי (GPU) של המחשב. בגרסה החדשה התווספו עוד פונקציות המסוגלות לרוץ על ה-GPU, ושופרו הביצועים של חלק מאלה שכבר יכלו לעשות זאת. בין היתר, מספר פונקציות / System Objects מהכלים
    Neural Network Toolbox, Phased Array System Toolbox
    ו-Signal Processing Toolbox ניתנות כעת להאצה באמצעות ה-GPU, וזאת בנוסף לאלה שכבר נתמכו מתוך ה-Communications System Toolbox.
  • HDL Coder - לכלי המאפשר המרה אוטומטית של קוד MATLAB ומודלי Simulink ל-HDL נוספה תמיכה ביצירת קוד HDL ממגוון System Objects מתוך ה-Communications System Toolbox.
  • HDL Verifier - הכלי המשמש לוריפיקציה של קוד HDL מכיל כעת System Object המאפשר לבצע סימולציות FPGA-in-the-loop תוך שימוש ב-MATLAB ו-FPGA בלבד.
  • כלים חדשים - למשפחת כלי MathWorks נוספו שני כלים חדשים. ה-Financial Instuments Toolboxהינו כלי המאגד את יכולות ה-
    Fixed-Income Toolbox וה-Financial Derivatives Toolbox.  ה-MATLAB Production Serverהינו כלי להרצת תוכניות MATLAB כחלק מישומי אנטרפרייז, מאגרי מידע ורשת.

בין היכולות החדשות במשפחת מוצרי Simulink:
  • Simulink - התוכנה כוללת כעת עורך (Editor) חדש המקל על צפיה במודלים, ניווט ועריכה. התפריטים בעורך החדש מסודרים בהתאם לפרדיגמת Model-Based Desgin (דבר אשר שם סוף למצב בו תפריט tools מכיל כמעט את כל האפשרויות...). ניתן כעת לסמלץ מודל צעד-אחר-צעד, לחזור אחורה בזמן הסימולציה ולהוסיף breakpoints התלויים בערכו של סיגנל. פיצ'ר חדש מאפשר חיבור חכם בין בלוקיםהמוצא את הנתיב הפשוט ביותר ביניהם שאינו כרוך בהסתרות של בלוקים אחרים או טקסט כלשהו. פיצ'ר נוסף הינו תגים (Badges) המספקים אינדיקציות גרפיות לגבי בלוקים וסיגנלים. ניתן כעת להציג בלשוניות (Tabs) שונות באותו חלון מספר תת-מערכות או מבטים שונים על אותו מודל (למשל, ברמות zoom שונות). העורך כולל Explorer bar המקל על ניווט ברמות היררכיה שונות במודל (לחצו לסרטון בנושאים Tabs ו-Explorer bar). ניתן כעת להתעלם מבלוקמסויים בזמן הסימולציה (מאפשר לבחון וריאציות שונות של אותו מודל או להאיץ את הסימולציות על ידי כיבוי של בלוקי תצוגה). מגרסה זו של הכלי ניתן גם לשנות את גודלו של בלוק תוך שמירה על הפרופורציה בין גובהו ורוחבו (על ידי לחיצה על Shift) וכן ניתן לשנות את גודלו של בלוק סביב מרכז הבלוק (לחיצה על Ctrl), לחצו לפוסט באנגלית בנושא.
    הכלי כולל כעת שני Advisors - יועץ המנתח את המודל ומספק עצות לשיפור ביצועי הסימולציה, ויועץ המסייע לשדרג מודלים ישנים לעבודה בגרסה העדכנית.
    ולסיום, פורמט ברירת המחדל לשמירת קבצים הינו slx (להבדיל מ-mdl, אשר עדיין קיים), אשר חוסך מקום בזיכרון, מספק מידע רב למערכות הצגת קבצים וחוסך בזמן בישומים מסוימים (הפורמט הושק בגרסה הקודמת, אולם לא היה ברירת המחדל). שימו לב גם שאופציות ה-zoom וה-panningמתאפשרות החל מגרסה זו בדרכים אחרות מבעבר (zoom על ידי גלגול גלגלת העכבר קדימה או אחורה, או על ידי
    ++Ctrl או -+Ctrl; הצגת המודל כולו באמצעות 1+Alt או מקש הרווח (כבעבר); ניתן לבצע את שתי הפעולות האחרונות גם באמצעות הלוחית האנכית (בצד שמאל של חלון המודל); panning על ידי לחיצה על גלגלת העכבר והזזת העכבר או על ידי מקש הרווח + לחצן שמאלי בעכבר (והזזת העכבר). לחצו לקריאת פוסט באנגלית בנושאאו לקריאת עמוד תיעוד בנושא).
    בדוגמה למטה ניתן להתרשם מהעורך החדש - הן מסידור התפריטים, והן מהלחצנים המאפשר לחזור אחורה בזמן הסימולציה או לסמלץ את המודל צעד-אחר-צעד (מוקפים בעיגולים העליונים), מה-Explorer bar (עיגול אמצעי, ומשמאלו - לוחית ה-zoom) ומ-badge לדוגמה (עיגול תחתון).

  • Stateflow - העורך של הכלי למידול וסימולציה של לוגיקה משולב כעת כחלק אינטגרלי מהעורך של Simulink. ניתן כעת להשתמש בשפת MATLAB על מנת להגדיר תנאים ופעולותב-Stateflow (המערכת תשנה את הסינטקס לזה המקובל). ולסיום, נוספה היכולת לבנות Structured Logic באמצעותState Transition Tables.
  • SimMechamics - לכלי המקל על מידול וסימולציה של מערכות מכאניות הצטרפה בגרסה הקודמת טכנולוגיית דור 2. לטכנולוגית דור 2 זו הצטרפה בגרסה החדשה תמיכה ליצירה אוטומטית של קוד C (באמצעות ה-Simulink Coder) וליבוא של מודלי CAD (למשל מתוכנת SolidWorks).

היכולות שהוצגו לעיל הן רק חלק מאלה שנוספו בגרסה החדשה. למידע מלא על הגרסה החדשה, בקרו בעמוד גרסת R2012b באתר MathWorks.
מה דעתכם על הגרסה החדשה? כמה זמן לקח לכם להתרגל אליה? האם היא חוסכת לכם זמן? מאיזה פיצ'ר התלהבתם במיוחד?

 

מציאת עיגולים בתמונה

רבים מכירים את התמרת Houghהמשמשת לצורך מציאת קוים ישרים בתמונה, ואשר ממומשת ב-Image Processing Toolbox באמצעות הפקודה Hough.
כידוע, ההתמרה הזו הורחבה לפני עשרות שנים כך שתוכל לשמש לצורך מציאת צורות שרירותיות שונות, לאו דווקא קוים ישרים, אלא למשל עיגולים.
לפני כשנתיים, בגרסת R2012a, נוספו ל-Image Processing Toolboxשתי פקודות המשמשות למציאת עיגולים בתמונה (imfindcircles) ולציור העיגולים אשר נמצאו (viscircles).
ננסה למצוא את העיגולים בתמונה הבאה ולהציגם (ניתן ללחוץ עליה כדי להגדילה):


בתמונה יש עיגולים במימדים שונים, ועל מנת לקבל תחושה לגבי טווח הקטרים שלהם, ניתן להיעזר בפקודה imdistline:
הפקודה מביאה להופעת סרגל מדידה הניתן להזזה ומתיחה/כיווץ (ראו על המטבע של חצי השקל), ובעזרת הכלי ניתן להסיק כי קוטר העיגול הגדול ביותר בתמונה (מטבע של חצי שקל) הוא כ-410 פיקסלים, כלומר – רדיוס העיגול הגדול הגדול ביותר הוא כ-205 פיקסלים. באופן דומה, רדיוס העיגול הקטן ביותר (מטבע של שקל) הינו כ-130 פיקסלים.
למרבה הצער, הפעלת הפקודה imfindcirclesעל התמונה תוך שימוש בתחום רדיוסים זה  אינה מניבה רשימה של מרכזי עיגולים ורדיוסים שלהם:
שתי סיבות לתוצאה העגומה הנ"ל. האחת הינה שברירת המחדל של הפקודה היא לחפש עיגולים אשר בהירים יותר מהרקע, וזה לא המצב בתמונה הנ"ל, ועל כן יש לשנות פרמטר בשם ObjectPolarity. אולם, מבדיקה, גם שינוי פרמטר זה אינו מספיק, ויש לשלוט על פרמטר נוסף בשם Sensitivity, הקשור למידת ה"מתירנות"של גלאי העיגולים (עד כמה הוא מוכן "לעגל פינות"ולהכריז על אובייקט מסויים כעיגול). הפרמטר מקבל ערכים בין 0 ל-1, וברירת המחדל שלו היא 0.85, ועל כן נגדיל את הערך הזה.
ניתן לראות כי הפקודה החזירה ארבעה מרכזים של עיגולים, ורדיוסים תואמים. על מנת לוודא שאכן מדובר במטבעות אשר בתמונה, ניתן להשתמש בפקודה viscirclesכדי לצייר עיגולים סביב אותם מרכזים, ברדיוסים המתאימים, והנה התוצאה:
לשתי הפקודות, imfindcirclesו-viscirclesפרמטרים נוספים שכדאי להכיר, ועל כן מומלץ להיעזר בתיעוד שלהן. לחצו לתיעוד של  imfindcircles ולתיעוד של viscircles .

געגועים ללאס וגאס | סימולציה של מזרקות הבלאג'יו


אני שמח לארח בבלוג פעם נוספת את יגאל ירוסלבסקי, אשר כבר כתב פה בעבר (לחצו לקריאת הפוסט האחרון שלו).
בתחילת החודש חזרתי מנסיעת עבודה לארה"ב, במהלכה הייתי בעיקר בסן-דייגו, אך גם קצת בלאס וגאס.
לאס וגאס היא עיר מדהימה, עיר חטאים של ממש, וכמעט כל דבר בה מיועד אך ורק למען מטרה אחת – לגרום לכם להוציא עוד ועוד כסף. יש שם הכל מהכל - הצגות, מסעדות, מסיבות, שולחנות משחק, להקות שמנגנות מוזיקה חיה וכו'. אך הדבר שהרשים אותי יותר מכל דבר אחר, היה המזרקות של קזינו בלאג'יו. טוב, זה לא ממש מפתיע, הרי אני מהנדס, ומזרקות הבלאג'יו הן יצירת אומנות הנדסית (וגם הבלוג הזה אינו בלוג טיולים...)
מזרקות הבלאג'יו הרשימו אותי עד כדי כך, שהלכתי לראותן 5 פעמים, חיפשתי עליהן מידע שימושי באינטרנט, וכמובן שהתלהבתי כאשר רועי שלח אליי קישור לסימולציית Simulinkשל המזרקות הנפלאות האלה.
Simulink, למי שלא מכיר, היאסביבה מובילה לפיתוח וסימולציה של מערכות
רב-תחומיות (
Multidomain), וככזאת - הסביבה הינה מושלמת לסימולציה של מערכות המשלבות בקרה ספרתית, מכאניקה ואף זרימה. וזה אידיאלי עבור סימלוץ מזרקות הבלאג'יו, שכן כל אחד מיותר מ-100 סילוני המזרקות הוא מערכת אלקטרומכאנית הכוללת משאבת מים בלחץ גבוה, מנועי שליטה על כיוון הסילון ותאורה, והכל מבוקר על ידי תוכנת מחשב המסנכרנת את הסילונים עם המנגינה שמשתנה בכל רבע שעה. נשמע מסובך? מסתבר שלא, לפחות לא עם Simulink.

על מנת לקרוא על מודל מזרקות הבלאג'יו שפותח והועלה ל-File Exchange על ידי John Hedengren, לראות סרטון הדגמה של המודל בפעולה וכמובן להוריד את המודל - לחצו פה.

 

Rational Fitting


אני שמח לארח בבלוג כותב חדש, גיל הנדלסמן, מהנדס אפליקציה העובד יחד עמי בחברת סיסטמטיקס. גיל הוא מהנדס אלקטרוניקה עם למעלה מ-10 שנות ניסיון בתחום התקשורת והמוליכים למחצה, והוא מוביל בסיסטמטיקס את תחום התקשורת לסוגיה, ובפרט - RF.
יישומים רבים, ובמיוחד יישומי תקשורת,  נדרשים לעבד מידע בתחום הזמן (Time Domain) על סמך אופיו בתחום התדר (Frequency Domain). עד לא מזמן, פתרון נפוץ לכך היה שימוש במודלים של "טורי פורייה"או "התמרות פורייה" (פונקציתFFT , שפותחה בשנות השישים של המאה הקודמת, המתבססת על מודל Cooley–Tukeyשל התמרת פורייה בדידה, ודאי מוכרת לרוב קוראי הפוסט). הטענה בבסיסה של שיטה זו היא שתחת תנאים מסוימים ניתן להציג כל אות בעזרת סכום (טור) אינסופי של פונקציות הרמוניות. אך עם התקדמות הטכנולוגיה, המידע נעשה מהיר ומגוון יותר, והאתגרים בניתוחו (וכן בסימולציה שלו) נעשו קשים יותר, ובאופן טבעי - התעשייה החלה לחפש מודלים מהירים יותר ויעילים יותר.
בסוף המאה הקודמת, וליתר דיוק - ביולי 1999, פרסמו צמד חוקרים, ביורן גוסטבן ואדם סמליאן, שיטה חדשה במטרה לענות על הצורך לעיל, שזכתה לשם "התאמה וקטורית" (Vector Fitting), ואשר עם השנים הותאמה ליישומי תקשורת. העיקרון בבסיסה של שיטה זו הוא מציאת קטבים ו- residuesשמתאימים ((fitבצורה מדויקת כרצוננו אל האות המקורי, כאשר ניתן בעזרת מספר רב יותר של קטבים וresidues-להשיג התאמה מדויקת יותר (מספר הקטבים וה-residuesתמיד יהיה זהה). רבים מתבלבלים בין אפסים ל-residues, אז זה המקום להדגיש שבשיטה זו המונה הינו חלק מפתרון של בעיה קומפלקסית, ולכן ניקרא residuesולא אפסים (בשונה מפונקצית תמסורת). השיטה עובדת באופן איטרטיבי, כאשר נבחרים קטבים ראשונים ובעזרת ה-residuesנמצא פתרון למערכת לינארית. בשיטה זו, המניפולציות מבוצעות לא על האות המקורי, אלא על תוצאותיה.
להלן נוסחה של Rational Fitting - פרמטרD  הינו רכיב סקאלרי והרכיבים  Cו-A   יכולים להיות (וברוב המקרים גם יהיו) וקטורים:


בשנים האחרונות שיטה זו תופסת תאוצה בקרב מפתחים וזאת כיוון שביישומים רבים שיטה זו עולה על קודמתה (
FFT) ומצליחה ליעל את תהליך עיבוד המידע – היא מאפשרת לקבל בזמן קצר יותר תוצאות באותה רמת הדיוק כמו קודמתה. בנוסף - היא מותאמת הרבה יותר לשיטות הנומריות עליהן המחשוב מתבסס.
מימוש של שיטה זו קיים בMATLAB- בכלי ה- RF Toolbox, בפונקציה הנקראת rationalfit (למטה מובאת השוואה בין הרצת IFFTוהרצת Rational Fittingבסביבת MATLAB). בעזרת פונקציה אחת, מהירה ונוחה, ניתן להמיר את אות המידע (לדוגמא קובץ פרמטרי מערכת - S-parameters) לתוצאות אשר מוצגות במשטח העבודה כאובייקט בעל פרמטרים רלוונטיים. ובעזרת פונקציות נוספות - ניתן להציג את תגובת המדרגה של האות בציר הזמן לאחר הפעלת הפונקציה  rationalfit(פקודת stepresp), ולהשלים את פעולת הצגת האות בציר התדר (פקודת freqresp). המעוניינים יכולים להוריד ע"י לחיצה כאןשני קבצים שאחד מהם הינו קוד המדגים הלכה למעשה את השימוש בפונקציות לעיל - בדוגמה האינפורמציה בקובץ המידע S21עוברת בפונקציה rationalfitולאחר מכן מוצגת כתגובת מדרגה בציר הזמן.


לסיום, בעלי  רישיון
RF Toolbox  מגרסה R2013aומעלה יכולים ליהנות מאפליקציה מעניינת שפותחה לאחרונה ע"י קולגה שלי ב-MathWorks, המאפשרת התאמה (fit)מהירה של S-parameters, הגדרת רמת הדיוק, ההשהיה, הגדרת קטבים משמעותיים וכן הצגת התוצאות במשטח העבודה (לחצו לקישור לאפליקציה).

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

ברוס טננבאום, מנהל מוצרי עיבוד התמונה והראיה הממוחשבת של חברת MathWorks, ביקר בישראל בתחילת החודש לרגל כנס הראיה הממוחשבת הישראלי השנתי IMVCשמתקיים זו השנה החמישית ברציפות. במסגרת הכנס הרצה טננבאום בפני מאות מהנדסים וחוקרים על "המעבר ממחקר בתחומים עיבוד תמונה וראיה ממוחשבת, למימושים בעולם האמיתי".
Image may be NSFW.
Clik here to view.
טננבאום במהלך הרצאתו בכנס 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). 
Image may be NSFW.
Clik here to view.
טננבאום מדגים זיהוי מחוות, לחצו להגדלה
"זה היה הביקור הראשון שלי בישראל, והוא היה מוצלח במיוחד", סיכם ברוס טננבאום את השבוע העמוס שעבר, "אני בטוח שבמהלך השבוע הזה נחשפו עוד ועוד אנשים ליכולות המתקדמות של כלי MathWorksבתחומים רכישת תמונה (Image Acquisition), עיבוד תמונה (Image Processing), ראיה ממוחשבת (Computer Vision System Toolbox), המרה אוטומטית של קוד MATLABלקוד C (MATLAB Coder), האצת ביצועי אלגוריתמים (Parallel Computing Toolbox), ניתוח והצגת מידע גיאוגרפי (Mapping Toolbox) וכו'. גם אני למדתי המון על צרכי השוק הישראלי, ואני מאמין שהדרישות השונות שהועלו יקבלו מענה בגרסאות הקרובות של כלי MathWorks. התרשמתי מאוד מהרמה המקצועית של האנשים עימם נפגשתי ומהדברים שאותם הם מפתחים, ואני כבר מצפה לביקור הבא שלי בישראל".
כל הדוגמאות בהן עשה טננבאום שימוש נמצאות ברשותי, במידה ותרצו לקבל אותן או שאגיע על מנת להציגן אצלכם, אנא כתבו לי ל-  royf@systematics.co.il

שימוש בעצים לצורך סיווג פרחים | על עצי רגרסיה-קלסיפיקציה

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


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

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

ניתן לבנות עצי רגרסיה-קלסיפיקציה בסביבת MATLAB באמצעות פקודת classregtree, ולהציגם באמצעות פקודת view. לשם סיווג דגימה חדשה יש להשתמש בפונקציה predict. שלוש הפקודות משתייכות ל- Statistics Toolbox, ולהלן דוגמה לשימוש בשתי הראשונות מבניהן, לשם סיווג הנתונים במאגר המידע של פישר על פרחי האירוס (ניתן ללחוץ על התמונה להגדלה):

לצד היתרונות הרבים של עצי רגרסיה–קלסיפיקציה, ישנם גם מספר חסרונות, המרכזיים שבהם הינם יכולת פרדיקציה נמוכה בהשוואה למסווגים אחרים, ובעית overfitting. במילים אחרות, העץ לומד לעשות פרדיקציה טובה על המידע אשר שימש לצורך בנייתו, אך לא מסוגל לסווג נכונה דגימות חדשות (בדומה לתלמיד חלש המשנן בעל פה חומר מסוים, אבל לא יודע לענות נכונה על אף שאלה המנוסחת באופן קצת שונה). אחת הדרכים להתגבר על הבעיה הנ"ל היא לבצע גיזום (pruning) לעץ, כלומר להקטין את כמות הצמתים והרמות בעץ, ובסביבת MATLAB הדבר ניתן לביצוע באמצעות פונקצית prune (נחשו לאיזה כלי היא משתייכת). דרך אחרת להתגבר על הבעיה היא לא להסתפק בעץ אחד, אלא לבנות אוסף של עצים, דוגמת מסווג מסוג Bagged trees, אבל על כך ארחיב בהזדמנות אחרת.

לאילו יישומים אתם משתמשים במסווגים? האם אתם עושים שימוש ב-Statistics Toolbox לצורך סיווג?

300 משתתפים בסמינרי עיבוד תמונה וראיה ממוחשבת בסביבת MATLAB

כ-300 משתמשים / משתמשים פוטנציאליים בכלי MathWorksהגיעו באמצע יוני לשני סמינרים חצי-יומיים בנושא עיבוד תמונה וראיה ממוחשבת בסביבת MATLAB, שהתקיימו בחיפה (130) וגבעת שמואל (170).
Image may be NSFW.
Clik here to view.
כ-170 משתתפים בסמינר בגבעת שמואל (לחצו להגדלה)

בסמינרים, שההשתתפות בהם היתה ללא עלות, ראו הנוכחים דוגמאות מעניינות לשימוש בכלי
MathWorks, ונחשפו ליכולות שנוספו לכלים בגרסאות האחרונות שלהם. בין הדוגמאות והיכולות שהוצגו:
  •           גילוי אוטומטי של עגבניות בתמונה וניתוח מימדיהן ורמת הבשלות שלהן, לצורך ביצוע ניתוחים סטטיסטיים המשמשים להשבחת זרעי הפירות והירקות שאנו אוכלים. במהלך הדוגמא בוצע שימוש בטיפוס מידע חדש בשם table, שנוסף לסביבת MATLABבגרסת R2013b.
  •           האצת אלגוריתמי עיבוד תמונה וראיה ממוחשבת באמצעות מחשבים מרובי ליבות, כרטיסי מסך (GPU) והמרה אוטומטית של אלגוריתמים מ-MATLABלקוד C. חלק מהאלגוריתמים שהואצו עשו שימוש בפונקציות עיבוד תמונה אשר רק לאחרונה התווספו לרשימת הפונקציות הניתנות להאצה בעזרת ה-GPUאו על ידי המרה אוטומטית שלהן לקוד C.
  •           עקיבה אחר אובייקטים בסרטון וידאו המצולם בזמן אמת.
  •          רגיסטרציה של תמונת IRעם תמונה ממצלמת רשת בשיטת Intensity-Based-Registration.
  •          זיהוי תווים אופטי (OCR) בעזרת פונקציה שהצטרפה ל-Computer Vision System Toolboxבגרסת R2014a.
  •          סגמנטציה תוך שימוש בשיטת Active Contoursבעזרת פונקציה שנוספה ל-Image Processing Toolboxבגרסת R2013a.
  •         אפליקציה בשם Color Thresholderשנוספה ללשונית ה-Appsבגרסת R2014aשל ה-Image Processing Toolbox, המאפשרת ליצור מסיכת סגמנטציה לתמונות צבע על ידי שימוש במרחבי צבעים שונים.
בנוסף, בסמינר הועברה גם הרצאת אורח ע"י אולג טרשנקו, בנושא המרת תמונה מדו-מימד לפסבדו תלת-מימד (שימושי להצגת תמונות שצולמו בטלפון נייד על גבי מכשירי טלויזיה התומכים בתצוגת תלת-מימד סטריאוסקופית).

להורדת קבצי הסמינר, לחצו כאן



Cody Coursework - פלטפורמה לאוטומציה של תהליך מתן ציונים למשימות תכנות ב-MATLAB

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

לפני כשנתיים וחצי פורסם בבלוג הזה על Cody, פיצ'ר באתר קהילת המשתמשים של MathWorks המאפשר לכם להפגין את יכולות התכנות שלכם ב-MATLAB על ידי פתרון של משימות פשוטות באתר עצמו. הפיצ'ר הזה מאפשר לכם לקבל חיווי על אופטימליות הפתרון שלכם לכל משימה, ולשפר את יכולות התכנות שלכם על ידי התבוננות בפתרונות שהציעו משתמשיMATLAB אחרים. ואם בא לכם, אתם גם יכולים להעלות חידות משלכם, כאשר כל חידה שתפתרו או שתעלו תזכה אתכם בנקודות ותקדם אתכם במעלה הטבלה שבה דירוג כלל משתמשי ה"משחק" !

השלב הבא באבולוציה של Codyהוא Cody Coursework, פלטפורמה חדשה יחסית המשמשת לאוטומציה של תהליך מתן ציונים למשימות תכנות ב-MATLAB. הרבה אוניברסיטאות בארץ ובעולם כבר החלו להשתמש בה, לאור היתרונות הרבים והחשובים שלה:
  • השימוש ב-Cody Courseworkחוסך לפקולטה משאבים הנדרשים לצורך בדיקת תרגילים
  • הפלטפורמה מאפשרת למרצה לגלות פערי ידע בזמן אמת
  • הסטודנטים מקבלים משוב מיידיעל נכונות הפתרונות שלהם לתרגילי הבית – כאשר "החומר עוד טרי בראש", לפני שעוברים הלאה לנושא הבא בסילבוס. הדבר כמובן משפר את תהליך הלמידה וההטמעה של חומר הלימוד
  • מעבר למשוב על נכונות הפתרון, הסטודנטים מקבלים גם משוב על איכות הפתרון, דבר שנותן לסטודנטים מוטיבציה להמשיך ולשפר את הפתרונות שלהם כך שיהיו יעילים יותר

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

Compiler או Coder ? זו השאלה

אחת מהשאלות הנפוצות ביותר שאני נתקל בהן היא "מה ההבדל בין MATLAB Coderלבין MATLAB Compiler". באופן די מבלבל, השמות של שני הכלים מתחילים ב-"MATLAB Co"ומסתיימים ב-"er", אבל הם כמובן כלים אשר משמשים לדברים שונים, כפי שיוסבר בשורות הבאות.
מה יוצרים?
ה-
Compilerמשמש ליצירת קבצי הרצה (סיומת .exe) וכן ליצירת C/C++ shared librariesמתוך קבצי MATAB. בשילוב עם כלי ה-Builderהשונים, התוצר אף יכול להשתלב בסביבות Java, דוט נט, ואקסל, ובעזרת כלי בשם MATLAB Production Server– הוא גם יכול לפעול על מערכות Production.
לעומתו, ה-
Coderמאפשר להמיר קוד MATLABל-C/C++ Source Codeקריא, יעיל ונייד (Portable) לפלטפורמות כמו צ'יפים, מעבדי Armושאר פלטפורמות אשר תומכות ב-ANSI/ISO C/C++ Code. כמובן שניתן לקמפל את הקוד אשר יוצר ה-Coderלקבלת exeאו dllשמיועדים לפעול על desktops.
מהירות ריצה של התוצר
מבחינת מהירות ריצה, התוצר של ה-
Compiler, הזקוק ל-MATLAB Compiler Runtime (MCR)כדי לפעול, רץ פחות או יותר באותה מהירות בה רץ קוד ה-MATLAB, בעוד שזה של ה-Coderבעל פוטנציאל לרוץ מהר יותר (הדבר מאוד תלוי באלגוריתם, שכן יש פונקציות MATLAB-יות שעברו אופטימיזציה). באותה נשימה, כדאי להדגיש שתוצר ה-Compilerיכול לנצל ריבוי ליבות או GPUכדי לרוץ יותר מהר (באם הקוד המקורי השתמש ב-Parallel Computing Toolboxכדי לעשות זאת), ושקוד Cאשר נוצר תוך שימוש ב-Coder, הרץ על מחשב מקומי מרובה ליבות, יכול להיתמך על ידי ממשק ה-OpenMP.
איזו פונקציונליות נתמכת ?
יתרון גדול של ה-
Compilerהוא שכמעט כל הפונקציונליות של MATLABוה-Toolbox-ים השונים נתמכת על ידי הכלי, בעוד שאצל ה-Coderהתמיכה פחות מקיפה (אך עדיין - כוללת מאות פונקציות, אופרטורים ו-System Objects). היתרון הזה קריטי אצל משתמשים אשר פיתחו ממשק משתמש גרפי (GUI), שכן אותו ניתן להפיץ רק עם ה-Compiler.
סיכום
שני הכלים מפותחים ונמכרים על ידי אותה חברה, משמע – הם אינם כלים מתחרים, אלא כלים משלימים, ופעמים רבות יצא לי לראות קריאה לפונקציה שהואצה על ידי המרתה לקוד
C (עם ה-Coder) נכללת בתוך GUIאשר מקומפל עם ה-Compiler. היתרון הגדול של שני הכלים הוא שהם מאפשרים למשתמש להפיץ את הקוד אשר כתב בסביבת MATLABלמחשבים שאין עליהם התקנה של MATLAB, וההפצה הזו אינה כרוכה בתשלום כלשהו למעט התשלום הראשון (והאחרון) בעבור הכלי – Compiler, Coder, או גם וגם...
ועכשיו, אחרי שהוסבר ההבדל בין ה-MATLAB Coderלבין ה-MATLAB Compiler - אם ברצונך לבחון את מידת ההתאמה של אחד מהכלים (או שניהם) עבורך, ללא התחייבות מצידך, עם (או בלי) ליווי של מהנדס מטעם סיסטמטיקס, ניתן לפנות אליי באמצעות royf@systematics.co.il
ובקרוב יהיה גם ניתן להירשם לסמינר מקצועי בנושא (ללא עלות מצידך) שיתקיים בחודש נובמבר 2014 בצפון ובמרכז. פרטים על הסמינר יפורסמו באתר סיסטמטיקס

R2014a - מוטב מאוחר מאשר לעולם לא

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

MATLAB– חלון חדש לצפייה בהיסטוריית הפקודות שהוקלדו ולהרצה חוזרת של פקודות רצויות (נפתח על ידי לחיצה על מקש ה"חץ למעלה"כאשר הסמן ב-Command Window. נותן חיווי לגבי פקודות שהרצתן הסתיימה בשגיאה ופקודות שהורצו יחדיו, וכן נותן חיווי לגבי מספר הפעמים שבהם הורצה הפקודה ברציפות. מאפשר לקבל תזמון של משך הריצה של הפקודה וכן לסמן מספר פקודות להרצה מיידית); תמיכה בחומרת Raspberry Piובמצלמות רשת מתוך MATLAB ; אפשרות לייצר סקריפט שבאמצעותו ניתן יהיה לשמור את המשתנים ב-Workspaceולשחזרם מאוחר יותר; הצעת תיקונים ב-Command Windowלשגיאות הקלדה של שמות פונקציות שפותחו על ידי המשתמש (ולא רק לשמות פונקציות של MathWorks).

Image Processing Toolbox– יכולת להמיר 25 פונקציות נוספות לקוד Cבאמצעות MATLAB Coder (למשל: edge, imfilterו-imopen. סה"כ 41 פונקציות מתוך הכלי כבר נתמכות); יכולת להאיץ עוד 9 פונקציות באמצעות כרטיס המסך (למשל: bwdist, imfillו-imreconstruct. מצריך Parallel Computing Toolbox, סה"כ 46 פונקציות עיבוד תמונה כבר נתמכות); אפליקציית Color Thresholderהמאפשרת ליצור מסיכת סגמנטציה לתמונת צבע על ידי שימוש במרחבי צבעים שונים (לחצו לפוסט בנושא).

SimulinkData Dictionaryלהגדרת וניהול מידע הקשור למודלים (לחצו לקישור); תמיכה built-inלהתקני LEGO MINDSTORMS EV3, Samsung Galaxy Android ו-Arduino Due; אפשרות להוסיף rich text, תמונות, היפרלינקים וטבלאות במודל לצורך תיעוד משופר; יכולת לשטח תת-מערכת חזרה אל תוך הרמה שמעליה (לחצו לקישור); אפשרות לייצר ממשקי משתמש לבלוקים תוך שימוש ב-dials, slidersו-spinboxes (מלמעלה למטה, בתמונה הבאה, ניתן ללחוץ כדי להגדיל)

Computer Vision System Toolbox– פונקציה לזיהוי תווים אופטי (OCR); הרחבת התמיכה על ידי ה-MATLAB Coderלצורך המרת קוד MATLABלקוד C (סה"כ 86 פונקציות ו-System Objectsכבר נתמכות); גלאי פיצ'רים BRISK

LTE System Toolbox– גרסת מוצרים ראשונה של MathWorksבה נכלל הכלי החדש לסימולציה של Physical Layerשל מערכות תקשורת אלחוטיות הפועלות בתקני LTEו-LTE Advanced

Simulink Real-Time– כלי המשלב את יכולות ה-xPC Targetו-xPC Target Embedded Optionומשמש לצורך סימולציות ובדיקות בזמן אמת (RST) של אפליקציות.

MATLAB Coder– תמיכה בעשרות פונקציות נוספות וב-System Objectsנוספים מתוך ה-Image Processing Toolbox, Computer Vision System Toolbox, Signal Processing Toolbox, Communication System Toolboxו-DSP System Toolbox. כמו כן – תמיכה גם בפוקנציות fminsearchו-fread; אפשרות לייצר scriptעבור הגדרות של פרוייקט שהוכן באמצעות ה-GUIשנפתח באמצעות פקודת coder (מאפשר אוטומציה של תהליך יצירת הקוד).

Parallel Computing Toolbox– הוסרה ההגבלה על מספר ה-coresהמקומיים בהם ניתן לעשות שימוש (ההגבלה היתה למקסימום 12); תוספת פונקציות MATLABו-Image Processing Toolboxהניתנות להאצה באמצעות כרטיס המסך.



שלומית בונה גרסה | R2014b


בתחילת החודש, קצת לפני חג הסוכות, שוחררה גרסת R2014bשל כלי MathWorks, הכוללת שינויים משמעותיים ב-MATLAB, Simulink ובכל יתר מוצרי MathWorks. להלן החידושים העיקריים:

MATLAB
שדרוג משמעותי לגרפיקה – מפת הצבעים ברירת המחדל מאפשרת תצוגה ברורה יותר, כותרות הגרפים מודגשות וגדולות יותר, Tick Labelsניתנים לסיבוב והם יכולים להכיל ביטויים מתמטיים, ועוד  לחצו לסרטון
ניתוח נתונים בעזרת פרדיגמת התכנות MapReduceהמאפשרת התאמה ל-Hadoop Clusterעבור big data
טיפוסי מידע חדשים עבור עבודה עם תאריכים וזמנים (datetime, duration, calendarDuration) - לחצו לסרטון
שילוב עם מערכות ניהול הגרסאות Gitו-Subversionמתוך חלון ה-Current Folder – לחצו לסרטון
שליטה על תיקיית העבודה שנפתחת בעת העלאת התוכנה (אפשר שהיא תהיה התיקייה שהיתה בשימוש כאשר התוכנה נסגרה)
הצעת תיקונים נוספים ב-Command Windowלשגיאות סינטקס (למשל, למקרים של סוגריים שלא נסגרו)
אפשרות לשימוש בפונקציות ואובייקטי Pythonמתוך MATLABומנוע ממשק לקריאה ל-MATLABמתוך Python
אפשרות לייצר ממשקי משתמש גרפיים (GUIs) בעלי לשוניות, בעזרת הפקודות uitabו-uitabgroup
טעינה אינקרמנטלית של מידע מקבצי טקסט גדולים ואוספים של קבצים, באמצעות פקודת datastore
שיפורים ב-VideoReaderהכוללים קריאה מהירה יותר ויכולת להתחיל בקריאה החל מרגע זמן מסויים בוידאו
אפשרויות חדשות עבור שירותי WEBשונים - תמיכה בפרוטוקול SOAP(פונקצית matlab.wsdl.createWSDLClient) ויבוא מידע מתוך שרתי WEBמרוחקים בפורמטי JSON, CSVאו תמונות (פקודת webread)
פקודת tcpclientלצורך קריאת ושליחת מידע מ/אל אל שרתים וציוד רשת בעזרת sockets

Image Processing Toolbox
אפליקציות לביצוע סגמנטציה או region analysis
תוספת של 16פונקציות הניתנות להמרה אוטומטית לקוד Cעל ידי ה-MATLAB Coder, ביניהן: imadjust, imclearborderו-medfilt2
סגמנטציה בגישת Fast Marching

Simulink
האצת תהליך הבניה (build) של מודלים באמצעות סימני עריכה חכמים (Smart Editing Cues) – ניתן להוסיף בלוקים באמצעות כתיבת שמותיהם ולערוך את השדה העיקרי שלהם מבלי להיכנס לממשק המשתמש, ניתן לסמן מספר בלוקים ולהיעזר בתפריט המאפשר יצירת תת מערכת מהם או התעלמות מהם, וניתן להכניס בקלות למודל בלוק שיש לו צימוד טבעי עם בלוק אחר (למשל – gotoעם from לחצו לסרטון
שמירה של תצוגות גרפיות של המודל לצורך טעינה מאוחר יותר (Viewmarks– מעין סימניות) לחצו לסרטון
התחלה מחודשת מהירה של סימולציות לצורך האצת סימולציות עוקבות (Fast Restart) – שימושי כאשר רוצים לכוונן פרמטרים במודלים שמשך עדכונם (update diagram) הינו ארוך לחצו לסרטון
בניית מודלים באמצעות דפוסי-תכנון המשמשים כנקודת התחלה לפתרון בעיות שכיחות (Model Templatesלחצו לסרטון
יכולת לקשר בין Annotationלבלוק לחצו לסרטון 

Computer Vision System Toolbox
אפליקציה לכיול צילומי סטריאו
קלאס בשם imagesetלאוספים גדולים של קבצי תמונה
תהליך עבודה לסיווג קטגוריאלי בגישת bag-of-visual-words
חבילת תמיכה אשר מקלה על שילוב קוד OpenCVב-MATLAB)פונקצית visionSupportPackages)

Phased Array System Toolbox
ספריית בלוקים לשימוש בסביבת Simulink (לא עוד רק פונקציות ו-System Objects)

Fixed-Point Designer
אפליקציית המרה להמרה אוטומטית של קוד MATLABמ-Floating Pointל-Fixed Point

HDL Coder
אפשרות לשלב Custom HDL codeבתוך System Objectהנכלל בפונקצית MATLABממנה יופק בהמשך בצורה אוטומטית קוד HDL – לחצו לתיעוד
תמיכה ב-Xilinx Vivado

HDL Verifier
יצירת SystemVerilog DPI-Cמתוך פונקציות MATLAB (מצריך רישיון MATLAB Coder)
תמיכה ב-Xilinx Vivadoלסימולציות FPGA-in-the-Loop

MATLAB Coder
אפשרות ליצירת קוד Cמתוך פונקציות ו-System Objectsנוספות ב-MATLAB, Image Processing Toolbox, Computer Vision System Toolbox, DSP System Toolboxו- Communication System Toolboxוכן מתוך ode23ו-ode45

Parallel Computing Toolbox
הגדלת מספר הפונקציות הניתנות להאצה בעזרת ה-GPU, למשל: accumarray, histc, cummaxו-cummin
העלאת דרישת המינימום של compute capabilityלצורך האצת ביצועים בעזרת GPUמ-1.3 ל-2.0


MATLAB לא קודר | חדשות משמחות בנושא יצירה אוטומטית של קוד C מתוך MATLAB


לפני כ-3 שנים וחצי שחררה חברת MathWorksכלי בשם MATLAB Coder, המסייע בהמרה אוטומטית של אלגוריתמי MATLABלקוד C/C++. הדבר הינו כמובן בעל שימושים רבים – מהאצת ביצועים של אלגוריתמי MATLAB, דרך יצירת ספריות ו-Executablesהמסוגלים לפעול על מחשבים בהם לא מותקן MATLAB, ועד ליצירת קוד אשר יכול לפעול על מעבדי-אות (DSPs).

בראשית הדרך, לא כל הפונקציות ב-MATLABובטולבוקסים השונים נתמכו על ידי הכלי, אלא רק subsetשל שפת MATLAB, סדר גודל של כ-600 פונקציות, אופרטורים ו-System Objects. מגרסה לגרסה, כתוצאה מפידבקים שנאספו מהמשתמשים, הגדילה MathWorksאת כמות האלגוריתמים בהם הכלי תומך, והאמת היא שאני כבר הפסקתי לבדוק מה הכמות המדויקת שנתמכת. לאחרונה, בעקבות שאלה ששאלתי, התברר לי שהכמות המדויקת שנתמכת בגרסה האחרונה כבר עומדת על כ-1200 פונקציות, אופרטורים ו-System Objects– כלומר – כפליים מהמצב שהיה כאשר הכלי שוחרר לראשונה (לחצו לרשימה המלאה).

בין היתר, התברר לי שהכלי היום תומך ביצירת קוד C/C++מתוך

כ-200 אלגוריתמים לעיבוד אות (כמעט כולם מתוך ה-DSP System Toolboxוה-Signal Processing Toolbox),
כ-170 פונקציות סטטיסטיות (כמעט כולן מתוך ה-Statistics Toolbox),
כ-150 אלגוריתמי עיבוד תמונה, ראיה ממוחשבת ורכישת וידאו ותמונה (כמעט כולם מתוך ה-Computer Vision SystemToolbox, Image ProcessingToolboxו-Image Acquisition Toolbox),
כ-140 אלגוריתמים המשמשים לתכנון, סימולציה וניתוח של מערכות מכ"מ, מערכות Ultrasoundומערכות תקשורת מרובות-אנטנות (מתוך ה-Phased Array System Toolbox),
וכ-120 אלגוריתמים המשמשים לתכנון, סימולציה וניתוח של Physical Layerשל מערכות תקשורת (מתוך ה-Communications System Toolbox).

אני מודה שנדהמתי מהעלייה הדרמטית בכמות האלגוריתמים שנתמכים על ידי ה-MATLAB Coder, אשר עם השנים גם השתדרג בממשק משתמש גרפי נוח המקל על תהליך יצירת הקודואפילו בפונקציה שמאפשרת להעריך מראש כמה פשוטה תהיה מלאכת המרת האלגוריתם שלכם מ-MATLABל-C/C++. אני מזמין אתכם לנסות את הכלי (ניתן לשלוח מייל ל- royf@systematics.co.il), ואם יש פונקציה מסוימת שאינה נתמכת כיום ואתם מעוניינים שתיתמך, אפשר להוסיף תגובה למטה.

MATLAB בשירות האקדמיה

בין התפקידים השונים שאני ממלא במסגרת עבודתי בסיסטמטיקס, לאחרונה הפכתי גם לאחראי הטכני על הפעילות מול האקדמיה. בין היתר, התפקיד כולל:
* מתן הרצאות, בעיקר לסטודנטים לתארים גבוהים, דוקטורים ופרופסורים, למשל בנושאים "האצת ביצועי MATLAB"או "חידושים בתוכנת MATLAB, טיפים וטריקים". הנה תמונה מתוך הרצאה שהעברתי בחודש שעבר ביחידה לקידום הוראה בטכניון, מול סטודנטים לתארים מתקדמים מפקולטות דוגמת הנדסת חשמל, מדעי המחשב ופיזיקה. ההרצאה אף צולמה בוידאו על מנת שתעלה לערוץ היוטיוב של הטכניון
* פגישות ייעוץ עם חוקרים. הנה קטע ממכתב תודה לדוגמה, שקיבלתי לאחרונה מחוקר בפקולטה להנדסה ביו-רפואית בטכניון, אשר סייעתי לו להאיץ פי 3 קוד שהוא כתב (כל סימולציה "גדולה"שלו נמשכה כשבוע, עד שייעלתי את הקוד שלו כך שכעת הוא מסיים לרוץ תוך פחות מיומיים וחצי). לחצו על התמונה להגדלה.
* סיוע למרצים אשר מעוניינים לשלב את הכלים השונים של סביבת MATLABבמסגרת תוכנית הלימודים של הקורסים אותם הם מעבירים.
* שיתופי פעולה עסקיים, בין אם באמצעות גופי שת"פ עם התעשייה במוסדות האקדמיים השונים, ובין אם באמצעות קשר ישיר עם המארגנים מהאקדמיה. הודות לכך, למשל, נתנה השבוע סיסטמטיקס חסות לכנס Israel Computer Vision Day, שהתקיים במרכז הבינתחומי הרצליה, ובו נכחו כ-300 חוקרים ומפתחים (לחצו לעמוד הכנס עם לוגו סיסטמטיקס).
כל השירותים המוזכרים לעיל ניתנים חינם, ואם אתם מתעניינים באחד מהם (או יותר...) – ניתן ליצור עמי קשר במייל royf@systematics.co.il

חוויות מבוסטון

בשבוע שעבר השתתפתי בכנס השנתי של עובדי חברת MathWorks, ואני חייב לשתף אתכם בהתרגשות שאחזה בי כאשר שמעתי על תוכניות החברה לשנים הקרובות (לצערי בינתיים אני יכול לשתף אתכם רק בהתרגשות, ולא בתוכניות...).
פרט למושבים שבהם השתתפו גם מנהלי הפיתוח של הכלים השונים שדיברו על הכיוונים העתידיים, היו בכנס הרבה סדנאות מקצועיות והדגמות טכניות מגניבות.
אחת ההדגמות שמשכה את תשומת לבי היתה מימוש של גלאי אנשים מבוסס HOGעל גבי פלטפורמת Zynq של חברת Xilinx. האלגוריתם מומש באמצעות תוכנת Simulink, והומר אוטומטית לקוד HDL באמצעות כלי של חברת MathWorks הנקרא HDL Coder, אשר מסוגל לייצר בצורה אוטומטית קוד VHDL ו-Verilog מתוך קוד MATLAB ומודלי Simulink. הנה תמונה מייצגת בה ניתן לראות את פלטפורמת ה-Zynq (בצד שמאל) ואת הגילוי המוצלח של האנשים שמבוצע על ידי האלגוריתם (לחצו על התמונה להגדלה):


עוד דוגמה נחמדה לשימוש בכלי MathWorks היתה דוגמה של המרה אוטומטית של קוד MATLAB לקוד C לצורך שילובו באפליקציית Android. הכלי אשר ממיר קוד MATLAB לקוד C++/C בצורה אוטומטית נקרא MATLAB Coder, והתייחסתי אליו בפוסט מלפני כחודשים וחצי (לחצו לקריאה). במרכז התמונה ניתן לראות טאבלט מבוסס Android, אשר מצלם חפיסת קלפים (מצד ימין), ומבצע גילוי פינות בתמונה המצולמת (התוצאה מוצגת על גבי מסך המחשב המחובר לטאבלט), והכל הודות לקוד MATLAB שהומר אוטומטית לקוד C והורד אליו.


מעבר לכך, היה לי את הכבוד לשוחח ארוכות עם ד"ר לורן שור, אשר הינה האדם הראשון שנשכר לעבודה ע"י מנכ"ל MathWorks (היום כבר יש בחברה מעל 3,000 עובדים). במהלך 28 שנות עבודתה עד כה בחברה, פיתחה ד"ר שור כלים שונים ופונקציות רבות (imread, imwrite, diff, filtfilt, interp1, interp2, imagesc וכו'), והיא גם מנהלת בלוגשזוכה לחשיפה "קצת יותר גדולה"מהבלוג שאתם קוראים כרגע :)
ד"ר שור צפויה להגיע לארץ בחודש מרץ, ולהיות Keynote Speaker בכנס IMVC השנתי הקרוב, בו תדבר על פתרון בעיות Big Dataבתחום הראיה הממוחשבת באמצעות MATLAB. פרט לכך, במהלך ביקורה צפויה ד"ר שור להשתתף בשני סמינרים בנושא Big Data שתקיים חברת סיסטמטיקס, וכן להרצות במוסדות אקדמים מובילים. היו בטוחים שתקראו עוד על הביקור שלה בפוסט הזה.

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

גרסת R2015aשל כלי MathWorksכוללת עדכונים משמעותיים ב-MATLAB, Simulinkובעוד עשרות כלים, וכן ארבעה כלים שימושיים חדשים (מודגשים בהמשך בצהוב). 

להלן עיקרי החידושים:

MATLAB
פונקציות חדשות כמו repelemו-milliseconds; הרצת אלגוריתמי mapreduceעל כל clusterמחשבים התומך ב-parallel pools (דורש MATLAB Distributing Server); תמיכה בהתקני BeagleBone Black, Arduino Leonardo, מצלמות IPואחרים; תוספת הערה בתחתית עמוד תיעוד ממנה ניתן ללמוד באיזו גרסה נוסף הפיצ'ר הנדון בעמוד.

MATLAB Compiler
מעתה הכלי כולל יכולת ליצור add-insל-Excel.

MATLAB Compiler SDK
הרחבה ל-MATLAB Compilerהמאפשרת יצירת ספריות C/C++, Javaו-.NET (לא ניתן יותר לרכוש את ה-Builder-ים שהיו בעבר).

Statistics and Machine Learning Toolbox
אפליקציית Classification Learnerלאימון מודלים וסיווג מידע באמצעות Supervised machine learning; יצירת קוד Cמתוך הפונקציות pcaו-kmeans (דורש MATLAB Coder).

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

Phased Array System Toolbox
מידול ושערוך פשוטים יותר של מספר מטרות מכ"מ; כיול מערך; דוגמה של מערכת מתקדמת לסיוע לנהג.

Antenna Toolbox
כלי חדש לתכנון, ניתוח והצגת אלמנטי אנטנה ומערכי אנטנות. הכלי מרחיב את יכולות הכלים SimRFו-Phased Array System Toolbox. למידע נוסף - לחצו פה.

Image Processing Toolbox
אפליקציית Image Batch Processorהמאפשרת ביצוע batch processing– הפעלת פעולת עיבוד תמונה על קבצים נבחרים מתוך תיקייה או אפילו על התיקייה כולה; אפשרות לייצר קוד Cמתוך פונקציות דוגמת bwlabel, regionpropsו-watershed (דורש MATLAB Coder); יכולת להפעיל את אפליקציית ה-Color Thresholderעל תמונות המוזרמות ב-live; אפשרות להאיץ חמש פונקציות נוספות באמצעות ה-GPU, וביניהן – regionprops (דורש Parallel Computing Toolbox).

Simulink
חיוויים גרפיים חדשים לשימוש בתוך המודל לצורך כוונון סימולציות, ביצוע בדיקות והצגת תצוגות (שעונים, מתגים ובלוקים נוספים הנמצאים בספריית Dashboardשל ה-Simulink  הבסיסי); עדכון מהיר יותר של מודלים באמצעות קימפול JITלבלוקי MATLAB Functionותרשימי Stateflow; יצירה מהירה של busמתוך אוסף של סיגנלים; מירקור לולאות אלגבריות; אפשרות ליצור אפליקציות ל-Apple iOSהמריצות מודלי Simulink.

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

Computer Vision System Toolbox
תמיכה ביצירת קודC  מתוך פונקציות המשמשות לכיול מצלמה ו-Optical Flow (דורש MATLAB Coder); פונקצית plotCameraהמאפשרת לראות היכן היתה המצלמה ולאן הסתכלה); שיפור ביצועים של מגוון מרכיבים ובראשם של אלמנטי תצוגה; פונקציות יעילות לעיבוד Point Cloud; חיפוש תמונות ושליפה באמצעות Bag of visual words;

Vision HDL Toolbox
כלי חדש לתכנון מערכות עיבוד תמונה, וידאו וראיה ממוחשבת עבור FPGAsו-ASICs. הכלי מכיל System Objectsב-MATLABובלוקים ב-Simulink. למידע נוסף - לחצו פה.

HDL Coder
שערוך נתיב קריטי ללא צורך בביצוע סינטזה.

MATLAB Coder
אפליקציית ייצור קוד משופרת, הכוללת editorמשולב ותהליך עבודה פשוט יותר; קוד יעיל יותר עבור logical indexing; תוספת פונקציות רבות מהן ניתן ליצר קוד Cמכלי עיבוד האות, עיבוד התמונה, התקשורת והסטטיסטיקה, וכמובן מ-MATLABעצמו.

Parallel Computing Toolbox
תוספת של עשרות פונקציות לרשימת הפונקציות הניתנות להאצה באמצעות כרטיס המסך (GPU);

Simulink Test
כלי חדש ליצירת test harnesses, חיבור תרחישי בדיקות מורכבים וניהול בדיקות מבוססות-סימולציה. למידע נוסף - לחצו פה.

לעמוד הגרסה - לחצו פה.

.......................

מדהים מה שהנוער של היום מסוגל לעשות אם רק נותנים לו את הכלים !

בסוף החודש שעבר ביקרה בארץ ד"ר לורן שור, אשר הינה האדם הראשון שנשכר לעבודה ע"י מנכ"ל MathWorks (היום כבר יש בחברה מעל 3,000 עובדים). במהלך 28 שנות עבודתה עד כה בחברה, פיתחה ד"ר שור כלים שונים ופונקציות רבות (imread, imwrite, diff, filtfilt, interp1, interp2, imagesc  וכו'), והיא גם מנהלת בלוג   שזוכה לחשיפה "קצת יותר גדולה"מהבלוג שאתם קוראים כרגע, אשר בו פורסם לראשונה על ביקורה הצפוי
ד"ר שור הוזמנה לארץ על מנת לשמש כ-Keynote Speaker בכנס IMVC השנתי, בו דיברה על פתרון בעיות Big Data בתחום הראיה הממוחשבת באמצעותMATLAB . פרט לכך, במהלך ביקורה ד"ר שור אף השתתפה בשני סמינרים בנושא Big Data שקיימה חברת סיסטמטיקס, וכן הרצתה במוסדות אקדמים מובילים.  בסך הכל, במהלך חמשת הימים בהם שהתה בישראל, הרצתה ד"ר שור בפני למעלה מ-1,000 איש  !
Image may be NSFW.
Clik here to view.
ד"ר שור מרצה בפני מאות אנשים בכנס IMVC
כיוון שאחד מתפקידי בחברת סיסטמטיקס הוא לשמש כאחראי הטכני על הפעילות מול המוסדות להשכלה, התלוויתי לד"ר שור במהלך כל ביקורה בישראל, אשר על תכנונו הייתי מופקד. אחד הביקורים המעניינים שהיו לנו היה בתיכון מטרו-ווסט ברעננה, שם נפגשנו עם ארבעה מתלמידי המגמה המדעית-הנדסית, אשר פיתחו יישום חברתי לניהול תזונה אישית - כאשר כל החלק של עיבוד התמונה לשם זיהוי סוגי מאכלים שונים פותח עם תוכנת MATLAB. כן, הם החלו להשתמש ב-MATLAB בכיתה י"א  !
Image may be NSFW.
Clik here to view.
פרויקט ה-CalCam, לחצו להגדלה
ד"ר שור ואני שמחנו להצטלם יחד עם ארבעת השמיניסטים המוכשרים, אחראי המגמה הדר טל ומנהל בית הספר אמנון בר נתן, שאף העניק לנו שי צנוע - דגל בית הספר שבמרכז התמונה - לאות תודה על הסיוע לפרוייקט.
Image may be NSFW.
Clik here to view.
מנהל בית הספר (מימין), ד"ר שור (שלישית מימין), אחראי המגמה (שני משמאל), אני (משמאל) ומפתחי פרויקט ה-CalCam

אם זו לא דוגמה ל-MATLAB with Fun, כשם הבלוג הזה, אז אני לא יודע מה כן :)



כיצד להחליף מחשב ולהישאר בחיים ?


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

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

אל התיקייה הנ"ל ניתן להגיע על ידי כתיבת הפקודה prefdirב-MATLABשעל המחשב הישן, ובה ניתן למצוא את הקובץ  shortcuts_2.xml (או shortcuts.xml, תלוי בגרסת ה-MATLAB) וכתלות בגרסה – אולי גם את הקובץ MATLABQuickAccess.xmlאשר מכיל את הגדרות ה-Quick Access Toolbarשלכם (נכנס בגרסת R2012b). עכשיו כל שנותר הוא רק להעתיק את הקבצים הללו לתיקיית ה-Preferencesשל MATLABעל המחשב החדש – ואתם מסודרים (גם אותה מוצאים על ידי שימוש בפקודת prefdir).

עכשיו כולם ביחד: "תתחדש רועי"   J



מאות משתתפים בכנס MATLAB & Simulink בינלאומי בישראל


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

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

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

בחלק השני של הכנס התחלקו הנוכחים בין שמונה מסלולים מקצועיים בתחומים שונים ומגוונים, אשר הועברו על ידי מהנדסי האפליקציה של סיסטמטיקס, בכירי MathWorks, ומשתמשי הכלים – ממשתמשים מנוסים ועד תלמידי תיכון שהסבירו על אופן השימוש שלהם בכלי MATLABו-Simulink. נושאי המסלולים המקצועיים היו "עיבוד תמונה וראיה ממוחשבת", "אווירונאוטיקה ורובוטיקה", "תקשורת ועיבוד אות", "לימוד מכונה ו-Data Science", "תכנון חומרה וביצוע וריפיקציה", "המרה אוטומטית של קוד MATLABלקוד C", "האצת ביצועים של אלגוריתמים והפצה שלהם"ו-"Internet of Things".

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

זה הכנס הכי גדול שקיימנו עד כה בתשע שנות פעילות של קו מוצרי ה-Technical Computing & Model-Based Design , אנחנו מאוד מרוצים מההיענות של משתמשי הכלים, ועל סמך הפידבקים שקיבלנו – המשתתפים בכנס נהנו ולמדו המון. להתראות באירועים הבאים – מומלץ לעקוב אחר הפרסומים באתר סיסטמטיקס, שאגב - עבר לאחרונה מתיחת פנים רצינית (לחצו פה).

אין סוסים שמדברים עברית, אבל מטלב – בהחלט מדבר


הידעת ש-MATLABיודע לזהות טקסט בעברית ?

זיהוי תווים אופטיהוא תחום מתפתח חשוב בעולם הראיה הממוחשבת, ובדיוק בשל כך בגרסת R2014aשל ה-Computer Vision System Toolboxנוספה לכלי הפונקציה ocr. בתחילה, הפונקציה תמכה רק בשפות אנגלית ויפנית, אבל החל מגרסת R2014b– ניתן להוריד ללא עלות חבילת תמיכה בשפות נוספות, כולל עברית !

כל מה שצריך לעשות על מנת להתקין את התוסף זה להקליד visionSupportPackages, ללחוץ על next, ולבחור ב-OCR Language Data. וכיצד משתמשים בפקודה ocrעל מנת לפענח טקסט בשפת הקודש ? הנה דוגמה:

ניקח את הטקסט הבא, המתאר אותי במספר משפטים:


כעת, נפעיל על תמונת הטקסט את קטע הקוד הבא, אשר יזהה בה תווים בעברית (וגם ספרות), ויציג את הטקסט שזיהה – על גבי הטקסט המקורי (יש ללחוץ על התמונה להגדלה):


והנה התוצאה (יש ללחוץ על התמונה להגדלה):


מגניב, לא ?

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



Viewing all 99 articles
Browse latest View live