, בתו MATLAB Processing תמונה ווידאו , אלגוריתמי עיבוד אות

‫‪ Stream Processing‬בתוך ‪,MATLAB‬‬
‫האצת ביצועי אלגוריתמי עיבוד אות‪ ,‬תמונה ווידאו‬
‫ב‪ fixed-point-‬ויצירה אוטומטית של קוד ‪ C‬מתוכם‬
‫רועי פן‪ ,‬מהנדס אפליקציה‪ ,‬סיסטמטיקס בע"מ‬
‫‪[email protected]‬‬
‫משתמשי ‪ MATLAB‬יכולים לייצר בפקודה אחת קוד ‪ C‬מתוך קוד ה‪ MATLAB-‬שלהם‪ .‬אולם‬
‫למרות התמיכה ביותר מ‪ 300-‬פונקציות ואופרטורים של ‪ 110 ,MATLAB‬פונקציות מה‪-‬‬
‫‪ Fixed-Point Toolbox‬ו‪ 40-‬פונקציות מה‪ ,Signal Processing Toolbox-‬יצא לי לפגוש‬
‫במשך השנים מספר רב של משתמשים שטענו שאוסף הפונקציות והאופרטורים הזה‪,‬‬
‫המכונה ‪ ,Embedded MATLAB‬אינו מספיק עבורם‪ .‬אותם אנשים הסבירו כי באלגוריתמים‬
‫שלהם קיימות פונקציות שאינן ברשימת הפונקציות והאופרטורים המותרים בשימוש‪,‬‬
‫וכתוצאה מכך אינם יכולים להמיר בקלות את האלגוריתמים הללו לקוד ‪ C‬או להאיץ‬
‫סימולציות ‪.fixed-point‬‬
‫בדרך כלל הייתי מציע לאותם מפתחים מספר פתרונות אפשריים‪:‬‬
‫‪ .1‬יצירת גרסה קומפטבילית מבחינת ‪ Embedded MATLAB‬של הפונקציות‬
‫הבעייתיות‪ .‬למשל‪ ,‬פונקצית ‪ ,edge‬השייכת ל‪,Image Processing Toolbox-‬‬
‫ניתנת למימוש על ידי שתי פעולות קונבולוציה דו‪-‬מימדית )‪ (conv2‬של התמונה עם‬
‫הגרעין המתאים‪ ,‬כפי שניתן לראות בתמונה מספר ‪ .1‬כתיבת הגרסה כרוכה‬
‫בהשקעה מסוימת‪ ,‬אולם מדובר בהשקעה חד פעמית שניתן לעשות בה שימוש חוזר‬
‫בפרויקטים נוספים‪.‬‬
‫‪ .2‬חיפוש גרסה קומפטבילית באינטרנט‪ .‬למשל‪ ,‬אני יכול להעיד שבמקום לכתוב גרסה‬
‫קומפטבילית משלה‪ ,‬אחת מהחברות בארץ עושה בימים אלה שימוש בגרסה ל‪-‬‬
‫‪ medfilt2‬שהועלתה לאתר שיתוף הקבצים של ‪.MathWorks‬‬
‫‪ .3‬שילוב של מימוש בקוד ‪ C‬של הפונקציות הבעייתיות בתוך קוד ה‪.MATLAB-‬‬
‫‪ .4‬יצירת קוד ‪ C‬רק מתוך החלק הקומפטבילי של האלגוריתם‪.‬‬
‫‪ .5‬שימוש ב‪ Simulink-‬לפיתוח האלגוריתם‪ ,‬בו רוב אבני הבניין קומפטביליות מבחינת‬
‫יצירת קוד‪.‬‬
‫‪ .6‬המתנה עד ש‪ MathWorks-‬תרחיב את האוסף של הפונקציות והאופרטורים‬
‫הנתמכים‪.‬‬
‫תמונה ‪1‬‬
‫באשר לחלופה האחרונה‪ ,‬הרי שכל מי שהמתין להרחבת משפחת ה‪Embedded -‬‬
‫‪ MATLAB‬ישמח לדעת שהחל מגרסת ‪ R2010a‬של כלי ‪ ,MathWorks‬שיצאה בתחילת‬
‫חודש מרץ‪ ,‬ניתן לייצר קוד ‪ C‬מתוך עוד עשרות פונקציות מתחום עיבוד האות‪ ,‬התמונה‬
‫והוידאו‪ .‬הדבר מתאפשר באמצעות שימוש באובייקטי מערכת )‪ ,(System Objects‬שהם‬
‫כלים ואלגוריתמים בסביבת ‪ MATLAB‬המאפשרים עיבוד רצף )‪,(Stream Processing‬‬
‫מידול מורחב במיוחד ב‪ fixed-point-‬וכפי שצוין ‪ -‬יצירת קוד‪ .‬למעשה‪ ,‬אובייקטי מערכת‬
‫‪1‬‬
‫מייצגים אלגוריתמים מבוססי זמן ומאפשרים גישה לאותם פרמטרים‪ ,‬טיפוסים נומריים‬
‫וביצועים המוכרים מהבלוקים של ה‪ Signal Processing Blockset-‬ושל ה‪Video and -‬‬
‫‪ .Image Processing Blockset‬וכל זאת ‪ -‬ללא צורך בידע ב‪ ,Simulink-‬ועבור חלק‬
‫מהפונקציונליות – אפילו ללא צורך ברישיון ל‪ .Simulink-‬ובמספרים‪ ,‬אובייקטי מערכת‬
‫מאפשרים להשתמש במעל ‪ 80‬אלגוריתמים וכלים מה‪Signal Processing Blockset-‬‬
‫ובמעל ‪ 60‬אלגוריתמים וכלים מה‪ Video and Image Processing Blockset -‬גם בסביבת‬
‫‪ .MATLAB‬הם מוגדרים באמצעות שיטת המחלקות )‪ (classes‬של ‪ ,MATLAB‬וניתן‬
‫להשתמש בהם הן מתוך תוכניות ‪ MATLAB‬והן מתוך מודלים של ‪) Simulink‬באמצעות‬
‫בלוק ה‪.(Embedded MATLAB Function-‬‬
‫לסיכום‪ ,‬אובייקטי מערכת מאפשרים‪:‬‬
‫• שימוש משולב ב‪ MATLAB-‬ו‪ Simulink-‬לייצוג מערכות דינמיות‪ ,‬בזמן רציף ובזמן‬
‫בדיד‪.‬‬
‫• ממשק אידיאלי להתחברות לחומרה לרכישת מידע ולפיתוח אלגוריתמים המיועדים‬
‫להזרמת מידע בצורה מדויקת ויעילה‪.‬‬
‫• יכולות ‪ floating-point‬ו‪ fixed-point-‬המרחיבות את ה‪.Fixed-Point Toolbox-‬‬
‫• הרחבת יכולות יצירת הקוד מתוך משפחת ה‪ Embedded MATLAB-‬למערכות‬
‫משובצות מחשב עם אלגוריתמים מורכבים ומגוון חומרות‪-‬יעד‪.‬‬
‫‪2‬‬
‫הגדרת אובייקטי מערכת‪ ,‬מתודות שימושיות‪ ,‬עיבוד מבוסס דגימות ‪ /‬מסגרות‬
‫ניתן ליצור ‪ instance‬אחד או יותר של אובייקטי מערכת בשורת הפקודה של ‪ MATLAB‬או‬
‫בקובץ ‪ .MATLAB‬כדי ליצור ‪ instance‬של אובייקט ‪ ,FFT‬שמבצע חישוב של התמרת פוריה‬
‫מהירה )‪ ,(Fast Fourier Transform‬יש להשתמש בפקודה‪:‬‬
‫;‪hFFT = signalblks.FFT‬‬
‫כאשר ‪ hFFT‬הוא ה‪ handle-‬לאובייקט המערכת החדש ‪) FFT‬שם האובייקט(‪ ,‬ו‪-‬‬
‫‪signalblks‬הוא שם ה‪ .Signal Processing Blockset) package-‬ניתן גם להשתמש ב‪-‬‬
‫‪ video‬עבור ה‪.(Video and Image Processing Blockset-‬‬
‫הצגת רשימת ערכי ברירת המחדל של כל המאפיינים של אובייקט המערכת הנ"ל‬
‫מתאפשרת על ידי הקלדת שם ה‪ ,hFFT) handle-‬במקרה הנדון(‪ ,‬ולחילופין – ניתן לצפות‬
‫בערך של מאפיין ספציפי‪ ,‬וזאת על ידי הקלדת שם המאפיין אחרי שם ה‪) handle-‬למשל‪,‬‬
‫עבור מאפיין ה‪ TwiddleFactorComputation-‬במקרה הנדון‪ ,‬יש להקיש‬
‫‪.(hFFT.TwiddleFactorComputation‬‬
‫קל להתרשם כי מאפייני אובייקט המערכת הנדון מאפשרים שליטה דומה לזו שמאפשר בלוק‬
‫ה‪ FFT-‬של ה‪) Signal Processing Blockset-‬תמונה ‪.(2‬‬
‫תמונה ‪2‬‬
‫‪3‬‬
‫ניתן לשנות את המאפיינים של אובייקט מערכת כך שישקף את האלגוריתם שאותו רוצים‬
‫למדל )כאן המקום לציין שמאפיינים מסוימים ניתנים לשינוי אפילו במהלך ריצת האלגוריתם(‪.‬‬
‫רוב המאפיינים הינם גלויים תמיד‪ ,‬בעוד שמספר מאפיינים רלוונטים רק כאשר מאפיינים‬
‫אחרים מכילים ערכים מסויימים‪ .‬כאשר מאפיין אינו רלוונטי‪ ,‬הוא אינו מוצג‪ ,‬אך עדיין ניתן‬
‫לגשת אליו באמצעות המתודה ‪ ,get‬ולשנות אותו עם ‪) set‬תתקבל הודעת אזהרה במצב‬
‫זה(‪ .‬מספר מאפיינים הינם בעלי מספר מוגבל של ערכים‪ ,‬ועבורם ניתן להשתמש בהשלמה‬
‫עם ‪ tab‬כדי לקבוע אילו ערכים אפשריים )תמונה ‪ ,(3‬ולאחר מכן לבחור את הערך הרצוי‪.‬‬
‫תמונה ‪3‬‬
‫כל אובייקט מערכת תומך בארבע המתודות הבאות‪:‬‬
‫‪ - step‬המתודה משתמשת בקלטים של אובייקט המערכת כדי לחשב את‬
‫‪.1‬‬
‫הפלטים ולעדכן את המצבים הפנימיים שלו‪ .‬הסינטקס של מתודה זו משתנה‬
‫כתלות בסוג האובייקט שעליו היא פועלת ‪ -‬היא נטולת קלטים עבור אובייקט‬
‫מקור )‪ ,(source‬ונטולת פלטים בעת עיבוד של אובייקט מוצא )‪ .(sink‬מתודה זו‬
‫מאתחלת כל משאב נדרש‪ .‬ברגע שבו היא נקראת‪ ,‬מפרט ה‪ input-‬לא ניתן‬
‫לשינוי )מימדים‪ ,‬טיפוס מידע‪ ,‬היותו מרוכב או לא(‪ ,‬ובמהלך ביצוע‪ ,‬מתודה זו‬
‫מונעת שינוי של מאפיינים שאינם ניתנים לכיוונון‪.‬‬
‫‪ – reset‬המתודה מאתחלת את המצבים הפנימיים של אובייקט לערכי ההתחלה‬
‫‪.2‬‬
‫שלו‪.‬‬
‫‪ – getNumInputs‬המתודה מחזירה סקלר שלם המייצג את מספר הקלטים‬
‫‪.3‬‬
‫שהמתודה ‪ step‬מצפה לקבל‪.‬‬
‫‪ – getNumOutputs‬המתודה מחזירה סקלר שלם המייצג את מספר הפלטים‬
‫‪.4‬‬
‫המרבי של המתודה ‪.step‬‬
‫פרט לאלה‪ ,‬קיימות מתודות המקור והמוצא הבאות‪:‬‬
‫‪ - isDone‬עבור אובייקטי מקור בעלי יכולות "סוף מידע" )למשל‪" :‬סוף קובץ" –‬
‫•‬
‫‪ ,(EOF‬המתודה מחזירה ‪ true‬לוגי כאשר הקריאה הכי עדכנית ל‪ step-‬מגיעה‬
‫למצב של "סוף מידע"‪ .‬היא מחזירה ‪ false‬אם לא הגיע סוף המידע או אם‬
‫לאובייקט המקור אין יכולות של "סוף מידע" )למשל‪ ,‬עבור‬
‫‪.(signalblks.AudioPlayer‬‬
‫‪ - close‬המתודה משחררת משאבים שנתפסו על ידי האובייקט‪ ,‬כמו ‪handles‬‬
‫•‬
‫לקבצים‪ device drivers ,‬וזיכרון‪ ,‬וזאת לפני שהאלגוריתם מגיע לסוף הפונקציה‬
‫או הסקריפט‪.‬‬
‫כידוע‪ ,‬סיגנלים יכולים להגיע מערוץ אחד או ממספר ערוצים‪ ,‬וניתן לעבד סיגנלים בזמן בדיד‬
‫"דגימה‪-‬דגימה" או "מסגרת‪-‬מסגרת"‪ .‬אם סיגנל מעובד "דגימה‪-‬דגימה"‪ ,‬ולא כ"אוסף של‬
‫דגימות אחרי אוסף של דגימות"‪ ,‬העיבוד נקרא "עיבוד מבוסס דגימות" )ואחרת – "עיבוד‬
‫מבוסס מסגרות"(‪ .‬בעיבוד מבוסס מסגרות מעובדת מסגרת בכל רגע זמן‪ ,‬כשכל מסגרת‬
‫מכילה אוסף דגימות מערוץ בודד או ממספר ערוצים‪ .‬אובייקטי מערכת תומכים בעיבוד‬
‫מבוסס מסגרות‪ ,‬וזו גם ברירת המחדל )כיוון שעיבוד מבוסס מסגרות מאיץ את ביצועי‬
‫הסימולציה ואת הריצה בזמן‪-‬אמת(‪ .‬על מנת לבצע עיבוד מבוסס דגימות‪ ,‬יש לשנות את‬
‫מאפיין ה‪ FrameBasedProcessing-‬מ‪ true-‬ל‪.false-‬‬
‫‪4‬‬
‫עיבוד זרם מידע באמצעות אובייקטי מערכת‪ ,‬מספר משתנה של קלטים ופלטים‪ ,‬שינוי‬
‫מאפיין במהלך ריצה‬
‫אובייקטי מערכת מעבדים מקטעים של זרמי מידע בצורה איטרטיבית‪ ,‬ובכך פוטרים מהצורך‬
‫לשמור מערכי מידע גדולים בזכרון או מהצורך להמתין זמן רב לקבלת תוצאות העיבוד של‬
‫תחילת זרמי המידע‪ .‬קל לעבוד עם אלגוריתמים לעיבוד זרמי מידע בשילוב עם אובייקטי‬
‫מערכת‪ ,‬יש פחות סיכוי לשגיאות תכנות בשיטת העבודה הזו‪ ,‬והקוד הנוצר באופן הזה קריא‬
‫יותר וברור יותר‪ .‬אובייקטי מערכת מספקים רבים מהיתרונות של תכנות מונחה עצמים‪,‬‬
‫דוגמת כימוס )‪ .(encapsulation‬הם שומרים את מצבי האלגוריתמים והפרמטרים‪ ,‬ובכך‬
‫מאפשרים עיבוד של זרם רצוף של מידע ללא צורך בניהול מצבי האלגוריתם בין איטרציה‬
‫אחת של הלולאה והאיטרציה הבאה אחריה‪ .‬דוגמה לעיבוד וידאו )‪(edge detection‬‬
‫באמצעות ‪ MATLAB‬מובאת בתמונה ‪.4‬‬
‫תמונה ‪4‬‬
‫ניתן להתרשם שהחל מגרסת ‪ R2010a‬המשתמש אינו צריך לדאוג עוד לקידום הפריימים‬
‫של סיגנל הוידאו‪.‬‬
‫חלק מאובייקטי המערכת מאפשרים מספר משתנה של קלטים ופלטים‪ .‬יש צורך להגדיר מה‬
‫המספר המדויק לפני עיבוד המידע )כלומר‪ ,‬לפני לולאת העיבוד(‪ ,‬ובזמן שהאובייקט רץ לא‬
‫ניתן לשנות את גודל המידע‪ ,‬טיפוסו ואת היותו מרוכב או לא‪ .‬הדבר מאפשר לאובייקט‬
‫לשמור על מצביו ולהקצות זכרון‪ ,‬וכן מספק קוד יעיל‪.‬‬
‫אם מאפיין של אובייקט מערכת מוגדר כ‪ ,tunable-‬ניתן לשנות את ערכו במהלך ריצה‪ .‬על‬
‫מנת לדעת אם מאפיין כלשהו הינו כזה‪ ,‬ניתן להיעזר ב‪ help-‬מתוך שורת הפקודה‪ .‬לדוגמה‪,‬‬
‫כדי לדעת באילו תנאים מאפיין ה‪ Amplitude-‬של אובייקט המערכת ‪) SineWave‬מתוך ה‪-‬‬
‫‪ (signalblks package‬מוגדר כ‪ ,tunable-‬יש להשתמש בסינטקס‪:‬‬
‫‪help signalblks.SineWave.Amplitude‬‬
‫בנוסף לכך‪ ,‬עמוד העזרה )הנפתח על ידי פקודת ‪ (doc‬של כל אובייקט מערכת מפרט עבור‬
‫כל מאפיין האם הוא ניתן לשינוי במהלך ריצה‪.‬‬
‫כשמפעילים את מתודת ‪ ,step‬אובייקט המערכת מבצע אתחול ראשוני‪ .‬האתחול נועל‬
‫מאפיינים שאינם ניתנים לשינוי במהלך ריצה‪ ,‬וכן הוא נועל מימדים‪ ,‬מרוכבות וטיפוסי מידע‬
‫של הקלטים‪ .‬ניסיון לשינוי אחד מהמאפיינים שאינם ניתנים לשינוי במהלך ריצה או אחת‬
‫מהגדרות הקלט יסתיים בהודעת אזהרה של אובייקט המערכת‪.‬‬
‫‪5‬‬
‫עבודה עם ‪Embedded MATLAB‬‬
‫כפי שנכתב לעיל‪ ,‬אובייקטי מערכת מרחיבים את יכולות ‪ ,Embedded MATLAB‬תת‬
‫הקבוצה של שפת ‪ MATLAB‬אשר נתמכת ליצירת קוד יעיל למערכות ‪ Embedded‬ולהאצת‬
‫אלגוריתמים‬
‫ב‪ .fixed-point-‬מעל ‪ 50‬אובייקטי מערכת מתוך ה‪ Signal Processing Blockset-‬וקרוב ל‪-‬‬
‫‪ 40‬אובייקטי מערכת של ה‪ Video and Image Processing Blockset-‬תומכים ביצירת‬
‫קוד‪ ,‬וביניהם ‪ DCT ,EdgeDetector , FFT ,BlobAnalysis‬ו‪ .HoughTransform -‬הללו‬
‫תומכים ביצירת קוד הן מתוך ‪ ,MATLAB‬והן מתוך בלוק ה‪Embedded MATLAB -‬‬
‫‪ function‬של ‪ .Simulink‬לצורך יצירת הקוד יש לעשות שימוש ב‪Embedded MATLAB -‬‬
‫‪ ,Coder‬המופעל על ידי הפונקציה ‪ emlc‬שנכללת בכלי ‪ Real-Time Workshop‬ומאפשרת‬
‫המרה של קוד ‪ MATLAB‬ישירות לקוד ‪.C‬‬
‫ניתן להיעזר במתודת ‪ get‬באלגוריתם שמיועד להמרה לקוד ‪ ,C‬אך לא במתודה ‪ .set‬ניתן גם‬
‫לקבל מאפיינים של אובייקט באמצעות ציון ה"נקודה" )‪ ,(a.b‬אך אסור לשנותם‪ .‬מומלץ‬
‫להגדיר את אובייקטי המערכת כמשתני ‪ ,persistent‬וכן מומלץ לקרוא ל‪ constructor-‬בדיוק‬
‫פעם אחת לכל מופע של אובייקט מערכת‪ .‬פונקציה לדוגמה‪ ,‬המבצעת ‪,edge detection‬‬
‫מובאת בתמונה ‪.5‬‬
‫תמונה ‪5‬‬
‫בעבר‪ ,‬יצירת קוד לאלגוריתם המבצע ‪ edge detection‬לוידאו היתה אפשרית רק על ידי‬
‫מימושו עם הבלוק ‪ Edge‬מתוך ה‪ Video and Image Processing Blockset-‬או עם אבני‬
‫בניין קומפטביליות )תמונה ‪ .(1‬החל מגרסת ‪ ,R2010a‬ניתן לייצר קוד ‪ C‬אוטומטית מתוך‬
‫הפונקציה ‪ myedge‬המופיעה בתמונה ‪ ,5‬וזאת על ידי הגדרת קלט לדוגמה וקריאה‬
‫לפונקציה ‪ emlc‬באמצעות הסינטקס‪:‬‬
‫;))‪a=single(zeros(120,160‬‬
‫‪emlc -eg {a} myedge -report‬‬
‫ניתן לקבל קוד איכותי יותר על ידי שימוש ב‪Real-Time Workshop Embedded Coder-‬‬
‫תוך הגדרת אובייקט קונפיגורציה בו יוגדרו מאפייני הקוד אותו רוצים לקבל‪.‬‬
‫‪6‬‬
‫עבודה עם טיפוסי מידע מסוג ‪fixed-point‬‬
‫למעלה מ‪ 40-‬אובייקטי מערכת מתוך ה‪ Signal Processing Blockset-‬וקרוב ל‪40-‬‬
‫אובייקטי מערכת של ה‪ Video and Image Processing Blockset-‬תומכים בעיבוד מידע‬
‫מטיפוס ‪ ,fixed-point‬והינם בעלי מאפייני ‪ .fixed-point‬אם אובייקט המערכת תומך בעבודה‬
‫ב‪ ,fixed-point-‬הדבר מוזכר לאחר רשימת המאפיינים שמתקבלת באמצעות הפעלת ‪help‬‬
‫בשורת הפקודה וכן מופיע בעמוד העזרה של האובייקט‪.‬‬
‫למידע מורחב על מאפייני ‪ fixed-point‬של אובייקט‪ ,‬יש להשתמש בסינטקס הבא בשורת‬
‫הפקודה‪:‬‬
‫‪<packagename>.<ObjectName>.helpFixedPoint‬‬
‫למשל‪:‬‬
‫‪video.EdgeDetector.helpFixedPoint‬‬
‫ניתן להציג ולהעלים את מאפייני ה‪ fixed-point-‬של אובייקטי מערכת בשורת הפקודה‪,‬‬
‫באמצעות הפקודות הבאות )בהתאמה(‪:‬‬
‫‪matlab.system.ShowFixedPointProperties‬‬
‫‪matlab.system.HideFixedPointProperties‬‬
‫או מתוך תיבת הדיאלוג של ה‪: preferences -‬‬
‫‪File menu > Preferences > System Objects‬‬
‫שינוי ערך של מאפיין ‪ fixed-point‬מבוצע באופן הבא‪ :‬ראשית‪ ,‬נייצר רפרנס לאובייקט‬
‫המבצע ‪:threshold‬‬
‫;‪h = video.Autothresholder‬‬
‫ואז‪ ,‬נשנה‪ ,‬למשל‪ ,‬את מאפיין מוד העיגול‪:‬‬
‫;'‪h.RoundMode = 'ceiling‬‬
‫כידוע‪ Embedded MATLAB MEX ,‬היא פונקציה המקצרת את זמן הריצה של פונקציות‬
‫‪ MATLAB‬על ידי הפיכת קוד ה‪ MATLAB-‬לפונקציות ‪ C-MEX‬המכילות אופטימיזציות‬
‫להאצה אוטומטית של אלגוריתמים ב‪ fixed-point-‬למהירות של קוד ‪ C‬מקומפל‪ ,‬והכל‬
‫בסביבת ‪ .MATLAB‬למשל‪ ,‬עבור הפונקציה המופיעה בתמונה ‪ ,5‬יש להגדיר קלט לדוגמה‬
‫ואז לקרוא לפונקציה ‪ emlmex‬באמצעות הסינטקס‪:‬‬
‫;))‪a=single(zeros(120,160‬‬
‫‪emlmex -eg {a} myedge‬‬
‫יש לזכור שעבודה עם טיפוסי מידע מסוג ‪ fixed-point‬בסביבת ‪ MATLAB‬מצריכה את‬
‫ה‪.Fixed- Point Toolbox-‬‬
‫מידע נוסף‬
‫רשימה מלאה של אובייקטי המערכת נמצאת בתיעוד של ה‪Signal Processing Blockset-‬‬
‫)תמונה ‪ (6‬ושל ה‪ . Video and Image Processing Blockset-‬עבור כל אובייקט מערכת‪,‬‬
‫התיעוד מכיל מידע בדבר הפונקציונליות של אובייקט המערכת‪ ,‬ברירות המחדל לשימוש‬
‫באובייקט‪ ,‬שימוש באובייקט באמצעות סינטקסים שונים‪ ,‬רשימת שמות של מתודות )כל‬
‫שורה מהווה בעצמה קישור למידע נוסף(‪ ,‬ערכים אפשריים של מאפייני האובייקט ומתי ניתן‬
‫לשלוט עליהם‪ ,‬קישור לרשימת מאפייני ‪) fixed-point‬במידה ואובייקט המערכת תומך‬
‫בפעולות ‪ ,(fixed-point‬דוגמה לשימוש באובייקט המערכת וקישורים רלוונטים‪.‬‬
‫מהנדסי האפליקציה של סיסטמטיקס בע"מ‪ ,‬ואני ביניהם‪ ,‬ישמחו לענות על כל שאלה בנוגע‬
‫לחידוש המשמעותי הזה בגרסת ‪ ,R2010a‬שאמור להיות שימושי עבור רבים ממשתמשי‬
‫‪ MATLAB‬בעולם ובארץ‪ ,‬וביניהם כאלה העוסקים בתכנון מערכות אודיו‪ ,‬ברכישת מידע‪,‬‬
‫בפיתוח טלפונים ניידים‪ ,‬קוצבי לב או מכשירי שמיעה‪ ,‬באיתור אובייקטים ועקיבה אחריהם‪,‬‬
‫בראיית ‪ stereo‬ובסופר‪-‬רזולוציה‪.‬‬
‫תמונה ‪6‬‬
‫‪7‬‬
8