ICBV3, -3, PS6 Edge Detection מבוא ראינו אלגוריתמים לזיהוי גבולות המתבססים על שני סוגים של אופרטורים:. אופרטורים מסדר ראשון )מבוססי גראדינט(: Prewitt, Sobel, Roberts אופרטורים אלו מבוססים על כך שבנקודות של גבול, הנגזרת הראשונה מקבלת ערכים מקסימאליים. לאחר חישוב גודל הגראדינט )או הגראדינט של התמונה המוחלקת( קובעים ערך סף ובוחרים את הנקודות עם ערך גבוה מערך הסף להיות נקודות גבול.. אופרטורים מסדר שני: Lplcin, LoG אופרטורים אלו מבוססים על כך שבנקודות בהן גודל הנגזרת הראשונה מקסימאלי, הנגזרת השניה מתאפסת. לכן לאחר חישוב ערך הנגזרת השניה נבחר נקודות עם ערך אפס להיות נקודות גבול.. Prewitt (for edge detection): Horizontl derivtive Verticl derivtive נחשב: ואז ניתן לחשב את גודל הגראדינט: כדי לקבל מפת גבולות בינארית( ואת כיוון הגראדינט: )ניתן לקחת את הערכים הגדולים מערך סף מסויים. Sobel קרנל של נגזרת אנכית )כולל החלקה( נזגרת מרכזית בכיוון הגזירה * החלקה במאונך לכיוון הגזירה קרנל של נגזרת אופקית )כולל החלקה ) נזגרת מרכזית בכיוון הגזירה * החלקה במאונך לכיוון הגזירה נחשב:
ואז ניתן לחשב את גודל הגראדינט: כדי לקבל מפת גבולות בינארית( ואת כיוון הגראדינט: )ניתן לקחת את הערכים הגדולים מערך סף מסויים 3. Robert's Cross opertor קרנלים אלו מזהים בצורה מטבית גבולות באוריינטציה של רגיש יותר לרעש בשל גודלו הקטן (*) נחשב: ו- מעלות. ואז ניתן לחשב את גודל הגראדינט: כדי לקבל מפת גבולות בינארית( ואת כיוון הגראדינט: )ניתן לקחת את הערכים הגדולים מערך סף מסויים 4. Lplcin (the sum of two D kernels) Other Lplcin kernel 5. LOG Lplcin of Gussins (Zero Crossing Detector / Mrr-Hildreth Opertor)
3 שאלה הנתונה כפונקציה של בחן את התמונה הרציפה המיקום במישור והמתוארת בתרשים כרמות בהירות בתחום מוגבל כלשהוא.. בתמונה התחום הוא א. ב. ג. מצא את המשוואות של אוסף כל עקומי הגבולות של תמונה זו על בסיס ה zero crossing של ה.Lplcin הראה כל שלבי החישוב וצייר את מפת הגבולות המתקבלת. צייר את מפת הגבולות )בתחום המתואר בתרשים( כפי שתתקבל מ Edge detector המבוסס על איתור ה locl mxim של ה.Mgnitude of grdient הסבר תשובתך. צייר את מפת הגבולות )בתחום המתואר בתרשים( כפי שתתקבל מ Edge detector המבוסס על איתור כל הנקודות בהן ה Mgnitude of grdient עובר ערך סף הנמוך מהמקסימום האפשרי על פני התמונה. הסבר תשובתך. פתרון: א. נחשב את גודל הלפלסיאן של משוואת התמונה: ניזכר בהגדרת הלפלסיאן אותה ראינו בחד מימד: I I xx yy I I x y sin( x)sin( y) cos( x)cos( y) I cos( x)sin( y) cos( x)sin( y) cos ( x)cos ( y) sin ( x)sin ( y) I cos( x)sin( y) I when cos(x) or sin(y) x k y k ואנו רואים, כי למעשה הקווים הישרים הללו, המקבילים לציר ה X ולציר ה Y הם עקומי הגבולות.
4 משטח התמונה:.5 -.5-8 6 4 4 6 8 משטח גודל הגרדיאנט:.8.6.4. 8 6 4 4 6 8 sqrt(cos(x) c os(y) +sin(x) s in(y) ) Locl ב. נחשב מפת גבולות המבוססת על איתור ה Mxim של גודל הגרדיינט. נביט במפת גודל הגרדיינט: 3 4 5 ה- locl mxim נמצא למעשה רק בנקודות בדידות שבמרכזי העיגולים הבהירים. אפשר לראות זאת ע"י גזירה של לפי שני המשתנים )x ו- y ( והשוואת הנגזרות לאפס )תנאי הכרחי, אך לא מספיק לנקודת קיצון(. 6 3 4 5 6
5.. 3. משתי המשוואות מקבלים בסה"כ 5 תבניות של נקודות: 4. 5. נציב את הנקודות ב- ונראה שבעצם רק התבנית הראשונה והרביעית מספקות נקודות מקסימה )והן יהיו נקודות בדיוק במרכז העיגולים הבהירים(. Locl ג. נחשב מפת גבולות המבוססת על כל הנקודות של גודל הגרדיינט הגבוהות מערך סף Mxim למשל :)9. )הנמוך מה Threshold=.9 3 4 5 6 3 4 5 6
6 שאלה מבוסס על התאמה )fitting( של מודל מישורי לסביבה בגודל 3x3 סביב לכל של Prewitt ה - detector edge פיקסל שבתמונה ולאחריו שיערוך גודל הגרדיינט מתוך הפרמטרים המתקבלים מהתאמה זאת. בשאלה זאת הינך הדומה לזה של Prewitt אך מבוסס על התאמה )fitting( של מודל מסדר ראשון edge detector נדרש לתכנן סביב לכל פיקסל. לסביבה בגודל 5x5 )במובן של פיתוח טילור( וכתוב את המשוואות הנורמאליות בצורה 5x5 עבור חלון כללי בגודל )fitting( נסח את ההתאמה. מטריציונית. פתור את המשואות הנורמאליות בעזרת.Mtlb. 3. הסבר מהו שערוך הגרדינט המתקבל מתוך ההתאמה הנ"ל וממש שיערוך זה ע"י שימוש באופרטור הקונבולוציה. )סה"כ תמונות( הרץ את תוכניתך על התמונות, Cones, Bby ו Zebr 4. הנתונות במאגר המקורות שבאתר הקורס: 5..)http://www.cs.bgu.c.il/~ben-shhr/Teching/Computtionl-Vision/Resources.php( המבוססת על קביעת ערכי סף edge ואת פלט תמונת ה הגרדיאנט הצג את פלט תמונת גודל )thresholding( כרצונך לגודל הגרדיאנט. פתרון : נרצה לממש Prewitt edge detector בעל חלון בגודל 5X5. ה- detector הזה משתמש בפיתוח טיילור עד נגזרת ראשונה: I( x, y) G f p ( x i) p ( y j) ( x, y) N( i, j) ( f, p, p ),,,,,,,,,,,,,,,,,,,,,,,,, התאמת המודל לסביבת 5X5 תהיה: נרצה למצוא 3 ארגומנטים אשר יביאו את המשוואה הבאה למינימום: rg min (,..., ) ( G (, ),..., G (,) f, p, p,, ( f, p, p ) ( f, p, p ) [ i, j ( )] min i j E f i p j p L כלומר נחפש את הפרמטרים עבורם: ביטוי זה ניתן לרישום בצורה המטריטציונית הבאה:
7 f p p,,,,,,,,,,,,,,,,,,,,,,,,, M ij )שימו לב שקיבלנו כאן נורמה של וקטור(. אם נגדיר את וקטור הפרמטרים להיות p לכתוב זאת בצורה: וקטור ערכי התמונה להיות ומטריצת המקדמים להיות אזי נוכל T min Mp Mp Mp p p T M T Mp p T M T T Mp T על מנת למצוא את המינימום, נגזור לפי p ונשווה לאפס: T T p M M M ונקבל: זוהי המשואה הנורמלית בצורה מטריטציונית. 5 p 5 5 T M נפתור את מערכת המשוואות הזו בעזרת :mtlb
8, f, p 5 p, שזה: f 5 i, j i j נפתור ונקבל: p,,,,,,,,,,, 5 ii j,,,,, 5 i, j,,,,, p 5,,,,,,,,,,,,,,,, 5 i, j j i, j p כעת, נוכל לבנות בקלות קרנל כזה שיאפשר את מציאת, p בכל נקודה: p I p * p p I *
ולהלן תוכנית Mtlb עבור ה Edge-detector הנ"ל: function [grdient_imge,edge_picture]=prewitt_5_5(file_nme,threshold) imge=imred(file_nme); [n,m] = size(imge); grdient_imge=zeros(n,m); edge_imge=zeros(n,m); k = [- - - - -; - - - - -; ; ; ]; k =k'; p = (/5)*conv(imge, k,'vlid'); p = (/5)*conv(imge, k,'vlid'); grdient_imge = ((p.^)+(p.^)).^.5; % normlize grdient imge: mx_vl=mx(grdient_imge(:)); grdient_imge=grdient_imge./mx_vl; edge_imge=grdient_imge>threshold; edge_imge=double(edge_imge); grdient_imge = grdient_imge*mx_vl; grdient_imge = uint8(grdient_imge); edge_picture = uint8(edge_imge); figure(); imgesc(grdient_imge); xis imge title('grdient mgnitude'); colorbr figure(); imshow(edge_imge); title('edge imge'); colorbr אותה ניתן להפעיל ע"י התוכנית: file_nme='zebrwithattchedshdow.jpg'; threshold=.3; [grdient,edge_imge]=prewitt_5_5(file_nme,threshold);
9 Cnny Edge Detector שאלה 3: כפי שראינו בהרצאה, האופרטור מבצע את השלבים הבאים: החלקת התמונה עם גאוסיאן והערכת גודל וכיוון הגרדיאנט. סילוק נקודות שאינן לוקל-מקסימה בכיוון הגראדינט: response Thin filter מהו היתרון של תהליך זה בהשוואה לתהליך בו מסלקים נקודות שאינן לוקל מקסימה בכיוון כלשהו? תשובה: כאשר מודדים לוקל מקסימה כללי, לא מתחשבים בכך שלאורך קו הגבול האמיתי יכולים להיות שינויים קלים )וגם גדולים( בעוצמת הגראדיאנט. לכן אנחנו לא מודדים לוקל מקסימה בכיוון הגבול, אלא בכיוון הניצב לו בלבד, שהוא כיוון הגראדינט. בניית עקומי הגבול ע"י תהילך ה-. hysteresis בתהליך זה נקבעים שני ערכי-סף: גבוה ונמוך. כל נקודה שערך הגרדיאנט שלה נמוך מערך הסף הנמוך לא נלקחת בחשבון. בתהליך שחוזר על עצמו מתחילים מנקודה עם גודל גרדיאנט גבוה מערך הסף הגבוה, מתייגים אותה כנקודת גבול, וממשיכים לתייג כל נקודה שכנה שלה עם גודל גראדינט גבוה מערך הסף הנמוך כנקודת גבול, וממשיכים ברקורסיה....3 כתוב תוכנית MATLAB אשר טוענת את התמונות bby,cones,zebr שבאתר הקורס http://www.cs.bgu.c.il/~ben-shhr/teching/computtionl-vision/resources.php ובודקת את תוצאת האופרטור של Cnny עליהן ע"י שימוש בפקודת.edge I=imred('Bby_on_bench.jpg'); t_high=.; t_low=.4*t_high; %deflt rtio edge_mp_cnny=edge(i,'cnny',[t_low t_high]); imshow(edge_mp_cnny)