ניסוי בעיבוד וניתוח תמונות (ענ;quot&ת)

‫בס"ד‬
‫הטכניון – מכון טכנולוגי לישראל‬
‫הפקולטה להנדסת חשמל‬
‫המעבדה לראייה ומדעי התמונה‬
‫מעבדה בהנדסת חשמל ‪3 ,2‬‬
‫ניסוי בעיבוד וניתוח תמונות )ענ"ת(‬
‫‪http://visl.technion.ac.il/exp2.htm‬‬
‫סמסטר אביב תשע"ג‬
‫עדכון אחרון )‪ 12‬פברואר ‪ :(2013‬אורי בריט‬
‫מבוא‬
‫חוברת זו מתארת ניסוי בסיסי בתחום עיבוד וניתוח תמונה‪ ,‬תחת החסות של המעבדה לראייה ומדעי התמונה‬
‫)‪ .(VISL‬הניסוי מורכב משורה של תרגילים קצרים‪ .‬בחלק מהתרגילים נדרש לכתוב קוד ‪ ,MATLAB‬בחלק אחר‬
‫יוצגו משטחי עבודה מוכנים‪ ,‬אותם יש להפעיל‪ ,‬לשנות מספר פרמטרים‪ ,‬לראות את השפעתם‪ ,‬להסביר את‬
‫התוצאה ולהסיק מסקנות‪.‬‬
‫דרישות הקדם לניסוי‪ :‬הקורס "אותות ומערכות" או קורס מקביל וכן הכרה כללית של תוכנת ‪.MATLAB‬‬
‫על מנת למנוע אי נעימויות‪ ,‬מוזכר בזה שניסוי זה נועד אך ורק לסטודנטים ללא רקע בעיבוד תמונה‪ .‬סטודנט‬
‫אשר עבר או לומד במקביל קורס ענ"ת או קורס מקביל בפקולטה אחרת‪ ,‬לא יקבל קרדיט עבור הניסוי‪ ,‬אלא‬
‫במקרים חריגים אם הסטודנט קיבל אישור מראש להירשם לניסוי‪.‬‬
‫מבנה המעבדה‬
‫המעבדה כוללת ‪ 2‬פגישות )חלק א' וחלק ב'(‪ ,‬כל חלק נמשך ‪ 4‬שעות‪.‬‬
‫חלק א'‬
‫בחינה בעל פה על דו"ח מכין חלק א' )~‪ 10‬דקות(‬
‫ניסוי ‪ – 1‬אינפורמציה על תמונה )~‪ 30‬דקות(‬
‫ניסוי ‪ – 2‬מתיחת היסטגרמה‪ ,‬שינוי בהירות וניגודיות )~‪ 30‬דקות(‬
‫ניסוי ‪ – 3‬סגמנטציה של תמונה )~‪ 30‬דקות(‬
‫ניסוי ‪ – 4‬סינון רעש ושחזור תמונות )~‪ 30‬דקות(‬
‫ניסוי ‪ – 5‬גילוי שפות )~‪ 30‬דקות(‬
‫ניסוי ‪ – 6‬פעולות מורפולוגיות )~‪ 30‬דקות(‬
‫סיכום הניסוי חלק א' )~‪ 15‬דקות(‬
‫חלק ב'‬
‫בחינה בעל פה על דו"ח מכין חלק ב' )~‪ 10‬דקות(‬
‫ניסוי ‪ – 7‬מודל צבע )~‪ 30‬דקות(‬
‫ניסוי ‪ – 8‬מיצוי מאפיינים )~‪ 30‬דקות(‬
‫ניסוי ‪ – 9‬משימות מורכבות )~‪ 120‬דקות(‬
‫סיכום הניסוי חלק ב' )~‪ 15‬דקות(‬
‫הציון לניסוי זה ייקבע על פי המפתח הבא‪:‬‬
‫‪ - 20%‬הכנה )נכונות הדו"חות המכינים(‬
‫‪ - 45%‬ביצוע )שלמות ואיכות ביצוע התרגילים בניסוי עצמו‪ ,‬עמידה בזמני הניסוי(‬
‫‪ - 10%‬הערכה )התרשמות המדריך מהבנת החומר ותשובות לשאלות מסכמות שיישאלו בסוף הניסוי(‬
‫‪ - 25%‬סיכום )דו"ח הכולל תשובות לכל השאלות הנמצאות בגוף הניסוי‪ ,‬הסברים ומסקנות(‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪1‬‬
‫הנחיות כלליות‬
‫‪‬‬
‫יש להגיע למעבדה מוכנים על פי משימות ההכנה של כל תרגיל – על פי חוברת זו‪ .‬את הדו"ח המכין יש‬
‫להגיש למדריך בצורה אלקטרונית דרך מערכת ‪ LABADMIN‬בלבד לפני כל פגישה והוא גם ישמש כעזר‬
‫לביצוע הניסוי‪ .‬בתחילת הניסוי המדריך יערוך בחינה בעל פה על תוכן הדו"ח המכין‪.‬‬
‫‪‬‬
‫כללית יש לבצע את הסעיפים של הניסוי על פי חוברת זו – ייתכנו שינויים על פי הנחיות המדריך!‬
‫‪‬‬
‫בניסוי זה אין צורך להגיש קבצי קוד‪ .‬עם זאת‪ ,‬הגשת קבצי קוד יכולה רק לשפר את ציון הניסוי ולא‬
‫לגרוע ממנו‪ .‬אם הינכם מעוניינים להגיש את קבצי הקוד שלכם יש לעשות זאת בעזרת קובץ ‪ ZIP‬בלבד‬
‫בצורה אלקטרונית דרך מערכת ‪ LABADMIN‬בלבד בחלק המתייחס לאיכות ביצוע הניסוי‪.‬‬
‫‪‬‬
‫שימו לב‪ :‬חלק משאלות הדו"ח המסכם מתייחסות לתוצאות שמתקבלות בזמן הניסוי‪ .‬לכן‪ ,‬ודאו שעניתם‬
‫עליהן בטרם תעברו לניסוי הבא‪ .‬עם זאת‪ ,‬השקיעו זמן בניסוי עצמו ופחות בכתיבת הדו"ח המסכם!‬
‫השתדלו להוסיף תמונות לדו"ח המסכם היכן שניתן‪.‬‬
‫‪‬‬
‫אחרי ביצוע הניסוי יש להגיש דו"ח מסכם – עד שבועיים לאחר הפגישה השנייה – למדריך בצורה‬
‫אלקטרונית דרך מערכת ‪ LABADMIN‬בלבד‪.‬‬
‫‪‬‬
‫לתשומת ליבכם‪ :‬הציון ייפגע למאחרים בהגשת הדו"ח ללא סיבה מוצדקת!‬
‫מקורות להכנת המעבדה‬
‫‪‬‬
‫כל המידע שדרוש להכנת הניסוי כולל חוברת זו נמצא באתר הניסוי‪:‬‬
‫‪http://visl.technion.ac.il/exp2.htm‬‬
‫)היכן שנדרשת סיסמא השתמשו ב‪(user=anat, password=anat :-‬‬
‫אתר זה כולל בנוסף להוראות ועדכונים גם קישורים עם הסברים על כל הנושאים שבניסוי זה‪.‬‬
‫‪‬‬
‫בנוסף ניתן להשתמש במסכי ‪ help‬על פונקציות ‪ MATLAB‬אותם ניתן למצוא גם בכתובת‪:‬‬
‫‪http://www.mathworks.com/‬‬
‫‪‬‬
‫הדרכה כללית ב‪: MATLAB -‬‬
‫‪http://www.ee.technion.ac.il/courses/matlab‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪2‬‬
‫משימות הכנה ושאלות דו"ח מכין – חלק א'‬
‫תרגיל הכנה ‪ -‬הצגת תמונה ב‪MATLAB-‬‬
‫קראו ב‪ help-‬של ‪ MATLAB‬את המבוא ל‪.image processing toolbox -‬‬
‫איך מיוצגת תמונה ב‪ ?MATLAB-‬מה ההבדל בין סוגי התמונות ‪?indexed, grayscale, colored, binary‬‬
‫קראו ב‪ help-‬של ‪ MATLAB‬על הפונקציות הבאות‪ ,‬שימו לב לפרמטרים השונים של כל אחת מהן‪:‬‬
‫‪meshgrid, figure, impixelinfo, imshow, imfinfo, imread, imwrite‬‬
‫צרו תמונה על‪-‬ידי הגדרת מערך דו‪-‬מימדי ומילויו בערכים‪:‬‬
‫;)‪im=zeros(127,127‬‬
‫‪for x=1:127‬‬
‫‪for y=1:127‬‬
‫;)‪im(y,x)=(128-x+y‬‬
‫;‪end‬‬
‫;‪end‬‬
‫;)][‪imshow(im,‬‬
‫כל איבר במערך הדו‪-‬מימדי מהווה נקודה בתמונה‪ .‬נקודה כזו נקראת פיקסל )‪.(pixel - picture element‬‬
‫כעת‪ ,‬צרו את התמונה ללא לולאה‪ ,‬אלא בעזרת הפונקציה ‪:meshgrid‬‬
‫;)‪[X Y]=meshgrid(1:1:127‬‬
‫;)‪im=(128-X+Y‬‬
‫;)][‪imshow(im,‬‬
‫הביטו בתוכן המטריצות ‪ X‬ו‪.Y-‬‬
‫שימו לב‪,‬תוכנת ‪ MATLAB‬חזקה בחישובים מטריציים‪ ,‬אך חלשה בביצוע לולאות‪ .‬בעזרת פונקצית ‪meshgrid‬‬
‫ניתן לבצע את החישוב הנ"ל ללא לולאות‪ .‬בתרגילים המופיעים בניסוי המעיטו להשתמש בלולאות!‬
‫עתה הריצו את הקוד הבא‪:‬‬
‫;‪figure(1);imshow(im,[0 127]); impixelinfo‬‬
‫;‪figure(2);imshow(im,[50 150]);impixelinfo‬‬
‫;‪figure(3);imshow(im,[150 255]); impixelinfo‬‬
‫;‪figure(4);imshow(im,[]); impixelinfo‬‬
‫העבירו את הסמן מעל כל תמונה‪.‬‬
‫הוסיפו את התמונות המתקבלות לדו"ח‪ .‬הסבירו מה מהות השוני בין התמונות )התייחסו למושג 'תחום‬
‫דינאמי'(‪ .‬האם התמונות שונות בערכי הפיקסלים? מה תפקידה של הפקודה ‪?impixelinfo‬‬
‫ניסוי ‪ – 1‬אינפורמציה על תמונה‬
‫קראו את ה‪ MATLAB Help-‬על הפונקציה ‪ .impixelinfo‬הסבירו מדוע פונקציה זו שימושית‪.‬‬
‫קראו את ה‪ MATLAB Help-‬על הפונקציה ‪ .imhist‬מה עושה פקודה זו? הבינו מהי היסטוגרמה של תמונה‪,‬‬
‫מומלץ לעיין באחד המקורות באתר הניסוי )למשל בחוברת של ‪ Alasdair McAndrew‬פרק ‪.(4.3‬‬
‫חשבו ורשמו‪ ,‬מה ניתן ללמוד מהיסטוגרמה של תמונה?‬
‫ניסוי ‪ – 2‬מתיחת היסטגרמה‪ ,‬שינוי בהירות וניגודיות‬
‫קראו את הסבר הניסוי בחוברת‪ .‬הבינו לשם מה מבצעים מתיחת היסטוגרמה?‬
‫ציירו את פונקצית ההמרה שמבצעת מתיחת היסטוגרמה – מוצא לעומת כניסה‪ .‬ציר ‪ x‬יתאר את ערך הפיקסל‬
‫לפני ההמרה‪ ,‬וציר ‪ y‬את הערך אחריה‪.‬‬
‫שרטטו שתי היסטוגרמות‪ .‬האחת של תמונה לפני שעברה המרה‪ ,‬והשניה – אחריה‪ .‬תארו במילים את הקשר‬
‫בין ההיסטוגרמות‪ .‬האם הפעולה לינארית‪ ,‬באופן כללי?‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪3‬‬
‫ניסוי ‪ - 3‬סגמנטציה של תמונה‬
‫קראו את הסבר הניסוי בחוברת ואת ה‪ MATLAB Help-‬של הפקודה ‪ .bwconncomp‬מה תפקידה? מהם‬
‫הפרמטרים? מהו המוצא? מהי קישוריות ‪ ?4‬מהי קישוריות ‪ ?8‬הסבירו והדגימו בציור‪.‬‬
‫תארו את השינוי ברמות ההארה של תמונה העוברת חיתוך בסף ע"י גרפים‪ :‬הגרף הראשון יכיל את ההארה‬
‫ההתחלית )ציר ‪ (x‬לעומת הסופית )ציר ‪ .(y‬הגרפים השני והשלישי יכילו את ההיסטוגרמה של התמונה‬
‫המקורית‪ ,‬ושל התמונה הסופית )שרטוטים איכותיים(‪.‬‬
‫באיזה תהליכים לדעתכם נדרשת סגמנטציה? תנו מספר דוגמאות‪.‬‬
‫ניסוי ‪ – 4‬סינון רעש ושחזור תמונה‬
‫ישנם סוגים רבים של רעש‪ ,‬למשל רעש גאוסי לבן‪ ,‬רעש ‪ shot-noise‬או ‪ ,impulse‬רעש מחזורי וכו'‪.‬‬
‫העזרו ב ‪ Help‬של הפונקציה ‪ – imnoise‬מהם סוגי הרעש אותם ניתן להוסיף לתמונה? תארו את סוגי הרעש‬
‫והפרמטרים המתאימים לכל אחד‪.‬‬
‫מסנן ממצע )‪ :(Averaging‬תארו את דרך פעולתו‪ .‬מהם חסרונותיו?‬
‫מסנן חציון )‪ :(Median‬תארו את דרך פעולתו‪ .‬מהם חסרונותיו?‬
‫קראו את ה‪ help -‬של הפונקציה ‪ .imfilter‬הסבירו מה עושה פונקציה זו‪.‬‬
‫קראו את ה‪ help -‬של הפונקציה ‪ .deconvlucy‬מה עושה פונקציה זו? מהם הפרמטרים ההכרחיים?‬
‫מהן הסיבות האפשריות לטשטוש בתמונה? תנו דוגמא למטריצת טשטוש דו‪-‬ממדית ‪.3x3‬‬
‫הפעילו את מטריצת הטשטוש שלכם על תמונה לבחירתכם וצרפו את התמונות לפני ואחרי לדו"ח‪.‬‬
‫ניסוי ‪ – 5‬גילוי שפות‬
‫קראו את ה ‪ Help‬על הפקודה ‪ .Edge‬מה המוצא )‪ (output‬של הפונקציה? אילו סוגי אופרטורים היא מכירה?‬
‫)ניתן להריץ את הקובץ ‪) edgedemo.m‬להורדה מאתר הניסוי( ולשחק עם הפרמטרים השונים כדי להתרשם‬
‫מפעולת פקודת ‪(.edge‬‬
‫אופרטורים לגילוי שפות הינם בד"כ וריאציה של נגזרת‪ .‬תארו את אופן פעולת האופרטורים הבאים‪Sobel, :‬‬
‫‪Laplacian of Gaussian, Canny‬‬
‫אלו נגזרות מקורבות ע"י אופרטור ‪ ?Sobel‬מה ההבדלים העיקריים בין השיטות השונות?‬
‫באיזה תהליכים משתמשים בגילוי שפות? תנו מספר דוגמאות‪.‬‬
‫ניסוי ‪ – 6‬פעולות מורפולוגיות‬
‫קראו את ההסבר בתחילת ניסוי ‪ 6‬על פעולות מורפולוגיות ועיינו בחומר הרקע באתר הניסוי וב‪MATLAB -‬‬
‫‪ Help‬של הפקודות ‪.strel, imerode, imdilate‬‬
‫הסבירו באופן פשטני את פעולתן של הפקודות‪ .‬מה לדעתכם ניתן לבצע עם פעולות אלו?‬
‫האם הפעולות הופכיות? הסבירו בקצרה כיצד ניתן לממש פעולות אלו בכלים שכבר למדתם‪ .‬מה חשיבותו של‬
‫אוביקט הבניה וגודלו?‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪4‬‬
‫משימות הכנה ושאלות דו"ח מכין – חלק ב'‬
‫ניסוי ‪ – 7‬מודל צבע‬
‫כמה מימדים דרושים למרחב צבע במקרה הכללי? הסבירו מדוע‪.‬‬
‫קראו על מרחב ‪ YIQ‬והסבירו מה משמעות כל ערוץ בו‪ .‬פרטו!‬
‫מה חשיבותה של מערכת צבעים זו והיכן משתמשים בה?‬
‫הסבירו מהו מקור אור מונוכרומטי ותנו דוגמה לשימוש בו‪.‬‬
‫ציינו לפחות ‪ 3‬מרחבים שונים לייצוג צבע מלבד ‪ ,YIQ‬ולאילו צרכים משתמשים בהן‪.‬‬
‫ניסוי ‪ – 8‬מיצוי מאפיינים‬
‫קראו את ה‪ help-‬של הפקודה ‪ regionprops‬שמיועדת לחילוץ מידע על הסגמנטים השונים בתמונה‪.‬‬
‫הסבירו את משמעות המאפיינים הבאים‪:‬‬
‫‪Perimeter, MajorAxisLength, Eccentricity, Orientation, FilledImage, BoundingBox, EulerNumber,‬‬
‫‪Solidity.‬‬
‫מה לדעתכם ניתן לבצע עם נתונים מסוג זה? איזה מהמאפיינים הנ"ל יוצר דופן ובמה?‬
‫מה הקשר בין המומנט מסדר שני של האליפסה החוסמת לבין צורת האובייקטים אותם אנו מנסים לאפיין‬
‫בעזרת פונקצית ‪?regionprops‬‬
‫מהו "סגור קמור" של צורה? למה הוא יכול לשמש?‬
‫ניסוי ‪ – 9‬משימות מורכבות‬
‫קראו את ה‪ help -‬של הפונקציה ‪ .imfill‬מה עושה פונקציה זו? מהם הפרמטרים שלה? באיזה דרך לדעתכם‬
‫מבצעת הפונקציה את הנדרש ממנה?‬
‫הציעו שני אלגוריתמים פשוטים שונים שמטרתם למלא בצבע לבן ריבוע )ראו תמונה( הנמצא על פני רקע‬
‫שחור‪ ,‬שניהם ללא שימוש בפונקציה ‪.imfill‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪5‬‬
‫חלק א'‬
‫ניסוי ‪ - 1‬אינפורמציה על תמונה‬
‫מטרת הניסוי‬
‫הכרת שיטות לקבלת אינפורמציה על תמונה – ערכי מינימום ומקסימום של התמונה‪ ,‬והתפלגות רמות האפור‪.‬‬
‫הסבר הניסוי‬
‫פעמים רבות לפני ביצוע עיבודים שונים על תמונה נרצה לקבל אינפורמציה )סטטיסטית( אודותיה‪ .‬להלן מספר‬
‫נקודות כדוגמא לאינפורמציה בעלת תועלת‪:‬‬
‫‪ ‬מימדים )רוחב‪ ,‬גובה‪ ,‬עומק‪ ,‬מספר מרכיבים‪ ,‬זמן – אם מדובר בתמונה מתוך סרט(‪.‬‬
‫‪ ‬סוג המידע של פיקסלים )או אלמנטים אחרים( )‪.(bit, byte, integer,complex,....‬‬
‫‪ ‬פורמט קידוד התמונה )הפורמט בו נשמר הקובץ‪.(tiff, gif,jpeg,...‬‬
‫‪ ‬טבלת צבעים‪.‬‬
‫‪ ‬מרחב הצבע )‪.(RGB, CMY, HSI, ...‬‬
‫‪ ‬מסכה על התמונה )‪.(validity mask‬‬
‫‪ ‬ערך ממוצע של ההארה‪ ,‬שונות )וריאנס( וכו'‪.‬‬
‫‪ ‬ערכי מקסימום ומינימום‪ ,‬ומיקומם‪.‬‬
‫‪ ‬התפלגות ערכים )היסטוגרמה(‪.‬‬
‫בניסוי זה נפיק מידע סטטיסטי על התמונה )פילוג רמות ההארה(‪ ,‬ונציג אותו בצורות שונות‪ .‬בסיום‪ ,‬נציג את‬
‫פרופיל רמות האפור של שורה אחת מהתמונה‪.‬‬
‫בניסוי יעשה שימוש בפונקציה ‪ randn‬המספקת מספרים אקראיים לפי פילוג גאוסי )תוחלת אפס‪ ,‬סטיית תקן ‪.(1‬‬
‫עבור סטיית תקן שונה יש להכפיל המספרים בסטיית התקן הרצויה‪ .‬תמונות המיוצגות ע"י ‪ 8‬ביטים )‪255 – 0‬‬
‫רמות(‪ ,‬יש להמיר למשתנה ‪ double‬לעשיית חישובים )חיבור למשל( ולהמיר חזרה ל‪ .uint8 -‬מתבצעת קטימה‬
‫אוטומטית ל‪ 0-‬או ‪ 255‬של ערכים נמוכים או גבוהים מדי )בהתאמה(‪.‬‬
‫תאור הניסוי‬
‫א‪.‬‬
‫לכבוד הנשיא השחור הראשון בארה"ב צבעו את הבית הלבן בשחור ‪.‬‬
‫‪‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪6‬‬
‫טענו את התמונה ‪ white-house.jpg‬והציגו אותה‪.‬‬
‫;)'‪wh=imread('white-house.jpg‬‬
‫;)‪figure(1);imshow(wh‬‬
‫הריצו את הפקודה‪:‬‬
‫)'‪imfinfo('white-house.jpg‬‬
‫עיינו במידע המוצג והוסיפו אותו לדו"ח הסופי‪.‬‬
‫משימה‪ :‬מצאו את הפקסלים השייכים לבית הלבן והפכו אותם לשחורים‪.‬‬
‫רמז‪:‬‬
‫‪ .1‬הפעילו את הפונקציה ‪ impixelinfo‬וטיילו עם העכבר בתמונה‪.‬‬
‫‪ .2‬על מנת להפוך את כל הפיקסלים בעלי הערך ‪ X‬לערך חדש ‪ Y‬השתמשו בביטוי‪:‬‬
‫שמרו את התוצאה לדו"ח הסופי‪ .‬האם התמונה נראית טבעית? אם לא‪ ,‬מדוע?‬
‫ב‪.‬‬
‫‪‬‬
‫;‪im(im==X)=Y‬‬
‫טענו את התמונה ‪ cameraman.tif‬והציגו את ההסטוגרמה שלה‪.‬‬
‫;)'‪im=imread('cameraman.tif‬‬
‫)התמונה כלולה ב‪(MATLAB-‬‬
‫;)‪figure(3);imhist(im‬‬
‫עתה צרו עותק רועש של התמונה ע"י הוספת רעש גאוסי לבן לתמונה המקורית עם סטית תקן ‪.20‬‬
‫;‪std_n=20‬‬
‫;))‪noise=std_n*randn(size(im‬‬
‫;)‪im _n=uint8(double(im)+noise‬‬
‫הציגו את התמונה המורעשת ואת ההיסטוגרמה שלה‪.‬‬
‫הסבירו את ההבדל בין ההסטוגרמות‪ .‬ממה לדעתכם נובע ההבדל?‬
‫ג‪.‬‬
‫‪‬‬
‫;)‪figure(4);imshow(im _n‬‬
‫;)‪figure(5);imhist(im_n‬‬
‫המשיכו לעבוד עם התמונה האחרונה ללא הרעש‪ .‬השתמשו בפונקציות ‪ mean, max, min‬על מנת‬
‫למצוא את הערכים הקיצוניים והערך הממוצע של כל הפיקסלים בתמונה )המקורית(‪ .‬דוגמא‪:‬‬
‫))‪minvalue=min(min(im‬‬
‫מהי רמת ההארה הנמוכה ביותר בתמונה )ערך הפיקסל הנמוך ביותר(? מהו הערך הגבוה ביותר? מהו‬
‫הערך הממוצע? האם התמונה "מנצלת" את כל תחום ההארה המותר?‬
‫ד‪.‬‬
‫‪‬‬
‫ה‪.‬‬
‫‪‬‬
‫על מנת לחשב כמה פיקסלים הם בעלי ערך ‪ ,N‬השתמשו בביטוי‪:‬‬
‫))‪sum(sum(im==N‬‬
‫מה מספר הפיקסלים בעלי ערך ‪?7‬‬
‫על מנת לבודד את השורה ה‪ N-‬של התמונה השתמשו בביטוי‪:‬‬
‫)‪L=im(N,:‬‬
‫הציגו בעזרת פקודת ‪ plot‬את השורה ה‪ 150-‬של התמונה‪.‬‬
‫האם אתם מצליחים למצוא את הקורלציה בין התרשים הדו‪-‬ממדי לשורה המתאימה בתמונה?‬
‫שמרו את הגרף שהתקבל לדו"ח המסכם והסבירו בפירוט מה רואים‪.‬‬
‫שאלות דו"ח מסכם‬
‫יש לענות בכתב על כל השאלות המסומנות ‪ ‬לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex1.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪7‬‬
‫ניסוי ‪ – 2‬מתיחת היסטוגרמה ושינויי בהירות וניגודיות‬
‫מטרת הניסוי‬
‫הבנת השפעת שינויי בהירות וניגודיות על התמונה ועל ההיסטוגרמה של התמונה‪ ,‬שימושים למתיחת‬
‫היסטוגרמה‪.‬‬
‫הסבר הניסוי‬
‫בניסוי זה ייעשה שימוש בכלי אינטראקטיבי של ‪ MATLAB‬שמאפשר לשנות את הערכים של הבהירות ושל‬
‫הניגודיות של תמונה ולראות את ההשפעה על ההיסטוגרמה של התמונה‪.‬‬
‫במתיחת היסטוגרמה קובעים שני ערכים‪ :‬נקודת האמצע )‪ (level‬ורוחב התחום )‪ .(window‬כלומר‪ ,‬כל פיקסל‬
‫שערכו גדול מ‪ (Level+Window/2) -‬ממופה לערך המקסימלי )‪ ;(1‬ערכי ביניים ממופים באופן לינארי; ערכים‬
‫הקטנים מ‪ (Level-Window/2) -‬ממופים לערך המינימלי )‪.(0‬‬
‫תאור הניסוי‬
‫א‪.‬‬
‫פיתחו והריצו את הקובץ ‪ imadjdemo.m‬על מנת להגיע למסך האינטראקטיבי של ה‪Intensity DEMO-‬‬
‫‪ .Adjustment and Histogram Equalization‬את ה‪ demo-‬ניתן להוריד מן האתר של הניסוי ) ‪user=anat,‬‬
‫‪.(passwd=anat‬‬
‫ודאו כי הפעולה על התמונה היא ‪) Intensity Adjustment‬ולא ‪ .(Histogram Equalization‬מצד שמאל‬
‫רואים את התמונה המקורית‪ ,‬ומתחתיה את ההיסטוגרמה שלה‪ .‬לידה )מימינה( מוצגת התמונה לאחר‬
‫מתיחת ההיסטוגרמה ומתחתיה – ההיסטוגרמה‪ .‬בחלק הימיני של החלון מוצג גרף המתאר את פעולת‬
‫ההמרה שעובר כל פיקסל )ערך סופי לעומת ערך תחילי(‪ .‬בגרף מופיעות שלוש נקודות עזר בצבעים‬
‫שונים )אדום‪ ,‬צהוב וירוק(‪.‬‬
‫ב‪.‬‬
‫‪‬‬
‫טענו את התמונה ‪.circuit‬‬
‫שנו את הערכים של ‪ brightness‬ושל ‪ contrast‬ובמידת הצורך את הנקודות בגרף‪ ,‬עד שתתקבל תוצאה‬
‫של רקע שכולו בגוון לבן ואילו פיקסלים בעלי גוון אפור הכהים ביותר יהפכו לשחור אחיד )ראה‬
‫דוגמא(‪.‬‬
‫שמרו את החלון עם התוצאה הנכונה )כולל ההיסטוגרמה והגרף( לדו"ח המסכם והסבירו‪.‬‬
‫ג‪.‬‬
‫‪‬‬
‫עתה טענו את התמונה ‪.pout‬‬
‫הביטו בהיסטוגרמה‪ ,‬האם כל התחום של ערכי האפור מנוצל?‬
‫שנו את הערכים של ‪ brightness‬ושל ‪ contrast‬ובמידת הצורך את הנקודות בגרף‪ ,‬עד שתתקבל תמונה‬
‫משופרת אשר מבליטה את השינויים בין הגוונים הקיימים בתמונה )ראה דוגמא(‪.‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪8‬‬
‫שמרו את החלון עם התוצאה הנכונה )כולל ההיסטוגרמה והגרף( לדו"ח המסכם והסבירו‪.‬‬
‫ד‪.‬‬
‫‪‬‬
‫ה‪.‬‬
‫‪‬‬
‫ו‪.‬‬
‫‪‬‬
‫עתה טענו את התמונה ‪.tire‬‬
‫השוו את הפעולות ‪ intensity adjustment‬ו‪ histogram equalization -‬על התמונה הנ"ל‪ .‬שנו את‬
‫הפרמטרים לקבלת תוצאה מיטבית לטעמכם‪.‬‬
‫הסבירו את ההבדל בין שתי הפעולות באופן כללי‪ .‬איזו פעולה משפרת את התוצאה ומדוע?‬
‫עתה נבצע המרה לא לינארית בערכי ההארה‪ .‬הפעולה שנבצע הינה שינוי ערך הגמא של התמונה‪.‬‬
‫)שימו לב‪ ,‬אנו עדיין עובדים עם התמונה ‪ .(tire‬לחצו על הכפתורים ‪) -Gamma +Gamma‬ניתן לשנות גם‬
‫על‪-‬ידי הזזת הנקודה הצהובה למעלה או למטה(‪ .‬מהי ההשפעה על ההיסטוגרמה? תארו ושרטטו‪ .‬מהי‬
‫ההשפעה על התמונה? פרטו‪ .‬איזה ערך גמא מניב את התמונה הברורה ביותר?‬
‫טענו את התמונה ‪) liftingbody.png‬מחוץ ל‪ (demo-‬והפעילו עליו את הפונקציה ‪.histeq‬‬
‫הציגו את התמונה ואת היסטוגרמה שלה לפני ואחרי ביצוע הפונקציה‪.‬‬
‫פרטו והסבירו את ההבדלים בין התמונות‪.‬‬
‫האם לדעתכם התמונה החדשה משופרת או לא? האם הפעולה ‪ histeq‬תמיד משפרת את התמונה?‬
‫שאלות דו"ח מסכם‬
‫יש לענות בכתב על כל השאלות המסומנות ‪ ‬לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex2.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪9‬‬
‫ניסוי ‪ – 3‬סגמנטציה של תמונה )חיתוך בסף‪( labeling ,‬‬
‫מטרת הניסוי‬
‫ביצוע סגמנטציה של תמונה בעזרת חיתוך בסף‪.‬‬
‫הסבר הניסוי‬
‫סגמנטציה של תמונה הוא תהליך של חלוקת התמונה לאזורים שונים‪ .‬תהליך זה‪ ,‬כמובן‪ ,‬תלוי בבעיה‪.‬‬
‫שיטה פשוטה ומקובלת לביצוע סגמנטציה היא בעזרת חיתוך בסף של התמונה‪ .‬בפעולה זו ערכי פיקסלים‬
‫מתחת לסף מסוים מקבלים ערך אחד )למשל ‪ = 0‬שחור(‪ ,‬בעוד הערכים הגבוהים מהסף מקבלים ערך אחר‬
‫)למשל ‪ = 1‬לבן(‪ .‬בניסוי זה נבצע סגמנטציה של תמונה בעלת אובייקטים אותם רוצים לבודד מן הרקע )כגון‬
‫גרגרי אורז(‪ .‬לאחר מכן נבצע סימון אובייקטים‪ ,‬תהליך שנקרא ‪ . labeling‬בתהליך זה מסמנים כל אובייקט‬
‫בתווית זיהוי ונציג כל אובייקט בצבע שונה לצורך הפרדה ברורה מבחינה וויזואלית‪.‬‬
‫תאור הניסוי‬
‫א‪.‬‬
‫‪‬‬
‫ב‪.‬‬
‫‪‬‬
‫ג‪.‬‬
‫‪‬‬
‫ד‪.‬‬
‫‪‬‬
‫טענו והציגו את התמונה ‪ rice.png‬בתמונה‪.‬‬
‫נסו להעריך – אילו ערכי סף שנפעיל על התמונות יפרידו את גרגרי האורז מן הרקע? )העזרו ב‪-‬‬
‫‪ impixelinfo‬וב‪(. imhist -‬‬
‫בצעו חיתוך בסף בערכים שונים )דוגמה לחיתוך בסף‪ . im>=74 :‬פקודה זו מחזירה מטריצה שבה‬
‫האיברים הם ‪ 0‬או ‪ ,1‬בהתאם לתנאי( והציגו את התוצאות להשוואה )ניתן להשתמש ב‪ subplot -‬כדי‬
‫להציג מספר תמונות ב‪ figure -‬אחד(‪.‬‬
‫מהו אחוז הפיקסלים המוארים בכל תמונה )רמז ‪ -‬אפשר לספור את הפיקסלים בעזרת ‪?(sum‬‬
‫הציגו את התמונות‪ ,‬תארו והסבירו את התוצאות שהתקבלו‪.‬‬
‫אם ברצוננו להפריד במדויק את כל האובייקטים מן הרקע‪ ,‬ורק אותם‪ ,‬מהו ערך הסף שנצטרך‬
‫להפעיל? האם יש ערך חד משמעי? הסבירו!‬
‫ביצוע ‪:Labeling‬‬
‫טענו והציגו את התמונה ‪ .pieces.png‬בצעו חיתוך בסף כדי להפוך את התמונה לתמונה בינארית‬
‫עם רקע שחור ואובייקטים לבנים‪.‬‬
‫בחרו ערך סף כזה שיגרום לדעתכם להפרדה ברורה בין העצמים בתמונה‪ ,‬והציגו את התמונה‬
‫הבינארית המתקבלת‪ .‬איזה ערך סף בחרתם?‬
‫בצעו ‪ Labeling‬של התמונה‪ ,‬בעזרת הפקודות ‪ bwconncomp‬ו‪.labelmatrix -‬‬
‫הציגו את התמונה אחרי ה‪ Labeling -‬בעזרת מפת צבעים רנדומאלית‪) ,‬השתמשו בפונקציה )‪rand(n,3‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪10‬‬
‫על מנת להגריל מפת צבעים רנדומאלית(‪:‬‬
‫;)‪mycolormap=rand(1000,3‬‬
‫;)‪imshow(im_label,mycolormap‬‬
‫הציגו את התוצאה‪ .‬מה הערך של כל פיקסל בתמונה כעת?‬
‫כמה אובייקטים זוהו בתמונה והאם המספר זהה למספר החפצים שנראים בתמונה? במקרה שלא‪,‬‬
‫הסבירו‪ .‬האם תמונת התוצאה זהה לתמונה המקורית?‬
‫שאלות דו"ח מסכם‬
‫יש לענות בכתב על כל השאלות המסומנות ‪ ‬לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex3.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪11‬‬
‫ניסוי ‪ - 4‬סינון רעש ושחזור תמונות‬
‫מטרת הניסוי‬
‫סינון תמונה רועשת‪ ,‬תוך הפעלת אופרטורים שונים על סוגים שונים של רעש‪ .‬שחזור תמונה מטשטוש‪.‬‬
‫הסבר הניסוי‬
‫ברוב התמונות בהם אנו נתקלים קיים רעש במידה זו או אחרת‪ .‬רעש יכול לנבוע מהגלאי שבו משתמשים‪,‬‬
‫מהמערכת האופטית‪ ,‬מהאופן בו הועברה‪/‬נשמרה התמונה‪ ,‬ועוד‪ .‬סינון )ניקוי( הרעש מתבצע בד"כ בשלב העיבוד‬
‫המקדים )‪ (pre-processing‬של התמונה‪ .‬פעולת סינון הרעש תלויה הן בסוג הרעש והן במטרה לשמה רוצים‬
‫לנקות את התמונה‪.‬‬
‫במהלך הניסוי אנו נעבד תמונה שבה יש רעש‪ .‬הרעש יהיה אחד משניים‪ .1 :‬רעש אדיטיבי גאוסי לבן‪ ,‬ו‪ .2-‬רעש‬
‫מסוג ‪) shot-noise‬ידוע גם כרעש ‪ ,salt-and-pepper‬בגלל ה"גרגרים" הלבנים והשחורים(‪ .‬כדי לסנן את הרעש‬
‫נשתמש באופרטורים בגדלים שונים‪ ,‬ונשים לב ל‪ trade-off -‬הקיים בין גודל חלון‪ ,‬איכות סינון הרעש ושמירה‬
‫על חדות התמונה המקורית‪.‬‬
‫תאור הניסוי‬
‫א‪.‬‬
‫פיתחו והריצו את הקובץ ‪ nrfiltdemo.m‬על מנת להגיע למסך האינטראקטיבי של ה‪DEMO-‬‬
‫‪ .Noise Reduction Filtering‬את ה‪ demo-‬ניתן להוריד מן האתר של הניסוי )‪.(user=anat, passwd=anat‬‬
‫ב‪.‬‬
‫סינון ‪(Salt & Pepper) shot noise‬‬
‫בחרו את התמונה ‪ .rice‬קיבעו את הרעש ל ‪ , Salt & Pepper‬עם צפיפות ‪ . 0.1‬בחרו מסנן מסוג‬
‫‪ Median‬ו‪ . Averaging-‬לחצו על הכפתור ‪ Add Noise‬כדי ליצור את התמונה עם הרעש‪) .‬הקישו ‪Enter‬‬
‫לאחר הזנת הערך החדש וודאו שהפעולה מתבצעת ‪ -‬לחיצה על הכפתור ‪ (.Apply Filter‬בדקו את‬
‫תוצאת הסינון עם גרעיני מיצוע שונים )‪ 5x5 ,3x3‬ו ‪.(7x7‬‬
‫הציגו את התוצאות‪ .‬איזה מסנן ואיזה גרעין מניב את התוצאות הטובות ביותר? מדוע?‬
‫הציגו תוצאות עבור רעש ‪ ,Salt & Pepper‬צפיפות ‪ ,0.7‬מסנן חציון ‪ ,7x7‬התמונות ‪ Saturn‬ו‪.Rice -‬‬
‫מה מסקנתכם לגבי מובנות התמונה המשוחזרת? האם יש קשר לגודל המסנן?‬
‫‪‬‬
‫ג‪.‬‬
‫‪‬‬
‫ד‪.‬‬
‫‪‬‬
‫ה‪.‬‬
‫‪‬‬
‫סינון רעש אדיטיבי גאוסי לבן‬
‫בחרו את התמונה ‪ coins‬עם רעש גאוסי‪ .‬קיבעו את וריאנס הרעש ל ‪.0.01‬‬
‫סננו את הרעש באמצעות ‪ Averaging Filter‬ו‪ Median Filter -‬עם גרעיני מיצוע שונים )‪ 5x5 ,3x3‬ו‬
‫‪ (7x7‬והתרשמו מן ההבדלים בתוצאות‪.‬‬
‫הציגו את התוצאות‪ .‬איזה מסנן שומר על שפות יותר טוב? מדוע?‬
‫שחזור תמונה מטשטוש )מבוא לבעיות היפוך(‬
‫טענו והציגו את התמונה ‪.cam_blur.tif‬‬
‫נסו להעריך‪ ,‬איזה סוג של טשטוש עברה התמונה? כיצד יכול להתקבל טשטוש כזה באופן כללי?‬
‫מצאו את מסנן הטשטוש שהופעל על התמונה )באופן הוריסטי(‪ .‬ודאו את תשובתכם באמצעות‬
‫הפעלת המסנן על התמונה המקורית והשוואה איכותית לתמונה המטושטשת‪ .‬מהו המסנן שמצאתם?‬
‫הפעילו על התמונה המטושטשת את הפונקציה ‪ deconvlucy‬עם המסנן שמצאתם בסעיף הקודם‪.‬‬
‫מה אופי הבעיות התמונה המשוחזרת? האם היא מטושטשת? מה רמת האיכות בה?‬
‫האם ניתן להשיג שחזור מושלם? באיזה תנאים? רמז‪ :‬ישנם הסברים בחומר הרקע באתר הניסוי‪.‬‬
‫שאלות דו"ח מסכם‬
‫יש לענות בכתב על כל השאלות המסומנות ‪ ‬לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex4.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪12‬‬
‫ניסוי ‪ – 5‬גילוי שפות‬
‫מטרת הניסוי‬
‫הפעלת אופרטורים שונים לגילוי שפות והשוואה ביניהם‪.‬‬
‫הסבר הניסוי‬
‫גילוי שפות הינו שלב קריטי בראיה ממוחשבת‪ .‬המעבר מאובייקט אחד למשנהו על‪-‬פי רוב הינו חד ומאפשר את‬
‫הזיהוי של קו המתאר )‪ (contour‬של האובייקט‪ ,‬ועל‪-‬ידי כך את זיהויו הסופי‪ .‬מכיוון שאנו עוסקים בעיבוד‬
‫תמונות‪ ,‬מטרתנו הינה לא לזהות את האובייקטים השונים אלא למצוא אופרטור שיציג באופן מדויק את‬
‫השפות של האובייקטים השונים )וזו לא משימה טריוויאלית!(‪.‬‬
‫במהלך הניסוי נציג תמונות שונות‪ ,‬ונפעיל עליהן אופרטורים שונים לגילוי שפות‪ .‬ננסה לבחון את היתרונות‬
‫והחסרונות של כל אופרטור‪.‬‬
‫תאור הניסוי‬
‫א‪.‬‬
‫‪‬‬
‫השפעת ערך הסף על השפות המתגלות‬
‫בצעו גילוי שפות ע"י הרצת הקוד הבא באמצעות אופרטור ‪:Sobel‬‬
‫;)'‪im=imread('rice.png‬‬
‫;)'‪subplot(221);imshow(im);title('Original‬‬
‫;)'‪imedge=edge(im,'SOBEL',0.05,'both‬‬
‫‪subplot(222);imshow(imedge);title('SOBEL, Thresh=0.05, direction‬‬
‫;)'‪=both‬‬
‫;)'‪imedge=edge(im,'SOBEL',0.15,'both‬‬
‫‪subplot(223);imshow(imedge);title('SOBEL, Thresh=0.15, direction‬‬
‫;)'‪=both‬‬
‫;)'‪imedge=edge(im,'SOBEL',0,'both‬‬
‫;)'‪subplot(224);imshow(imedge);title('SOBEL, Thresh=0, direction =both‬‬
‫פרטו אם בכל מקרה נתגלו כל השפות ‪,‬אם יש שפות שלא נתגלו‪ ,‬ואם נתגלו שפות באופן שגוי!‬
‫הוסיפו את החלון של תוצאות ההרצה לדו"ח המסכם‪.‬‬
‫ב‪.‬‬
‫‪‬‬
‫השפעת רוחב הגאוסיאן בחיפוש שפה מוחלקת‬
‫עתה בצעו בצורה דומה גילוי שפות אך הפעם בעזרת אופרטור ‪ Canny‬וערך סף ‪ .threshold=0.2‬את‬
‫סטיית התקן )‪ (Sigma‬קבעו ל‪ ,0.5-‬ל‪ 1-‬ול‪.5-‬‬
‫;)'‪im=imread('rice.png‬‬
‫;)'‪subplot(221);imshow(im);title('Original‬‬
‫;)‪imedge=edge(im,'CANNY',0.2,0.5‬‬
‫;)'‪subplot(222);imshow(imedge);title('CANNY, Thresh=0.1, Sigma =0.5‬‬
‫;)‪imedge=edge(im,'CANNY',0.2,1‬‬
‫;)'‪subplot(223);imshow(imedge);title('CANNY, Thresh=0.2, Sigma =1‬‬
‫;)'‪Sigma =5‬‬
‫;)‪imedge=edge(im,'CANNY',0.2,5‬‬
‫‪subplot(224);imshow(imedge);title('CANNY, Thresh=0.2,‬‬
‫שנו את הערכים של הסף ושל הסיגמה כך שתקבלו תוצאה אופטימלית לדעתכם‪ .‬פרטו האם נתגלו‬
‫כל השפות ‪,‬אם יש שפות שלא נתגלו‪ ,‬ואם נתגלו שפות באופן שגוי!‬
‫הוסיפו את החלון של תוצאות ההרצה לדו"ח המסכם‪.‬‬
‫מה משמעות ערך ה‪ Sigma -‬ומדוע הוא משפיע על השפות? באיזה עוד אופרטורים לגילוי שפות‬
‫בפונקציה ‪ edge‬יש השפעה של פרמטר זה?‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪13‬‬
‫ג‪.‬‬
‫‪‬‬
‫ד‪.‬‬
‫‪‬‬
‫עתה בצעו גילוי שפות ע"י ‪ Canny‬בצורה דומה על תמונה טבעית‪ ,‬אותה תקבלו מן המדריך )ברירת‬
‫מחדל‪ :‬טענו את התמונה ‪ saturn.gif‬שנמצאת במאגר תמונות שנמצא באתר הניסוי(‪ .‬נסו לבחור‬
‫פרמטרים מתאימים‪.‬‬
‫האם גלאי קצוות מזהה טוב בכל המקרים אוביקטים? מה הקשיים המתגלים?‬
‫הוסיפו רעש גאוסי לבן עם סטיות תקן ‪ std_n=20‬וגם ‪) std_n=5‬לפי הסבר בניסוי ‪ .(3‬הפעילו את‬
‫אופרטור ‪ . Canny‬נסו למצוא פרמטרים שיתנו תוצאות סבירות‪.‬‬
‫;))‪noise=std_n*randn(size(im‬‬
‫;)‪im_n=uint8(double(im)+noise‬‬
‫הוסיפו את התוצאות לדו"ח‪ .‬מהי השפעת הרעש?‬
‫ה‪.‬‬
‫‪‬‬
‫ו‪.‬‬
‫‪‬‬
‫ז‪.‬‬
‫‪‬‬
‫גילוי שפות כיווניות‬
‫עתה בצעו גילוי שפות על התמונה ‪ circuit.tif‬עם אופרטור ‪ Sobel‬עם ערך סף של ‪ 0.05‬וכיווני גזירה‬
‫שונים )‪.(Vertical Horizontal Both‬‬
‫באיזו מסננת נעשה להערכתכם שימוש בכל אחד מן המקרים? רשמו את המטריצה המתאימה‪.‬‬
‫מה היתרונות של אופרטור ‪ Sobel‬לעומת ‪ ?Canny‬וההפך? איזה גלאי קצוות עדיף?‬
‫באופן כללי‪ ,‬האם קיים ערך סף כזה שיניב את כל השפות בהן אנו מעוניינים ורק אותן? נמקו!‬
‫האם ההארה הממוצעת של תמונה קשורה לערך ‪ Sigma‬אופטימלי שייבחר? האם גודל אובייקט‬
‫קשור ל‪ Sigma-‬אופטימלי? נמק‪.‬‬
‫שאלות דו"ח מסכם‬
‫יש לענות בכתב על כל השאלות המסומנות ‪ ‬לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex5.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪14‬‬
‫ניסוי ‪ – 6‬פעולות מורפולוגיות‬
‫מטרת הניסוי‬
‫ביצוע פעולות מורפולוגיות לעיבוי או הצרת תמונות ולסילוק אובייקטים לא רצויים‪.‬‬
‫הסבר הניסוי‬
‫פעולות מורפולוגיות הן פעולות המתבססות על צורות‪ .‬ערך של כל פיקסל בתמונת הפלט נקבע בעזרת שכניו‬
‫של אותו הפיקסל בתמונת המקור‪ ,‬כאשר הסביבה ‪) neighborhood -‬מספר ומיקום השכנים הנלקחים בחשבון(‬
‫נבנית בהתאם לאופי הפעולה‪ ,‬מטרתה ואופי תמונת המקור‪ .‬העצם המכיל את הסביבה ייקרא ‪structuring‬‬
‫‪) element‬אלמנט הבנייה( והוא ייבנה בעזרת הפונקציה ‪.strel‬‬
‫הרחבת התמונה ‪Image dilation -‬‬
‫בפעולת ‪ dilation‬עבור תמונה בינארית‪ ,‬פיקסל בתמונת הפלט יהיה לבן )ערך הפיקסל יהיה ‪ (1‬אם לפחות אחד‬
‫הפיקסלים בסביבה היה לבן )‪ .(1‬הסביבה נקבעת על ידי אלמנט הבנייה‪.‬‬
‫עבור תמונה בגווני אפור‪ ,‬הפיקסל בתמונת הפלט יקבל את הערך המרבי בין כל הפיקסלים בסביבת פיקסל‬
‫המקור‪) .‬הערה‪ :‬לצורך החישוב פיקסלים מעבר לגבולות התמונה נחשבים לשחורים‪ ,‬כלומר בעלי ערך ‪(.0‬‬
‫הצרת התמונה ‪Image erosion‬‬
‫הפונקציה פועלת בדומה לפונקצית הרחבת התמונה‪ ,‬אך הפעם ערך הפיקסל בתמונת הפלט הינו הערך הקטן‬
‫ביותר בין כל הפיקסלים בשכונת פיקסל המקור )בתמונה בינארית‪ :‬אם רק אחד הפיקסלים בסביבה ‪ – 0‬אזי‬
‫בתמונת הפלט הפיקסל יהפוך ל‪.(0-‬‬
‫)הערה‪ :‬לצורך החישוב פיקסלים מעבר לגבולות התמונה נחשבים ללבנים‪ ,‬כלומר בעלי ערך ‪(.1‬‬
‫פעולות משולבות‬
‫הפעולות הנ"ל יכולות לשמש אותנו‪ ,‬בין השאר‪ ,‬למחיקת עצמים לא רצויים מתמונות‪ ,‬במידה והם נבדלים‬
‫מהשאר בצורתם הגיאומטרית‪.‬‬
‫העיקרון של סינון זה הוא להצר את התמונה עם אלמנט בנייה מתאים עד להיעלמות מוחלטת של העצמים‬
‫הלא‪-‬רצויים ואח"כ בעזרת אותו האלמנט להרחיב את התמונה כדי להחזיר לשאר העצמים את הפיקסלים‪,‬‬
‫שנעלמו בהצרה‪.‬‬
‫‪screws circles removed‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪all but circles removed‬‬
‫‪15‬‬
‫‪original image‬‬
‫תאור הניסוי‬
SE1  1 1 1
1
SE2  1
1
0
0

im  0

0
0
Dilation - ‫הדגמת הרחבת התמונה‬
0 0 0 0
0 1 0 0 
0 1 0 0

0 1 0 0
0 0 0 0 
.‫א‬
:‫יצרו תמונה פשוטה ואלמנטי בנייה מן הסוג‬
im=zeros(5); im(2,3)=1; im(3,3)=1; im(4,3)=1
SE1=strel('arbitrary',[1 1 1])
out1=imdilate(im,SE1)
SE2=strel('arbitrary',[1; 1; 1])
out2=imdilate(im,SE2)
.‫שימו לב איך נראית התמונה )המטריצה( אחרי ביצוע הפעולה‬
0
0

0
im  
0
0

0
Erosion - ‫הדגמת הצרת התמונה‬
:‫יצרו תמונה פשוטה ואלמנטי בנייה מן הסוג‬
0 0 0 0 0
1 1 1 1 0 
1 1 1 1 0

1 1 1 1 0
1 1 1 1 0

0 0 0 0 0
.‫ב‬
im=ones(6); im(1,:)=0; im(6,:)=0; im(:,1)=0; im(:,6)=0
SE1=strel('square',3)
out1=imerode(im,SE1)
SE2=strel('pair', [2 2])
out2=imerode(im,SE2)
.‫שימו לב איך נראית התמונה )המטריצה( אחרי ביצוע הפעולה‬
:‫פעולות משולבות‬
-‫ לאחר שימוש ב‬.‫בדוגמא הבאה מודגם שימוש באלמנט בנייה מותאם להעלמת אובייקט מסוג מסוים‬
.‫ג‬
‫ על מנת לתקן אובייקטים שנפגמו‬dilation ‫ אנו מבצעים‬,‫ והעלמת כל האובייקטים הלא רצויים‬erosion
.‫אך לא נמחקו ולהחזירם לגודלם הטבעי‬
:‫ וסננו פעם את כל האובייקטים חוץ מן העיגולים‬objects-bw.jpg ‫טענו את התמונה‬
im=imread('objects-bw.jpg');
figure(1); imshow(im,[]); title('original image');
SE1=strel('disk',20);
eroded1=imerode(im,SE1);
figure(2); imshow(eroded1,[]); title('eroded image');
final1=imdilate(eroded1,SE1);
figure(3); imshow(final1,[]); title('all but circles removed');
:‫עתה סננו רק את הברגים עם הראשים‬
SE2=strel('diamond',6);eroded2=imerode(im,SE2);
final2=imdilate(eroded2,SE2);
figure(4); imshow(final2,[]); title('screws circles removed');
16
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪‬‬
‫עתה טענו שוב את התמונה ‪ pieces.png‬ונסו להשתמש בפונקציות מורפולוגיות על מנת להעלים‬
‫את הברגים בתמונה‪) .‬תחילה הפכו את התמונה לבינארית(‬
‫שמרו את שורות הקוד והתוצאות לדו"ח המסכם‪ .‬באיזה אובייקט בנייה השתמשתם? מדוע?‬
‫האם האיברים בתמונה החדשה דומים לאיברים בתמונה המקורית? מדוע?‬
‫ד‪.‬‬
‫ה‪.‬‬
‫חיסור רקע לא אחיד‪:‬‬
‫‪‬‬
‫טענו שוב את התמונה ‪) rice.png‬שימו לב תמונה זו אינה בינארית אלא בעלת גווני אפור!( והעלימו‬
‫את גרגירי האורז לחלוטין )רמז‪ :‬השתמשו באלמנט בנייה '‪.('disk‬‬
‫אם הצלחתם להעלים את כל האובייקטים‪ ,‬התמונה שמתקבלת הינה תמונת הרקע הלא אחיד‪.‬‬
‫עתה החסירו את הרקע מתמונת המקור‪.‬‬
‫צרפו את התוצאות לדו"ח המסכם‪.‬‬
‫מה התקבל? הסבירו מדוע זה שימושי )רמז‪ :‬היזכרו בתרגיל של חיתוך בסף(‪.‬‬
‫שאלות דו"ח מסכם‬
‫יש לענות בכתב על כל השאלות המסומנות ‪ ‬לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex6.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪17‬‬
‫חלק ב'‬
‫ניסוי ‪ - 7‬מודל צבע ‪RGB‬‬
‫מטרת הניסוי‬
‫הכרת המודלים ‪ RGB‬ו‪ HSV -‬לייצוג הצבעים בתמונות‪ ,‬ואופן ייצוג תמונות צבע ב‪.MATLAB -‬‬
‫הסבר הניסוי‬
‫צופה אופיני יכול להבחין בערך בין ‪ 20‬עד ‪ 100‬רמות‪-‬אפור בו זמנית‪ .‬אם מוסיפים צבע‪ ,‬אזי הצופה יכול להבחין‬
‫בין מספר גדול הרבה יותר של סוגי גוונים שונים‪ .‬אפשרות נוספת הגלומה בצבע היא בניתוח תמונות‪ ,‬כאשר‬
‫הצבע הוא אחד המאפיינים החשובים של עצמים שונים‪.‬‬
‫תמונות צבעוניות מתחלקות באופן כללי לשני סוגים‪ :‬הראשון‪ ,‬תמונות צבע אמיתיות )‪ Full Color‬או ‪True‬‬
‫‪ ,(Color‬הנובעות מאמצעי רכישת תמונה צבעוני )כמו מצלמת וידאו ציבעונית‪ ,‬או סורק צבעוני(‪ ,‬והן מכילות‬
‫שלושה רכיבים )‪ (bands‬לתאור הצבע‪ .‬הסוג השני‪ ,‬הנקרא ‪ ,pseudo-color‬הן תמונות בהן כל פיקסל הוא למעשה‬
‫אינדקס בטבלת צבעים‪ .‬תמונה זו מיוצגת לכן על ידי ערכי האינדקסים וטבלת הצבעים )‪.(LUT - look up table‬‬
‫בניסוי זה נציג תמונה צבעונית המורכבת משלושת רכיבי הצבע‪ ,RGB -‬ונציג כל אחד מהרכיבים בנפרד‪ .‬בהמשך‬
‫נשתמש בקואורדינאטות ‪ HSV‬להדגשת אובייקטים על פי גווני צבע‪.‬‬
‫תאור הניסוי‬
‫א‪.‬‬
‫‪‬‬
‫הריצו את הקוד הבא )במקום להעתיק‪ ,‬ניתן ניתן להוריד מאתר הניסוי את הקובץ ‪:(ex7a.m‬‬
‫;)'‪im=imread('peppers.png‬‬
‫)התמונה כלולה ב‪(MATLAB-‬‬
‫‪hsv=rgb2hsv(im); % Convert from RGB model to HSV model‬‬
‫'‪imnew=im; % Copy the image 'im' to another variable 'imnew‬‬
‫‪% 'him' = H image 'sim' = S image 'vim' = V image‬‬
‫;)‪him=hsv(:,:,1); sim=hsv(:,:,2); vim=hsv(:,:,3‬‬
‫;)‪red=im(:,:,1);green=im(:,:,2);blue=im(:,:,3‬‬
‫;)‪figure(3‬‬
‫;)'‪subplot(3,4,1);imshow(im);title('Original RGB Image‬‬
‫;)'‪subplot(3,4,2);imshow(red);title('R (Red) of RGB Image‬‬
‫;)'‪subplot(3,4,3);imshow(green);title('G (Green) of RGB Image‬‬
‫;)'‪subplot(3,4,4);imshow(blue);title('B (Blue) of RGB Image‬‬
‫;)'‪subplot(3,4,5);imshow(hsv);title('Original in HSV coordinates‬‬
‫;)'‪subplot(3,4,6);imshow(him);title('H (Hue) of Image‬‬
‫;)'‪subplot(3,4,7);imshow(sim);title('S (Saturation) of Image‬‬
‫;)'‪subplot(3,4,8);imshow(vim);title('V (Value) of Image‬‬
‫‪subplot(3,4,10);imshow((him>0.95)|(him<0.05));title('0<Hue<0.05 or‬‬
‫;)'‪0.95<Hue<1‬‬
‫;)'‪subplot(3,4,11);imshow(sim>0.5);title('Saturation > 0.5‬‬
‫;)'‪subplot(3,4,12);imshow(vim>0.5);title('Value > 0.5‬‬
‫הסבירו כל אחת מן התמונות‪ .‬מה המשמעות של התמונה בצבעים המוזרים )‪ ?(HSV‬הסבירו את‬
‫שלושת התמונות התחתונות‪ .‬מדוע הערכים של ‪ HUE‬אינם רציפים בגווני אדום?‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪18‬‬
‫ב‪.‬‬
‫הריצו את הקוד הבא )במקום להעתיק‪ ,‬ניתן ניתן להוריד מאתר הניסוי את הקובץ ‪:(ex7b.m‬‬
‫;‪close all; clear all; clc‬‬
‫;)'‪im = imread('peppers.png‬‬
‫;‪figure(1); imshow(im); impixelinfo‬‬
‫‪hsv=rgb2hsv(im); % Convert from RGB model to HSV model‬‬
‫;)‪h=hsv(:,:,1‬‬
‫;)‪s=hsv(:,:,2‬‬
‫;)‪v=hsv(:,:,3‬‬
‫;)'‪figure(2);imshow(h);impixelinfo;title('H‬‬
‫;)'‪figure(3);imshow(s);impixelinfo;title('S‬‬
‫;)'‪figure(4);imshow(v);impixelinfo;title('V‬‬
‫;))‪red_mask=((h>=0.9) | (h<0.1‬‬
‫;‪h(red_mask)=0.18‬‬
‫;‪hsv(:,:,1)=h‬‬
‫;)‪newcolor = hsv2rgb(hsv‬‬
‫;‪figure(8); imshow(newcolor); impixelinfo‬‬
‫ג‪.‬‬
‫‪‬‬
‫קבלו תמונה צבעונית מן המדריך והחליפו צבעים בתמונה לפי הנחיית המדריך‪.‬‬
‫שימו לב‪ ,‬ניתן להשתמש גם בערכים של ‪ saturation‬ו‪ value -‬ולא רק של ‪ .hue‬לדוגמא‪:‬‬
‫צרפו לדו"ח את התמונה בה "צבעתם מחדש" חלק מן הפיקסלים‪ .‬הסבירו מה שיניתם ואיך‪.‬‬
‫איך משפיעה השתנות ערך ה‪) saturation -‬ב‪ (HSV-‬על אופי התמונה ב‪?RGB-‬‬
‫ד‪.‬‬
‫‪‬‬
‫קראו את ה‪ help -‬של הפונקציה ‪ .rgb2ycbcr‬הפעילו את הפונקציה על התמונה הצבעונית המקורית‬
‫שקיבלתם בסעיף הקודם‪.‬‬
‫;)‪ycbcr = rgb2ycbcr(rgb‬‬
‫שנו את הערכים והפעילו חיתוך בסף בכל ערוץ בנפרד באופן חופשי‪ .‬בחנו את התוצאות המתקבלות‪.‬‬
‫השתמשו בפונקציה ההופכית ‪ ycbcr2rgb‬לצורך חזרה למרחב המקורי והצגת התמונה‪.‬‬
‫מה לדעתכם מייצג כל ערוץ במודל הצבע ‪ ?ycbcr‬איזה מהערוצים הוא החשוב ביותר?‬
‫שאלות דו"ח מסכם‬
‫יש לענות בכתב על כל השאלות המסומנות ‪ ‬לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex7.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪19‬‬
‫ניסוי ‪ - 8‬מיצוי מאפייני ם‬
‫מטרת הניסוי‬
‫להכיר מאפיינים שונים של תבניות בתמונה‪ ,‬ולהבין את התועלת שבמעבר ממרחב התמונה למרחב המאפיינים‬
‫)‪.(feature space‬‬
‫הסבר הניסוי‬
‫מערכות ניתוח והבנת תמונה מורכבות בדרך כלל משלושת השלבים הבאים‪:‬‬
‫‪ ‬עיבוד מקדים )‪.(Pre-processing‬‬
‫‪ ‬מיצוי מאפיינים )‪.(Feature extraction‬‬
‫‪ ‬סיווג )‪.(Classification‬‬
‫שלב העיבוד המקדים כולל שלבים של עיבוד תמונה ברמת הפיקסל )למשל סינון רעשים וחיתוך בסף(‪ ,‬ולאחר‬
‫מכן פעולת סגמנטציה ו‪) Labeling -‬הפרדה לאובייקטים וסימונם(‪ .‬שלב מיצוי המאפיינים אחראי על הפקת‬
‫ערכי תכונות עבור כל סגמנט )אובייקט(‪.‬‬
‫בניסוי זה נעבד תמונה בינארית המכילה מספר עצמים שונים‪ :‬בתמונה נמצאים מספר ברגי‪-‬וו‪ ,‬מסמרים ו‪T- -‬‬
‫‪ .pins‬נתחיל עם ביצוע ‪ Labeling‬של התמונה‪ .‬לאחר מכן נפיק מספר מאפיינים מספריים עבור כל סגמנט‪ .‬ננסה‬
‫לראות כיצד ניתן להבחין בין הסגמנטים תוך שימוש במידע שהתקבל‪ .‬לצורך כך נשתמש בפונקצית ‪MATLAB‬‬
‫בשם ‪.regionprops‬‬
‫תאור הניסוי‬
‫א‪.‬‬
‫‪‬‬
‫טענו את התמונה ‪ pieces-bw.bmp‬והציגו אותה‪.‬‬
‫בצעו ‪ Labeling‬לתמונה והציגו את התוצאה )כולל ‪(impixelinfo‬‬
‫רנדומאלית‪.‬‬
‫;)‪C = bwconncomp(pic‬‬
‫;)‪label = labelmatrix(C‬‬
‫;)‪figure(2); imshow(label‬‬
‫;)'‪title('labeled image‬‬
‫;‪impixelinfo‬‬
‫צרפו את התמונות לדו"ח‪.‬‬
‫ב‪.‬‬
‫תוך שימוש במפת הצבעים‬
‫נחשב את כל המידע האפשרי בפקודת ‪ regionprops‬ע"י הקשת‪:‬‬
‫‪‬‬
‫)'‪stats = regionprops(label,'all‬‬
‫בחרו אובייקט אחד בתמונה‪ ,‬רשמו את מספרו והציגו את המאפיינים שלו‪ ,‬לדוגמא‪:‬‬
‫)‪obj = stats(23‬‬
‫צרפו את המידע לדו"ח‪.‬‬
‫ג‪.‬‬
‫‪‬‬
‫עתה נבחן את המאפיינים ‪ MajorAxisLength‬ו‪ MinorAxisLength -‬של הסגמנטים על גרף אחד‪.‬‬
‫הקלידו‪:‬‬
‫;]‪xx = [stats.MajorAxisLength‬‬
‫;]‪nn = [stats.MinorAxisLength‬‬
‫מה התקבל? הוסיפו לדו"ח המסכם‪ .‬מה המסקנה?‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪20‬‬
‫)‪figure(3‬‬
‫;)'‪plot(xx,nn,'o‬‬
‫;)'‪title('status plot‬‬
‫;)'‪xlabel('stats.MajorAxisLength‬‬
‫;)'‪ylabel('stats.MinorAxisLength‬‬
‫ד‪.‬‬
‫‪‬‬
‫ה‪.‬‬
‫‪‬‬
‫הציעו שני צירופים שונים של מאפיינים אחרים אשר מסוגלים להפריד בצורה טובה בין‬
‫האובייקטים‪ .‬בדקו שאכן מתקבלת הפרדה והציגו גרפים דומים לנ"ל‪ .‬הסבירו‪.‬‬
‫אם היינו מסובבים את התמונה ב‪ 90 -‬מעלות‪ ,‬כיצד היו משתנות התוצאות?‬
‫האם המאפיינים שהפרידו בצורה טובה את האובייקטים בדוגמא הנ"ל יתאימו בהכרח גם לתמונה‬
‫אחרת כלשהי? הסבירו!‬
‫שאלות דו"ח מסכם‬
‫יש לענות בכתב על כל השאלות המסומנות ‪ ‬לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex8.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪21‬‬
‫ניסוי ‪ – 9‬משימות עצמאיות‬
‫מטרת הניסוי‬
‫במשימה זו תשתמשו בכלים של עיבוד וניתוח תמונה אותם למדנו בתרגילים הקודמים על מנת לבצע משימות‬
‫של ראייה ממוחשבת‪.‬‬
‫משימה ‪1‬‬
‫הסבר הניסוי‬
‫טענו את תמונת גרגירי האורז‪ .‬משימתנו היא לחשב את הגודל )השטח( הממוצע של גרגיר אורז בצורה מדוייקת‬
‫ואמינה ככל האפשר‪.‬‬
‫הדרכה‪:‬‬
‫א‪ .‬הפכו את התמונה לבינארית )שימו לב לרקע הלא אחיד של התמונה(‪ ,‬בצעו ‪ Labeling‬והציגו את התוצאה‬
‫במפת צבעים רנדומאלית‪ .‬חשבו ע"י פקודת ‪ regionprops‬שטח של גרגיר אחד אופייני )שטח = מספר‬
‫פיקסלים הכלולים בגרגיר(‪ .‬מה גודל הגרגיר שבחרתם? הוסיפו את התמונה לדו"ח הסופי‪.‬‬
‫ב‪ .‬הורידו מהתמונה גרגירי אורז לא רצויים אשר יפריעו לחישוב מדויק של השטח‪ .‬יש להוריד גרגירים חלקיים‬
‫או חתוכים וגם גרגירים מחוברים‪ .‬רמז‪ :‬הגרגירים החתוכים צמודים לשפות התמונה‪.‬‬
‫ג‪ .‬חשבו את השטח הממוצע של הגרגירים שנשארו‪.‬‬
‫הסבירו את השיטה בה בחרתם להורדת הגרגירים הלא רצויים ואת השיקולים לבחירתה‪.‬‬
‫האם ישנן דרכים אחרות לעשות זאת?‬
‫שלבו בדו"ח את התמונה של הגרגירים שנשארו לחישוב הסופי עם מפת צבעים רנדומאלית‪.‬‬
‫מה השטח הממוצע המדויק שהתקבל?‬
‫האם יש שיטה אחת ויחידה לחישוב מדוייק של גודל הגרגרים? הסבירו‪.‬‬
‫האם ניתן להבטיח ששיטת החישוב שלכם תעבוד בכל פעם שמצלמים תמונת אורז מחדש? מה עלול‬
‫להשתבש?‬
‫יש לענות בכתב על כל השאלות לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex9a.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪22‬‬
‫משימה ‪2‬‬
‫הסבר הניסוי‬
‫במשימה זו ננסה לחלץ את לוחית הרישוי מתמונות של מכוניות פרטיות‪ .‬לדוגמא‪:‬‬
‫כתבו קוד ‪ MATLAB‬אשר טוען תמונה‪ ,‬ומחזיר תמונה של הלוחית בלבד על רקע שחור‪ .‬את הלוחית יש לגזור‬
‫בצורתה הטבעית )כלומר בלי לבצע שינוי בפיקסלים השייכים ללוחית(‪.‬‬
‫הריצו את הקוד שלכם על חמשת התמונות הראשונות ‪ plate01-plate05‬בלבד )הקישור הראשון( וודאו שהקוד‬
‫עובד היטב עבור חמשת התמונות הללו‪ .‬לצורך ביצוע המשימה‪ ,‬תכננו תחילה את שיטת העבודה וקבלו את‬
‫אישור המדריך לאלגוריתם‪ .‬לאחר מכן ממשו ב‪ .MATLAB-‬שימו לב! למרות שהקוד מיועד לחמשת התמונות‬
‫הראשונות‪ ,‬עדיין יש צורך לתכנן אלגוריתם כללי ככל האפשר‪ ,‬כדי שיהיה סיכוי להפעילו גם על תמונות נוספות‪.‬‬
‫הציגו את התוצאה למדריך וקבלו את אישורו‪ .‬ישנן מספר דרכים וגישות על מנת לפתור בעיה זו‪.‬‬
‫הצעה לדרך פעולה‪:‬‬
‫‪ ‬תחילה בנו מסכה בצורה של מטריצת אחדים ואפסים‪ ,‬כאשר האחדים מייצגים את הפיקסלים שאותם‬
‫רוצים לגזור מן התמונה המקורית ואילו האפסים מייצגים את הפיקסלים אותם רוצים להשחיר‪.‬‬
‫דוגמא ליצירת מסכה‪ :‬אם ‪ him‬היא תמונת ה‪ hue-‬של תמונה צבעונית‪ ,‬אזי הפקודה ‪mask=him>=0.5‬‬
‫מייצרת מסיכה של כל הפיקסלים בעלי ערך ‪ hue‬גדול מחצי‪.‬‬
‫‪ ‬לצורך מציאת הפיקסלים הרצויים‪ ,‬ניתן להשתמש במידע על צבע הלוחית‪.‬‬
‫‪ ‬סביר שתקבלו אחרי סינון ראשוני על פי הצבע גם אובייקטים )או פיקסלים בודדים( לא רצויים‪ .‬הפעילו‬
‫סינון נוסף על מנת להעלים פיקסלים\אובייקטים אלה‪) .‬רמז‪ :‬גודל האוביקט‪ ,‬פונקציות מורפולוגיות‪,‬‬
‫סינון רעשים‪(...,‬‬
‫‪ ‬לבסוף‪ ,‬אחרי שקיבלתם מסכה מושלמת לדעתכם‪ ,‬הלבישו את המסכה על התמונה המקורית‪ .‬שימו לב‪,‬‬
‫לתמונה המקורית ‪ 3‬מימדים של צבע ואילו למסכה רק ערך בודד בכל פיקסל‪ .‬ניתן להשתמש בקוד‬
‫הבא‪:‬‬
‫‪mask=uint8(mask); % Must convert logic values to integer for calculation‬‬
‫‪im(:,:,1)=im(:,:,1).*mask; % Mask red values‬‬
‫‪im(:,:,2)=im(:,:,2).*mask; % Mask green values‬‬
‫‪im(:,:,3)=im(:,:,3).*mask; % Mask blue values‬‬
‫בסיום‪ ,‬הריצו את הקוד שלכם על התמונות הנוספות בקישור השני וצרפו את התוצאות לדו"ח‪.‬‬
‫שימו לב! אין צורך לתקן או לשפר את האלגוריתם כך שיצליח גם על התמונות מהקישור השני‪.‬‬
‫הסבירו באופן מפורט את האלגוריתם שפיתחתם‪ .‬הציגו את התוצאות המתקבלות על חמשת התמונות‬
‫הראשונות וכן על חלק מהתמונות הנוספות‪ .‬הסבירו מדוע הקוד לא מזהה נכון את הלוחיות בתמונות‬
‫הנוספות ורשמו כמה שיותר בעיות שעולות מתמונות אלו‪ .‬הציעו רעיונות לפתרונות אפשריים‪.‬‬
‫יש לענות בכתב על כל השאלות לעיל ולצרף את התמונות והגרפים הרלוונטיים‪.‬‬
‫שמרו את קטעי הקוד שכתבתם בקובץ ‪.ex9b.m‬‬
‫ניסוי מבוא לעיבוד וניתוח תמונות‬
‫‪23‬‬