חידושים בעיבוד תמונה וראיה ממוחשבת בגרסת R2019b של MATLAB
חידושים משמעותיים רבים נוספו לכלי עיבוד התמונה והראיה הממוחשבת של חברת MathWorks בגרסת R2019b!
גרסת R2019b של כלי MathWorks, אשר שוחררה לאחרונה, כוללת יכולות חדשות רבות ותיקוני באגים בכלים הקיימים בסביבות MATLAB ו-Simulink, ואף שני כלים חדשים (לסקירת יכולות הגרסה – לחצו פה). מבחינת תחומי עיבוד התמונה והראיה הממוחשבת – ניתן בגרסה החדשה פוקוס מיוחד.
אז…מה נשתנה בתחומי עיבוד התמונה והראיה הממוחשבת בגרסת R2019b?
להלן החידושים המרכזיים:
- עבודה עם תמונות גדולות במיוחד – התווסף אובייקט bigimage שנועד לעבודה עם תמונות גדולות במיוחד, כמו צילומי לווין ותמונות רפואיות ברזולוציה גבוהה. יחד עם פקודת התצוגה החדשה bigimageshow והפקודה החדשה bigimageDatastore המשמשת לקבלת כל הבלוקים מתוך אובייקט/י bigimage, יש כעת ב-MATLAB מענה מעולה לטעינה, עיבוד, ניהול, הצגה וייצוא של תמונות ענקיות. הנ"ל רלוונטי גם לתחום ה-Deep Learning, ואף נוספה דוגמה הממחישה כיצד ניתן לאמן מסווג עבור תמונות שכאלה (לחצו לדוגמה). לסקירה בעברית של חידושים בתחום ה-Deep Learning – לחצו פה.
- Datastores – שימוש ב-datastores מאוד מקל על עבודה עם אוספים גדולים של מידע, דבר הנפוץ במיוחד בתחום ה-Deep Learning. לרשימת ה-datastores השימושיים בתחום (קישור) נוסף בגרסה החדשה ה-boxLabelDatastore, שמאפשר ליצור datastore עבור ה-bounding boxes של מידע תיוג של class-ים שונים. בנוסף, הפונקציות trainFasterRCNNObjectDetector ,trainFastRCNNObjectDetector ,trainYOLOv2ObjectDetector ,evaluateDetectionPrecision ו-evaluateDetectionMissRate תומכות כעת ב-datastores.
- חילוץ patch-ים אקראיים – הפקודה randomPatchExtractionDatastore, אשר נוספה לפני כשנה במטרה לאפשר חילוץ של patch-ים במיקומים רנדומליים בדו-מימד מתוך תמונות רגילות או תמונות המתויגות ברמת הפיקסל, תומכת כעת גם בתלת-מימד וכן ב-datastores שעברו טרנספורמציה (אשר בבסיסם הינם imageDatastore או pixelLabelDatastore), ותהליך האימון שמשתמש בתוצר שלה ניתן כעת להאצה בעזרת ה-Parallel Computing Toolbox.
- שיפורים ב-ROI Tools – לעשרת אובייקטי יצירת ה-region of interest שהיו קיימים עד לגרסה החדשה נוסף אובייקט חדש – כוונת צלב (לרשימה המלאה של כל הצורות שניתן כעת לצייר – לחצו פה). בנוסף, כל הקלאסים ליצירת ROI תומכים כעת במתודת wait, כך שניתן לשלבם בתוך script-ים (MATLAB ימתין עד לקליק-כפול של המשתמש על אובייקט ה-ROI שאותו הוא מעוניין להגדיר). חלק מהאובייקטים אף תומכים כעת במתודת reduce, אשר משתמשת באלגוריתם Douglas-Peucker כדי להפחית את מספר הנקודות המשמשות להגדרת ה-ROI. ניתן כעת גם לשלב הגדרה של ROI בתוך Apps המפותחים בעזרת ה-App Designer (מהגרסה החדשה – זו הסביבה המומלצת לפיתוח GUIs בעזרת MATLAB, ולא GUIDE).
- Inpainting – ניתן כעת להסיר אובייקטים מתמונה או לתקן אזורים פגומים בתמונה ("למלא חורים") בעזרת exemplar-based inpainting המיושם באמצעות הפקודה החדשה inpaintExemplar. את האזור שבו רוצים להפעיל את הפקודה ניתן להגדיר בצורה נוחה באמצעות הפונקציות השונות להגדרת ROIs אשר נדונו בסעיף הקודם. לדוגמאות לשימוש ב-inpaintExemplar – לחצו פה.
- צפייה בפרוסות מתוך נפחים תלת-מימדיים – sliceViewer מאפשרת להציג פרוסות מתוך נפח תלת-מימדי, לפי מישור הניצב לאחד משלושת הצירים (שהוגדר בעת הקריאה לפונקציה). orthosliceViewer מאפשרת להציג באותו חלון את שלושת המישורים האורתוגונלים לצירים העוברים דרך נקודה (x,y,z) מתוך הנפח, כאשר ניתן ללחוץ על "כוונת הצלב" באחת התמונות ולהזיז אותה על מנת לנוע אל נקודות אחרות מתוך הנפח (שתי התצוגות של המישורים האחרים יתעדכנו בהתאם). בשני ה-viewer-ים הללו ניתן במהלך הניווט ללחוץ על התמונה ולגרור את העכבר אנכית או אופקית, על מנת לשנות את הבהירות או הקונטרסט, בהתאמה.
- בניית נפח איזוטרופי מתוך תמונות DICOM – פקודת dicomreadVolume המשמשת מזה כשנתיים לבניית
נפח 4-מימדי מתוך אוסף של תמונות DICOM מאפשרת כעת לייצר נפח איזוטרופי. - הצגת תמונות ונפחים – imshow מאפשרת כעת להגדיר את שיטת האינטרפולציה בה יבוצע שימוש בעת ביצוע scaling לתמונה המוצגת באמצעותה. הפונקציה מאפשרת לבחור בין אינטרפולציה בילינארית לבין nearest neighbor (האחרונה, אשר עד לא מזמן היתה גם האפשרות היחידה, הינה ברירת המחדל). לחצו כאן לפוסט שממחיש את משמעות החידוש. בנוסף, volshow, שנוספה בגרסה הקודמת ומשמשת להצגת נפחים, מאפשרת כעת שליטה על התאורה, בדומה לזו שמאפשר ה-Volume Viewer. ב-App האחרון, שמשמש להצגת מידע נפחי תלת-מימדי (בתור נפח שאפשר לסובב אותו במרחב או באמצעות אוסף של פרוסות דו-מימדיות), נוספו מספר יכולות גם כן. למשל, לחצן New Session שמאפשר למחוק את כל המידע אשר ב-App, לחצן Export שמאפשר לשמור את תצורות המצלמה והרינדור (כדי לשחזר את התצוגה – יש להעביר את ה-struct שנוצר אל פקודת volshow), ומספר Alpha maps שבהן ניתן להשתמש בעת צפיה במידע מ-CT ו-MRI.
- חיתוך תמונות של נפחים תלת-מימדיים ותמונות דו-מימדיות – התווספה הפונקציה imcrop3, שהיא המקבילה של imcrop לעולם התלת-מימדי. imcrop עצמה יכולה לקבל כעת בתור קלט חלון חיתוך שמוגדר על ידי ייחוס מרחבי (למשל – "חלון של 200×150 סביב מרכז התמונה"; לחצו לדוגמה), וכמוה גם הפונקציה החדשה.
- הצגה של תמונות שעברו Warping – הפונקציה החדשה affineOutputView מאפשרת לשלוט על אופן ההצגה של תמונות שעברו warping על ידי טרנספורמציה אפינית, על ידי יצירת אובייקט אשר ניתן להכניסו לתוך הפקודה imwarp (שמפעילה טרנספורמציה גיאומטרית רצויה על תמונה).
- תמיכה במידע קטגוריאלי – imcrop ,imresize ,imresize3 ו-imwarp מסוגלות לקבל בתור קלט מטריצת מידע קטגוריאלית ולהוציא פלטים מטיפוס מידע זה.
- הבהרת אזורים לא-מוארים בתמונה – הפונקציה החדשה imlocalbrighten פועלת לוקאלית על אזורים חשוכים בתמונה ו"מאירה" אותם.
- ענני נקודות – הפונקציה velodyneFileReader לטעינת מידע lidar מהתקני Velodyne תומכת כעת גם ב-VLS-128. שופרו ביצועיה של הפקודה pcregisterndt המבצעת רגיסטרציה של שני ענני נקודות בעזרת אלגוריתם normal-distributions transform. הורחבה התמיכה בהמרה אוטומטית של קוד MATLAB לקוד ++C/C עבור תחום ענני הנקודות, בהמשך להתקדמות המשמעותית בנושא בגרסה הקודמת (מידע מפורט – בסעיף הבא).
- תמיכה בווידאו ברזולוציה נמוכה על ידי ה-macvideo adaptor – כידוע, ה-Image Acquisition Toolbox מאפשר רכישת תמונות, וידאו וענני נקודות lidar מתוך מגוון חומרות סטנדרטיות, והכנסה שלהם לתוך MATLAB ו-Simulink בצורה נוחה. בגרסה החדשה ה-adaptor ל-Mac החל לתמוך ברכישת ווידאו ברזולוציה הנמוכה מזו של פורמט ברירת המחדל של המצלמה (ה-adaptors למערכות ההפעלה Windows ו-Linux תמכו בכך עוד לפני R2019b).
- המרה אוטומטית של קוד MATLAB לקוד ++C/C – הפונקציה imregcorr (לשערוך טרנספורמציה גיאומטרית שמיישרת שתי תמונות דו-מימדיות באמצעות phase correlation) נתמכת כעת על ידי ה-MATLAB Coder (הכלי אשר ממיר קוד MATLAB לקוד ++C/C בצורה אוטומטית). כמו כן נתמכות כעת גם פונקציות נוספות מתחום ענני הנקודות – pcregisterndt שהוזכרה בסעיף הקודם, pointCloud (אובייקט לאחסון ענן נקודות תלת-מימדי), findNearestNeighbors (למציאת שכנים קרובים לנקודה בענן נקודות), findNeighborsInRadius (למציאת שכנים בטווח של רדיוס מסוים מנקודה בענן נקודות), findPointsInROI (למציאת נקודות בתוך אזור עניין בענן נקודות), removeInvalidPoints (להסרת נקודות מענן נקודות) ו-select (לבחירת נקודות בענן נקודות).
- יצירה אוטומטית של קוד VHDL/Verilog מתוך אלגוריתמי עיבוד וידאו/תמונה וראיה ממוחשבת הכתובים ב-MATLAB – ה-Vision HDL Toolbox, אשר מספק מימושים לאלגוריתמי עיבוד וידאו/תמונה וראיה ממוחשבת המיועדים לפעול על FPGA ,ASIC או SoC, כולל כעת יכולת עיבוד מקבילי ייחודית המאפשרת עיבוד יעיל יותר של וידאו ברזולוציה גבוהה ובקצבים גבוהים (דוגמה). ממשק הזרמת הוידאו למעשה יכול כעת לעבד 4 או 8 פיקסלים בכל מחזור, והדברים אמורים הן לגבי בלוקים והן לגבי System Objects (הערה – עבור האחרונים היכולת הינה לצרכי סימולציה בלבד, כלומר עדיין לא לצרכי יצירת קוד HDL). אגב System Objects, ניתן כעת להאיץ אותם על ידי הפעלת תצורת סימולציה העושה שימוש ביצירת קוד (לחצו לדוגמה בה זה מבוצע). פרט לשני החידושים הללו נוספו לכלי יכולות אחרות, למשל – בלוק ההיסטוגרמה (לחישוב פילוג ערכי הפיקסלים באות הוידאו) תומך כעת במספר bin-ים גבוה מבעבר (עד 4096, ובכל מקרה – חזקה של 2).
ויש כמובן עוד חידושים עליהם ניתן לקרוא בתיעוד…
והכל בנוסף ליכולות השימושיות הרבות שהתווספו בגרסאות הקודמות בתחומי עיבוד התמונה והראיה הממוחשבת, אשר ניתן לראות סקירה עליהן של כשעה בעברית באמצעות לחיצה פה.
מה הלאה?
ההשקעה של MathWorks בתחומי עיבוד התמונה והראיה הממוחשבת נמשכת, וצפויים חידושים משמעותיים גם בשנת 2020. אם יש יכולות שאתם זקוקים להן והן עדיין לא נכללות בכלים – אתם מוזמנים לכתוב זאת למטה בתגובה ואשמח לבדוק עבורכם האם הן מתוכננות (ובמידה ולא – אעביר אותן לצוות הפיתוח על מנת שישקול לעבוד עליהן).
רוצים לעבור קורס מזורז בעיבוד תמונה בסביבת MATLAB ללא התחייבות, בזמנכם החופשי, ומבלי להתקין שום דבר על המחשב? אתם מוזמנים לנסות את ה-Hands On Tutorial החינמי באתר MathWorks . לא צריך רישיון ל-MATLAB בשביל לעבוד איתו, הכל מבוצע דרך הדפדפן. ה-Hands On אמור לקחת לכם כשעתיים, וניתן לעצור אותו בכל שלב ולהמשיך כאשר אתם רוצים. לכניסה – לחצו פה.
למידע בנוגע לקורס "Computer Vision עם MATLAB" של יום שלם – לחצו פה.
אתם גם מוזמנים להצטרף לאירועים הציבוריים החינמיים שעורכת חברת סיסטמטיקס – לחצו לרשימת האירועים הקרובים.
לשיחה עם מהנדס מכירות לצורך קבלת מידע נוסף ו/או תיאום פגישת הדגמה – התקשרו לטלפון 03-7660111 או שלחו מייל אליי ל- royf@systematics.co.il.