בס"ד הטכניון – מכון טכנולוגי לישראל הפקולטה להנדסת חשמל המעבדה לראייה ומדעי התמונה מעבדה בהנדסת חשמל 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
© Copyright 2025