– עיבוד תמונה Image Processing

‫הרצאה ‪3.3.13 – 1‬‬
‫עיבוד תמונה – ‪Image Processing‬‬
‫דר' יעקב גולדברגר‬
‫מבוא לעיבוד תמונה‪:‬‬
‫בכל התחום מתחילים מתמונה ומסיימים בתמונה‪ .‬נניח שמצלמה קלטה תמונה מורעשת ולא נקייה‪ .‬לאחר תהליך עיבוד נקבל תמונה‬
‫נקייה יותר‪ .‬במהלך הקורס נעסוק בדחיסת תמונה מכיוון שהמידע המקורי הוא בגדלים עצומים‪ .‬נכיר מספר אלגוריתמים לדחיסה‪.‬‬
‫תחום נוסף שנחשף אליו הוא הקשר בין תמונה למציאות‪ .‬נרצה להבין מה התמונה מספרת בהקשר של המציאות‪ .‬נקבל החלטות על‬
‫בסיס תמונה‪.‬‬
‫מהי תמונה‪:‬‬
‫תמונה היא למעשה מטריצה המורכבת מ‪( pixel-‬קיצור של ‪.)Picture Element‬‬
‫אנו נעסוק במטריצות ריבועיות בגווני אפור )‪ (Grayscale‬כאשר כל גוון נע בתחום מ‪ 0-‬עד ל‪( 522-‬מיוצג ע"י ‪ 8‬ביטים)‪.‬‬
‫כשמחשב מקבל תמונה הוא מקבל מטריצה של מספרים שלמים בתחום הנ"ל‪.‬‬
‫סוג נוסף של תמונה הוא תמונת צבע ובו כל פיקסל מורכב מ‪ 52-‬ביטים (‪ 3‬בתים) לפי הסדר‪. R G B :‬‬
‫במקרה זה ניתן להסתכל על המטריצה כאל מטריצה תלת‪-‬מימדית‪.‬‬
‫‪3‬‬
‫‪24‬‬
‫לכל ערך ניתן לאמוד את הכמות של כל צבע ולפי הצירופים ניתן לייצג ‪ 256  2‬צבעים שונים‪.‬‬
‫הפורמט האחרון שנייצג בקורס הוא וידאו‪ .‬וידאו הוא למעשה אוסף של תמונות לשנייה לפי תקנים מסוימים (למשל ‪ 50‬תמונות‬
‫לשנייה)‪ .‬כל תמונה נקראת ‪ frame‬והן צריכות להיות באותו הפורמט‪.‬‬
‫‪|1‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪01.3.03 – 2‬‬
‫פעולות נקודתיות‪:‬‬
‫נפתח את הדיון שלנו בפעולות המבוצעות על פיקסל כלשהו בתמונה והופכות אותו לפיקסל אחר‪.‬‬
‫נתמקד בתמונה בגווני אפור‪ ,‬כפי שהקדמנו בהרצאה הקודמת‪.‬‬
‫נסמן תמונה באופן הבא‪ f xy :‬כאשר שיעורי הנקודה ‪  x, y ‬מייצגים פיקסל‪.‬‬
‫‪‬‬
‫‪‬‬
‫פעולה נקודתית מוגדרת‪. T  f  x, y   T f x , y  :‬‬
‫פעולה ‪ T‬על פיקסל מסוים אינה תלויה בפיקסלים אחרים שבתמונה‪.‬‬
‫נייצג פעולות נקודתיות ע"י טבלה ויזואלית (גרף) כגון באיור הסמוך‪.‬‬
‫‪result‬‬
‫‪100‬‬
‫‪50‬‬
‫‪source‬‬
‫‪0‬‬
‫‪255‬‬
‫ייצוג של תמונה ע"י היסטוגרמה‪:‬‬
‫ההגדרה‪:‬‬
‫‪‬‬
‫‪1‬‬
‫‪x, y ‬‬
‫‪ x, y  : f‬‬
‫‪image size‬‬
‫‪. h i  ‬‬
‫כאשר‪ h  i  :‬מייצג את השכיחות של הצבע ה‪ i -‬בכל התמונה ו‪  image size  -‬הוא סכום הפיקסלים שבכל התמונה‪.‬‬
‫‪255‬‬
‫ברור כי מתקיים‪.  h  i   1 :‬‬
‫‪i 0‬‬
‫בשקף ‪ 5‬מופיעות דוגמאות של היסטוגרמות פשוטות‪.‬‬
‫דוגמא‪:‬‬
‫נניח שישנה תמונה אשר חיה בתחום שבין ‪ 55‬ל‪ .055-‬לא מנצלים את מלוא הטווח הדינמי‪.‬‬
‫נרצה למתוח את התמונה למלוא הטווח‪.‬‬
‫החוקיות שלנו היא‪. 100  255 , 50  0 :‬‬
‫נקבל מתיחה ליניארית‪.‬‬
‫ראינו מההיסטוגרמה שישנה בעיה אשר ניתנת לפתירה ע"י פעולה נקודתית‪.‬‬
‫‪result‬‬
‫‪source‬‬
‫תיקון גמא‪:‬‬
‫ההגדרה של תיקון גמא‪. i  0,...,1 : T  i   i1/  :‬‬
‫באיור הסמוך ניתן לראות איכותית את הגרף המתקבל עבור ערכי גמא שונים‪:‬‬
‫‪|1‬‬
‫‪Image Processing‬‬
‫‪50‬‬
‫‪linear T‬‬
‫‪source‬‬
‫בשקפים ‪ 01-02‬ניתן לראות דוגמאות נוספות‪.‬‬
‫‪255‬‬
‫‪100‬‬
‫‪0‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫‪255‬‬
‫‪100‬‬
‫‪50‬‬
‫‪0‬‬
‫הרצאה ‪01.3.03 – 2‬‬
‫עקומה קמורה משמעה הבהרה של תמונה (התמונה תהיה בהירה יותר לאחר מעבר דרך הפונקציה הזו) ועקומה קעורה משמעה הכהה‬
‫של התמונה (היא תהיה כהה יותר)‪ .‬נסכם‪ -   1 :‬השחרה‪ ,‬ו‪ -   1 -‬הבהרה‪.‬‬
‫דוגמא למקרה של הבהרה עם‪:‬‬
‫השוואת היסטוגרמות ‪:Histogram equalization-‬‬
‫נרצה באופן אוטומטי לבנות לכל פיקסל פעולה נקודתית כזו שבסוף הטווח הדינמי של התמונה יהיה אחיד‪.‬‬
‫נרצה לעבור מהאיור הנוכחי לאיור הבא‪:‬‬
‫‪T‬‬
‫יחד עם זאת לא נרצה לגרום נזק לתמונה‪.‬‬
‫מטרתנו היא לשמור על התמונה המקורית‪.‬‬
‫‪‬‬
‫‪255‬‬
‫‪0‬‬
‫‪255‬‬
‫‪0‬‬
‫באופן אבסטרקטי‪ ,‬נניח ויש לנו מ"א ‪ X‬המתפלג לפי ‪ f  x ‬ונרצה להגדיר טרנספורמציה‪ y  T  x  :‬כזה‪. y U 0,1 :‬‬
‫בכלליות עבור‪ T : X  Y :‬מקבלים‪:‬‬
‫‪f T 1  y  ‬‬
‫‪T T 1  y   ‬‬
‫‪‬‬
‫‪‬‬
‫‪d‬‬
‫‪dx‬‬
‫‪. g  y ‬‬
‫דוגמא‪:‬‬
‫נניח‪N  0,1 :‬‬
‫‪ X‬ו‪ . Y  T  x   2 X  1 -‬נמצא את ההתפלגות של ‪: Y‬‬
‫‪y 1‬‬
‫‪2‬‬
‫‪T 1  y  ‬‬
‫‪T ' x  2‬‬
‫‪ y 1 ‬‬
‫‪2‬‬
‫‪f‬‬
‫‪1  y 1 ‬‬
‫‪‬‬
‫‪ ‬‬
‫‪‬‬
‫‪1‬‬
‫‪2 ‬‬
‫‪‬‬
‫‪2 2 ‬‬
‫‪g  y  d‬‬
‫‪‬‬
‫‪‬‬
‫‪e‬‬
‫‪2‬‬
‫‪T T 1  y   ‬‬
‫‪2 2‬‬
‫‪dx  ‬‬
‫‪‬‬
‫‪f T 1  y  ‬‬
‫‪|2‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪01.3.03 – 2‬‬
‫משפט‪ :‬מעבר מהתפלגות כללית להתפלגות אחידה‪:‬‬
‫יהא מ"א ‪ f  x ‬המוגדר על ‪ .  0,1‬נחפש‪ T : X  Y :‬כך ש‪. y  0,1 : g  y   1-‬‬
‫‪ dxd T T 1  y     f T 1  y  ‬‬
‫‪f T 1  y  ‬‬
‫‪y : 1  g  y  ‬‬
‫‪T T  y  ‬‬
‫‪‬‬
‫‪‬‬
‫נרצה שהפעולה תהיה חח"ע (ההתפלגויות עצמן תהיינה חח"ע) ולכן‪. x : T '  x   f  x  :‬‬
‫‪1‬‬
‫‪d‬‬
‫‪dx‬‬
‫‪x‬‬
‫מכאן נקבל כי‪. T  x   F  x    f  z  dz  P  X  x  :‬‬
‫‪0‬‬
‫דוגמא להמחשה‪:‬‬
‫‪0 x  1‬‬
‫נתונה התפלגות כלשהי‪:‬‬
‫‪else‬‬
‫‪2 x‬‬
‫‪ . f  x   ‬נרצה לעשות טרנספורמציה למשתנה הזה כך שנקבל התפלגות אחידה‪.‬‬
‫‪0‬‬
‫‪0 ; x  0‬‬
‫‪‬‬
‫נבצע‪f  z  dz   2 zdz   x 2 ; 0  x  1 :‬‬
‫‪0‬‬
‫‪1 ; x  1‬‬
‫‪‬‬
‫‪x‬‬
‫לכן‪ 1 :‬‬
‫‪2 y‬‬
‫‪2 y‬‬
‫‪‬‬
‫‪f T 1  y  ‬‬
‫‪ y  ‬‬
‫‪1‬‬
‫‪T T‬‬
‫‪‬‬
‫‪d‬‬
‫‪dx‬‬
‫‪x‬‬
‫‪ . y  T  x   ‬מכאן נקבל כי‪. y  x  x  y :‬‬
‫‪2‬‬
‫‪0‬‬
‫‪. g  y ‬‬
‫אינטואיציה כללית‪:‬‬
‫נניח כי‪f  x  :‬‬
‫‪ . X‬ראינו כי‪ . y  F  x   P  X  x  :‬ראשית ברור לנו כי‪. 0  y  1 :‬‬
‫כעת נשכנע את עצמנו מכיוון אחר כי‪. P Y  a   a :‬‬
‫‪F  x‬‬
‫נניח כי על גרף ההתפלגות של ‪ X‬יש נקודה ‪ x  t‬שבה הערך הוא‪ . a :‬נכתוב‪:‬‬
‫‪t‬‬
‫‪ f  x  dx  F  t   P  X  t ‬‬
‫‪‬‬
‫‪‬‬
‫‪a‬‬
‫‪‬‬
‫‪a‬‬
‫‪x‬‬
‫‪P Y  a   P  x | F  x   a  P  x | x  t   a‬‬
‫‪ x | F  x   a   x | x  t‬‬
‫‪|3‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫‪t‬‬
‫הרצאה ‪01.3.03 – 2‬‬
‫איזון היסטוגרמה ‪ -‬מקרים בדידים‪:‬‬
‫במקרה הבדיד נרצה למתוח את ההסיטוגרמה על פני כל התחום‪ .‬אנו עוסקים במקרים בהם טווח תמונה הוא קטן מאוד וכהה מאוד‪.‬‬
‫‪r‬‬
‫‪r‬‬
‫‪n‬‬
‫הנוסחה למתיחה היא‪. Fr  r    pr  i    i :‬‬
‫‪i 0‬‬
‫‪i 0 N‬‬
‫כאשר‪:‬‬
‫‪ - ni‬כמות הפיקסלים בעלי הערך ‪.i‬‬
‫‪ - N‬כמות הפיקסלים בתמונה‪.‬‬
‫'‬
‫‪ F  r '  F  rmin‬‬
‫יש לבצע מתיחה מהתחום‪ 0,1 :‬לתחום‪ 0, L :‬ולכן‪ L  1  0.5 :‬‬
‫‪.s  ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫'‬
‫‪ 1  F  rmin ‬‬
‫‪‬‬
‫כאשר‪:‬‬
‫‪ - s‬הגוון החדש שיחליף את הישן‪.‬‬
‫‪ - L‬הנה מספר רמות האפור האפשריות בתמונה (רוחב הטווח)‪.‬‬
‫‪|4‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪17.3.13 – 3‬‬
‫פעולות מרחביות על תמונות‪:‬‬
‫בשיעור קודם למדנו על המשמעות את פעולות נקודתיות‪ .‬כעת נדבר על רציפות מרחבית‪.‬‬
‫הרציפות המרחבית מלמדת אותנו היכן מתחיל ונגמר אובייקט מסוים‪.‬‬
‫פעולה מרחבית לוקחת תמונה ומייצרת תמונה חדשה אך כעת במקום להסתכל על פיקסל מסוים‪ ,‬נסתכל על הסביבה של פיקסלים‬
‫בקרבתו‪ .‬למשל‪ ,‬נוכל לקחת סביבה של ‪ 3X3‬סביב כל פיקסל‪.‬‬
‫פעולה מרחבית יכולה להיות ליניארית או לא ליניארית‪ ,‬היא יכולה להיות ‪ shift-invariant‬או שלא (הזזה של הפיקסלים יחדיו)‪.‬‬
‫המקביל לתכונה הוא הוא ‪ TI‬במערכות חד מימדיות כמו למשל שמסנן ‪ FIR‬מזיז כל דגימה (יחד עם מיצוע הנקודות שבאורך המסנן)‬
‫במחצית מאורך המסנן‪ .‬היתרון בשימוש בפעולות אלו הוא ניקוי רעשים‪ ,‬נניח ויש פיקסל החורג בערכו ביחס לפיקסלים שבסביבתו‪.‬‬
‫סיבה נוספת היא מציאת ‪-edge‬ים (גבולות)‪.‬‬
‫קורלציה ליניארית‪:‬‬
‫‪1‬‬
‫‪1‬‬
‫נסמן ב‪  f i  k , j  l  h  k , l  -‬‬
‫‪ g  i, j  ‬את הפעולה לביצוע ליניאריזציה בסביבה של ‪:3X3‬‬
‫‪k 1 l 1‬‬
‫‪ 1, 1  1, 0   1,1‬‬
‫‪ 0, 1  0, 0   0,1‬‬
‫‪1, 1 1, 0  1,1‬‬
‫בפילטר הנ"ל הוא ממוצע פשוט‪ .‬התוצאה היא טשטוש של התמונה‪ .‬נרצה ליצור פילטרים בעלי ממוצע משוקלל‪.‬‬
‫‪u 2  v2‬‬
‫אפשר להגדיר ממוצע משוקלל בעזרת גאוסיאן עם סטיית תקן כלשהי‪:‬‬
‫‪2‬‬
‫‪‬‬
‫‪e‬‬
‫‪1‬‬
‫‪2‬‬
‫‪2‬‬
‫‪. h  u, v  ‬‬
‫‪h g‬‬
‫דוגמא להכפלה של חלון בגודל ‪ 3X3‬בפוסל דלתא (פיסקל אחד הוא ‪ 1‬השאר אפסים)‪e d :‬‬
‫‪b a‬‬
‫‪c‬‬
‫‪i‬‬
‫‪f  f‬‬
‫‪i‬‬
‫‪c‬‬
‫‪b‬‬
‫‪e‬‬
‫‪h‬‬
‫‪a‬‬
‫‪.d‬‬
‫‪g‬‬
‫קונבולוציה עם פילטר‪:‬‬
‫הנוסחה היא‪. g  i, j    f i  k , j  l  h k ,l    f k ,l h i k , j l   f *h :‬‬
‫‪l‬‬
‫‪l‬‬
‫‪k‬‬
‫‪k‬‬
‫מה שעושים בפועל הוא שיקוף של עמודות והשורות ואז מכפילים‪.‬‬
‫‪c‬‬
‫בהמשך לדוגמא הקודמת‪ ,‬קונבולוציה של הריבוע הבא עם דלתא תשאיר אותו במקום‪f :‬‬
‫‪i‬‬
‫‪c 0 0 0 a b‬‬
‫‪f *0 1 0  d e‬‬
‫‪i 0 0 0 g h‬‬
‫לסיכום‪ ,‬קונבולוציה היא פעולה המוגדרת ע"י קרנל (אופן המישקול)‪ ,‬היא ליניארית והיא ‪.shift invariant‬‬
‫‪|1‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫‪a b‬‬
‫‪.d e‬‬
‫‪g h‬‬
‫הרצאה ‪17.3.13 – 3‬‬
‫ניקוי רעשים‪:‬‬
‫נרצה להפריד את התמונה לחלק רצוי וחלק לא רצוי (רעש)‪ , g  i, j   f  i, j   e  i, j  :‬כאשר‪ f  i, j  :‬הוא התמונה‬
‫הנקייה ו‪ e  i, j  -‬הוא רעש‪.‬‬
‫נפתח בהנחה שהרעש הוא אדטיבי מהצורה‪N  0,  2  :‬‬
‫‪ . e  i, j ‬הרעש הוא למעשה רעש תרמי‪.‬‬
‫אנו מקבלים תמיד את ‪ g  i, j ‬ולכן ע"י פעולה מרחבית נרצה לחזר לתמונה נקייה‪.‬‬
‫כדי לעשות זאת נוכל להניח למשל כי כל הפיקסלים בסביבה כלשהי הם אותו הדבר בדיוק‪.‬‬
‫נוכל לכתוב בפשטות‪  ij N  0,  2  ; gij  x   ij :‬עבור סביבה של ‪ 9‬פיקסלים ריבועיים‪.‬‬
‫נרצה למצוא ‪ x‬שעבורו ה‪ g ij -‬הוא בעל הסבירות הטובה ביותר‪ ,‬הוא מינימום שגיאה ריבועית וכו'‪.‬‬
‫‪2‬‬
‫נסמן‪ .)Max. Likelihood( xˆML :‬הנוסחה היא‪:‬‬
‫‪1‬‬
‫לאחר גזירה ואיפוס נקבל‪ gij :‬‬
‫‪9‬‬
‫‪‬‬
‫‪‬‬
‫‪1 gij  x‬‬
‫‪2 2‬‬
‫‪‬‬
‫‪e‬‬
‫‪1‬‬
‫‪2‬‬
‫‪2‬‬
‫‪. f  g; x   ‬‬
‫‪i, j‬‬
‫‪1‬‬
‫‪1‬‬
‫‪ . xˆML ‬למעשה יש לנו כאן קונבולוציה עם הקרנל הבא‪1 :‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪. 1‬‬
‫‪9‬‬
‫‪1‬‬
‫נרצה לעבוד עם ממוצע משוקלל (פילטר גאוסי בהתאם ל‪  -‬כלשהו)‪.‬‬
‫פילטר נוסף הוא ‪( median filter‬מסנן חציון)‪.‬‬
‫ישנם מצבים שבהם פיקסלים נדפקים‪ ,‬הם או ‪ 0‬או ‪( 222‬התופעה נקראת‪ .)salt & pepper :‬במקרה זה מיצוע יחריף את בעיה‪.‬‬
‫במסגרת הפילטר הזה נמיין את ‪ 9‬המספרים וניקח את המספר האמצעי (בקיצור חציון המספרים)‪.‬‬
‫נניח ויש לנו ‪ n‬מספרים‪ . x1 ,..., xn :‬הממוצע הוא ‪:‬‬
‫‪2‬‬
‫‪n‬‬
‫‪ . x  arg min   a  xi ‬תפקידו למזער את סכום הריבועיים‪.‬‬
‫‪i 1‬‬
‫‪n‬‬
‫החציון ממזער את הערכים המוחלטים‪. x  arg min  a  xi :‬‬
‫‪i 1‬‬
‫פילטר נוסף משקלל גם לפי המרחק וגם לפי הפרשי הערכים‪:‬‬
‫‪ w  m  x, n  y  w  f  x, y   f  m, n   f  m, n ‬‬
‫‪p‬‬
‫‪s‬‬
‫‪g  x, y  ‬‬
‫‪m , ns‬‬
‫הפילטר הזה הוא אינווריאנטי אבל לא ליניארי‪.‬‬
‫‪|2‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪17.3.13 – 3‬‬
‫מציאת קצוות‪:‬‬
‫העיקרון הוא למצוא שינוי בין פיקסלים סמוכים‪ .‬למשל‪ ,‬תמונה שחציה שחור וחציה לבן יראה חד עבור נגזרות‪.‬‬
‫‪f‬‬
‫לשם כך נגדיר נגזרת‪.  x, y   f  x  1, y   f  x, y  :‬‬
‫‪x‬‬
‫‪f  x, y  1  f  x, y  1 f‬‬
‫‪f  x  1, y   f  x  1, y ‬‬
‫‪f‬‬
‫‪.‬‬
‫אפשר גם להגדיר‪:‬‬
‫;‬
‫‪ x, y  ‬‬
‫‪ x, y  ‬‬
‫‪y‬‬
‫‪2‬‬
‫‪x‬‬
‫‪2‬‬
‫הנגזרת היא אופרטור ליניארי‪ .‬היא למעשה ניתנת להיכתב כקונבולוציה עם החלון‪. 0.5 0 0.5 :‬‬
‫‪:sobel operator‬‬
‫‪1 0 1‬‬
‫‪f‬‬
‫‪.‬‬
‫אופרטור זה מבצע החלקה (לאורך העמודות) ונגזרת (לאורך השורות) יחד‪ 2 0 2 :‬‬
‫‪x‬‬
‫‪1 0 1‬‬
‫‪1 2 1‬‬
‫‪f‬‬
‫‪.‬‬
‫באותו האופן‪ 0 0 0 :‬‬
‫‪y‬‬
‫‪1 2 1‬‬
‫‪ f f ‬‬
‫נוכל לסכם ולומר כי לכל פיקסל נגדיר את הגרדיאנט‪. f   ,  :‬‬
‫‪ x y ‬‬
‫‪2‬‬
‫בערך מוחלט‪:‬‬
‫‪f‬‬
‫‪f‬‬
‫‪‬‬
‫‪x‬‬
‫‪y‬‬
‫‪2‬‬
‫‪f / y‬‬
‫‪.   tan‬‬
‫‪ f ‬ובזווית‪:‬‬
‫‪f / x‬‬
‫‪1‬‬
‫כדי למצוא קצוות נחפש את הגרדיאנט ועבור הערך הגדול ביותר נסיק כי מדובר בקצה‪.‬‬
‫‪2 f 2 f‬‬
‫‪2 f 2 f‬‬
‫‪‬‬
‫‪,‬‬
‫‪:‬‬
‫הלפלסיאן‬
‫‪.‬‬
‫נגדיר את הנגזרת השנייה‪:‬‬
‫‪x 2 y 2‬‬
‫‪x 2 y 2‬‬
‫נכתוב מפורשות נגזרת שנייה‪:‬‬
‫‪. 2 f ‬‬
‫‪f‬‬
‫נתחיל בהגדרה מנורמלת של הנגזרת הראשונה‪ x, y   f  x  1/ 2, y   f  x  1/ 2, y  :‬‬
‫‪x‬‬
‫‪0 1 0‬‬
‫‪f  f‬‬
‫‪‬‬
‫‪2‬‬
‫נקבל‪ .   x, y    f  x  1, y   2 f  x, y   f  x  1, y  :‬הלפלסיאן נותן‪.  f  1 4 1 :‬‬
‫‪x  x‬‬
‫‪‬‬
‫‪0 1 0‬‬
‫‪.‬‬
‫‪|3‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪7.4.31 – 4‬‬
‫גלאי קצה‪:‬‬
‫‪1‬‬
‫‪1‬‬
‫בשיעור קודם למדנו על פילטרים מרחביים‪ .‬ראינו דוגמאות כגון‪1 :‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪ - 1‬ממוצע מרחבי על פיקסל‪.‬‬
‫‪9‬‬
‫‪1‬‬
‫דיברנו על דוגמא אחרת של פילטר מרחבי ליניארי והוא הנגזרות‪:‬‬
‫‪f  x, y  1  f  x, y  1 f‬‬
‫‪f  x  1, y   f  x  1, y ‬‬
‫‪f‬‬
‫;‬
‫‪ x, y  ‬‬
‫‪ x, y  ‬‬
‫‪y‬‬
‫‪2‬‬
‫‪x‬‬
‫‪2‬‬
‫היום נדבר על אלגוריתמים למציאת קצוות‪.‬‬
‫אלגוריתם ‪ Canny‬למציאת קצוות‪:Canny Edge detection :‬‬
‫המטרה היא למצוא את הגבולות של האובייקט בתמונה‪.‬‬
‫הפעולה היא עדיין ברמה נמוכה )‪ – (Low level‬ז"א ללא הכנסת מידע לתמונה מהעולם החיצוני‪.‬‬
‫אינדיקציה אחת לקצה היא מעבר מצבע לצבע (גווני אפור שונים)‪.‬‬
‫קצה מוגדר כשינוי חד בצבעי התמונה‪ .‬עקב כך מעניינת אותנו הנגזרת המרחבית לכל ציר‪.‬‬
‫הנגזרת משתנה בצורה חזקה ולכן נחפש אותה למציאת הקצוות‪.‬‬
‫‪ f f ‬‬
‫נעזר בגרדיאנט שהוגדר בהרצאה קודמת‪. f   ,  :‬‬
‫‪ x y ‬‬
‫‪2‬‬
‫כאשר בערך מוחלט‪:‬‬
‫‪f‬‬
‫‪f‬‬
‫‪‬‬
‫‪x‬‬
‫‪y‬‬
‫‪2‬‬
‫‪ f / y ‬‬
‫‪.   tan ‬‬
‫‪ f ‬ובזווית‪ :‬‬
‫‪ f / x ‬‬
‫‪1‬‬
‫אנו מחפשים נקודות שבהן הגרדיאנט הוא הכי חזק‪ .‬הזווית תיתן לנו את מגמת ההתקדמות שלו‪.‬‬
‫הבעיות בפעולה זו הן‪:‬‬
‫‪ .1‬נרצה לקבל קו בעובי של פיקסל בודד וזה לא קורה במציאות‪.‬‬
‫‪ .2‬הנגזרת היא פעולה מקומית ולכן מבצעת סוג של מיצוע ולא מבטיחה רצף‪.‬‬
‫האלגוריתם מטפל בבעיות אלו וקובע סף אחיד בעובי של פיקסל אחד‪.‬‬
‫האלגוריתם מבצע שתי פעולות‪:‬‬
‫‪ .1‬הוא מעביר פילטר החלקה גאוסי כדי להחליק מעט את התמונה‪ .‬המטרה היא למחוק הבדלים קטנים בין גווני האפור‪.‬‬
‫‪ .2‬לאחר מכן הוא מבצע את הנגזרת ע"י שימוש באופרטור סובֶּל )‪:(Sobel op.‬‬
‫‪|1‬‬
‫‪1‬‬
‫‪2‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪, My  0‬‬
‫‪2‬‬
‫‪1‬‬
‫‪M x  2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪Image Processing‬‬
‫‪1‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪7.4.31 – 4‬‬
‫כדי לתפוס את ה‪"-‬פיק" של הגרדיאנט במעבר עבה (ז"א תחום גדול יחסית של פיקסלים בהם הגרדיאנט הוא גדול) נתחיל ממציאת‬
‫הכיוון של הגרדיאנט‪ .‬כדי לצבע זאת נסתכל על הערכים הסמוכים לו ונבדוק מי מהם בעל הערך הגדול ביותר‪.‬‬
‫‪ f / y ‬‬
‫‪.   tan 1 ‬‬
‫כדי לחשב את הכיוון נעזר בנוסחה‪ :‬‬
‫‪ f / x ‬‬
‫‪45‬‬
‫‪45‬‬
‫‪45‬‬
‫נבצע דיסקרטיצזיה של הערכים באופן הבא‪:‬‬
‫‪3‬‬
‫‪2‬‬
‫נקבל את הערך שבו הזווית משתנה בקצב הכי גדול וכך נדע לאיזה כיוון מתוך הכיוונים‬
‫שהגדרנו יש ללכת עם קו הקצה‪.‬‬
‫‪22.5‬‬
‫‪2‬‬
‫‪1‬‬
‫‪1‬‬
‫‪22.5‬‬
‫כעת נרצה לקבוע סף מסוים‪:‬‬
‫הרעיון של האלגוריתם הוא לקבוע שני ספים‪ .‬האחד הוא סף מאוד חזק (גדול) וכל מי שעובר אותו נחשב לקצה‪.‬‬
‫בשלב הבא נגדיר סף חלש יותר וכל שכן של הפיקסלים שעברו את הסף הראשוני ועוברים את הסף השני יכנסו גם ליצירת הקצה‪.‬‬
‫מציאת פינות ואלגוריתם ‪:Harris corner detection‬‬
‫אנו מעוניינים למצוא פינות כי אלו אזורים מובהקים יותר בתמונה ובאמצעותם ניתן להשוות בין אובייקטים זהים בתמונות שונות‪.‬‬
‫נפתח בשאלה‪ :‬מה מייחד פינה‪.‬‬
‫אינטואיטיבית‪ ,‬בפינה יש לנו גרדיאנט שמשתנה למספר כיוונים‪.‬‬
‫האלגוריתם‪. E  u, v    w  x, y   I  x  u, y  v   I  x, t   :‬‬
‫‪2‬‬
‫‪x, y‬‬
‫כאשר‪ v, u :‬הם כיוונים מסוימים‪.‬‬
‫אנו לוקחים את הפיקסל מוזז בשני כיוונים אלו ובודקים האם יש הבדל בניהם‪ .‬נרצה למצוא "כיונים חזקים"‪.‬‬
‫נניח ש‪ v, u -‬עוברים על כל מעגל היחידה‪ .‬החלון‪ w  x, y  :‬יכול להיות מרובע (רגיל) או גאוסי‪.‬‬
‫כיצד לחשב את‪? I  x  u, y  v   I  x, t  :‬‬
‫נעזר בפיתוח טיילור של שני משתנים מסדר ראשון‪. f  x  u, y  v   f  x  y   uf x  x, y   vf y  x, y  :‬‬
‫נציב אותו באלגוריתם ונקבל‪:‬‬
‫‪ vI y  I  x, y   ‬‬
‫‪2‬‬
‫‪I x I y   u ‬‬
‫‪‬‬
‫‪I y2   v ‬‬
‫‪  I  x  u, y  v   I  x, t     I  x, y   uI‬‬
‫‪2‬‬
‫‪x‬‬
‫‪  I x2‬‬
‫‪I x I y  u ‬‬
‫‪ u v    ‬‬
‫‪‬‬
‫‪ Ix I y‬‬
‫‪I y2  v ‬‬
‫‪ ‬‬
‫‪x, y‬‬
‫‪ I x2‬‬
‫‪2‬‬
‫‪2‬‬
‫‪‬‬
‫‪‬‬
‫‪  u I x  v I y  2uvI x I y   u v  ‬‬
‫‪ I x I y‬‬
‫נניח שיש לנו‪ v1 ,......, vn  2 :‬כאשר‪ vi  vi  x  , vi  y   :‬ווקטורים של הגרדיאנט בכל פיקסל לשני הצירים‪.‬‬
‫‪vi  x  ‬‬
‫‪ vi2  x ‬‬
‫‪vi  x  vi  y  ‬‬
‫‪T‬‬
‫‪. vi vi  ‬‬
‫‪ vi  x  , vi  y    ‬‬
‫נקבל‪ :‬‬
‫‪vi2  y  ‬‬
‫‪vi  x  vi  y ‬‬
‫‪vi  y  ‬‬
‫‪T‬‬
‫‪|2‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪7.4.31 – 4‬‬
‫‪‬‬
‫‪n‬‬
‫‪ v  x  v  y ‬‬
‫לכן‪ :‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪i‬‬
‫‪i‬‬
‫‪i 1‬‬
‫‪n‬‬
‫‪v  y‬‬
‫‪2‬‬
‫‪i‬‬
‫‪i 1‬‬
‫‪ n 2‬‬
‫‪  vi  x ‬‬
‫‪n‬‬
‫‪T‬‬
‫‪ .  vi vi   n i 1‬קיבלנו את מטריצת הקובריאנס של הנגזרות‪.‬‬
‫‪‬‬
‫‪i 1‬‬
‫‪  vi  x  vi  y ‬‬
‫‪ i 1‬‬
‫‪IxI y ‬‬
‫לפי הסבר זה‪ ,‬הביטוי שלנו בפיתוח לעיל הוא מטריצת הקורלציה של הנגזרות‪ :‬‬
‫‪I y2 ‬‬
‫‪IxI y ‬‬
‫נסמן את המטריצה עם המישקול ב‪ -‬‬
‫‪I y2 ‬‬
‫‪ I2‬‬
‫‪. x‬‬
‫‪ I x I y‬‬
‫‪ I2‬‬
‫‪ M   w  x, y   x‬ונוכל תמיד לחשב אותה‪.‬‬
‫‪ I x I y‬‬
‫נוכל למצוא את הע"ע של המטריצה וללמוד על הנגזרות באמצעותם‪:‬‬
‫‪ .1‬אם שני הע"ע קטנים נסיק כי הנגזרות לכל כיוון ממורכזות סביב ה‪.0-‬‬
‫‪ .2‬אם אחד מהע"ע גדול אז נסיק כי הנגזרת המתאימה לה מתפרשת לטווח רחוק יותר על פני הציר המתאים לע"ע הנ"ל‪.‬‬
‫‪ .3‬אם שני הע"ע גדולים אז יש לנו פרישה גדולה של ע"ע על‪-‬פני שני הצירים‪.‬‬
‫נוסחה‪:‬‬
‫‪2‬‬
‫‪R  det M  k  traceM ‬‬
‫‪det M  12‬‬
‫‪‬‬
‫‪.‬‬
‫; ‪‬‬
‫‪trace‬‬
‫‪M‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪1‬‬
‫‪2‬‬
‫סיכום האלגוריתם‪:‬‬
‫מחפשים נקודות מעניינות – שהן פינות‪ .‬נקודות ייחודיות לאובייקט שלנו לצרכי השוואה‪.‬‬
‫בכל פיקסל נשאל האם הוא פינה או לא‪ .‬פותחים חלון סביבו ומחשבים את כל ווקטורי הנגזרות ומחשבים את מטריצת‬
‫האוטוקורלציה‪ .‬ממנה לומדים לפי הע"ע האם מדובר בפינה או לא‪.‬‬
‫‪|3‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪41.1.41 – 5‬‬
‫בסיסים למרחב התמונות‪:‬‬
‫חזרה על אלגברה ליניארית‪:‬‬
‫‪y‬‬
‫‪‬‬
‫ראינו כי תמונה היא למעשה מטריצה ‪ . f  x, y ‬קיים בסיס טבעי לאוס המטריצות הללו ואותו נסמן‪ :‬‬
‫‪‬‬
‫‪‬‬
‫‪. exy  x  ‬‬
‫‪‬‬
‫כל תמונה תיוצג ע"י צירוף ליניארי של הבסיס הנ"ל‪. f   f  x, y  exy :‬‬
‫‪x, y‬‬
‫‪0 ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪v1 ‬‬
‫‪1 ‬‬
‫עבור ווקטור‪ v  n :‬מסמנים ווקטור יחידה‪ ek    :‬כאשר ה‪ 1-‬הוא במקום ה‪ k -‬ואז‪. v      vk ek :‬‬
‫‪0 ‬‬
‫‪vn ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪0 ‬‬
‫‪2‬‬
‫‪1 ‬‬
‫‪0‬‬
‫לדוגמא‪.    2     3    :‬‬
‫‪3 ‬‬
‫‪0‬‬
‫‪1 ‬‬
‫‪u1 ‬‬
‫‪n‬‬
‫כאשר נותנים לנו בסיס‪ b1 ,..., bn  n :‬ונרצה לעבור לבסיס חדש כך‪ v   uk bk :‬כאשר‪. u    :‬‬
‫‪k 1‬‬
‫‪un ‬‬
‫נסמן את הבסיס‪( B   b1 ,..., bn  :‬מטריצה שעמודותיה הם ווקטורי הבסיס)‪.‬‬
‫‪u1 ‬‬
‫נכתוב‪ v   uk bk   b1 ,..., bn     B  u :‬ואז גם‪. u  B v  v  Bu :‬‬
‫‪k 1‬‬
‫‪un ‬‬
‫נתרכז בבסיסים המקיימים‪( . B1  B* :‬נזכור כי כוכבית משמעה ‪ transpose‬וצמוד (צמוד הרמיטי))‪.‬‬
‫‪1 ; i  j‬‬
‫‪. I ij   B* B   bi*b j  bi , b j  ‬‬
‫מתקיים גם‪ . B  B*  I :‬האיבר הכללי נראה‪:‬‬
‫‪ij‬‬
‫‪0‬‬
‫;‬
‫‪i‬‬
‫‪‬‬
‫‪j‬‬
‫‪‬‬
‫‪n‬‬
‫‪1‬‬
‫עבור‪ i  j :‬הבסיסים ניצבים‪ ,‬אחרת הם מתלכדים‪ .‬לכן‪ b1 ,...., bn  :‬הוא בסיס אורתונורמלי‪.‬‬
‫נכתוב‪ ,‬אם כן‪ . u  B*v  v  Bu :‬מסיבה זו נתמקד בבסיסים אורתונורמלים‪.‬‬
‫משפט פרסבל טוען כי במעבר מבסיס לבסיס שומרים על הנורמה‪:‬‬
‫נתון בסיס אורתונורמלי‪ B  b1 ,..., bn  :‬ונתון‪ u  B*v :‬אז‪. u  v :‬‬
‫הוכחה קצרה‪:‬‬
‫‪|1‬‬
‫‪2‬‬
‫‪2‬‬
‫‪2‬‬
‫‪. u  B*v  v* B* Bv  v*v  v‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪41.1.41 – 5‬‬
‫התמרת פורייה על‬
‫‪:‬‬
‫‪N‬‬
‫‪ w ‬‬
‫‪2‬‬
‫‪j‬‬
‫‪‬‬
‫‪1 ‬‬
‫‪N‬‬
‫‪. 0  k  N  1 : bk ‬‬
‫כאשר‪:‬‬
‫הם‪:‬‬
‫החדש‬
‫הבסיס‬
‫ווקטורי‬
‫‪.‬‬
‫נסמן‪:‬‬
‫‪b‬‬
‫‪,..,‬‬
‫‪b‬‬
‫‪w‬‬
‫‪‬‬
‫‪e‬‬
‫‪‬‬
‫‪‬‬
‫‪0‬‬
‫‪N 1‬‬
‫‪‬‬
‫‪‬‬
‫‪N  k  N 1 ‬‬
‫‪w‬‬
‫‪‬‬
‫‪1 ‬‬
‫‪1‬‬
‫‪‬‬
‫‪‬‬
‫‪1‬‬
‫‪w‬‬
‫‪1 ‬‬
‫לכן‪ :‬‬
‫‪ . B   b0 ,.., bN 1  ‬נכתוב עבור איבר בודד‪; n, k  0,..., N  1 :‬‬
‫‪‬‬
‫‪‬‬
‫‪N‬‬
‫‪‬‬
‫‪2 ‬‬
‫‪1 w N 1‬‬
‫‪w N 1 ‬‬
‫‪k 0‬‬
‫‪1 N 1 2N j l k n 1 ; k  l‬‬
‫המכפלה הסקלרית כעת היא‪:‬‬
‫‪‬‬
‫‪e‬‬
‫‪N n 0‬‬
‫‪0 ; k  l‬‬
‫‪1 nk‬‬
‫‪w‬‬
‫‪N‬‬
‫‪. Bnk ‬‬
‫‪.  bk , bl ‬‬
‫‪2 j‬‬
‫‪l k ‬‬
‫‪1 N 1 2N j l k n 1 2N j l k  N‬‬
‫בצד ימין‪.‬‬
‫‪ 1  e N‬ונקבל‪:‬‬
‫כדי להראות כי עבור‪ k  l :‬מקבלים ‪ 0‬נכפיל ב‪-‬‬
‫‪e‬‬
‫‪ e‬‬
‫‪‬‬
‫‪N n1‬‬
‫‪N‬‬
‫‪1 N 1 2 j l k n 1 2N j l k 0‬‬
‫‪. e N‬‬
‫הביטוי המקורי (לפני ההכפלה) אם היינו מפרידים הוא‪:‬‬
‫‪ e‬‬
‫‪N n1‬‬
‫‪N‬‬
‫ניתן לראות כי מתקבל שוויון מלא בין שני הביטויים לפני ואחרי ההכפלה‪.‬‬
‫המסקנה היא שאם מכפילים ביטוי במספר השונה מ‪ 1-‬ומקבלים את אותו הדבר אז הביטוי הוא ‪.0‬‬
‫‪ f  0 ‬‬
‫‪‬‬
‫‪‬‬
‫‪ , f  ‬נסמן‪fˆ  n  bn :‬‬
‫בהינתן ווקטור‪ ; n  0,...., N  1 :‬‬
‫‪ f  N  1 ‬‬
‫‪‬‬
‫‪‬‬
‫‪N 1‬‬
‫‪( f  ‬נזכור כי ‪ B‬אורתונורמלי)‪.‬‬
‫‪n 0‬‬
‫בצורה מטריצית נכתוב‪ f  B  fˆ :‬או‪ fˆ  B*  f :‬ולכן המעבר מבסיס לבסיס ניתן לכתיבה‪f  k  :‬‬
‫‪N 1  2 jnk‬‬
‫‪N‬‬
‫‪e‬‬
‫‪k 0‬‬
‫או בצורה ההפוכה‪fˆ  k  :‬‬
‫‪2 jnk‬‬
‫‪N‬‬
‫‪N 1‬‬
‫‪e‬‬
‫‪k 0‬‬
‫‪1‬‬
‫‪fˆ  n  ‬‬
‫‪N‬‬
‫‪1‬‬
‫‪ f  n  ‬וזו היא בדיוק התמרת פורייה‪.‬‬
‫‪N‬‬
‫עד כאן אלגברה ליניארית! ‪‬‬
‫התמרה דו מימדית‪:‬‬
‫תמונה היא מטריצה (אמרנו את זה בערך כ‪ 1000-‬פעמים מתחילת הסמסטר‪ )...‬המיוצגת ע"י פיקסלים‪.‬‬
‫בביצוע התמרה נרצה לשמור על שורות ועמודות ומכאן המוטיבציה הראשונית לשיקולים בביצוע ההתמרה‪.‬‬
‫נתון בסיס‬
‫‪n‬‬
‫‪ . B  b1 ,..., bn  ‬נרצה לבנות בסיס לאוסף המטריצות במידות‪. M nn :‬‬
‫נגדיר‪  M nn :‬‬
‫‪|2‬‬
‫‪bTj‬‬
‫‪ ‬‬
‫‪ . bij  bi  b  bi  ‬לכן‪:‬‬
‫‪ ‬‬
‫‪T‬‬
‫‪j‬‬
‫‪Image Processing‬‬
‫‪ bij i , j 1,...,n‬היא קבוצת מטריצות במידות ‪ n ( . M nn‬מטריצות שונות)‪.‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫‪2‬‬
‫הרצאה ‪41.1.41 – 5‬‬
‫אם‪ b1 ,..., bn  :‬בסיס ל‪-‬‬
‫‪n‬‬
‫אז‪ bi bTj  :‬הוא בסיס ל‪. M nn -‬‬
‫‪‬‬
‫‪‬‬
‫כדי להוכיח שאוסף מטריצות היא בסיס מספיק להראות כי‪ 0nn   aij bij   aij bi bTj     aij bi bTj :‬עבור הצירוף‬
‫‪ij‬‬
‫‪ij‬‬
‫‪j  i‬‬
‫‪‬‬
‫הטריוויאלי בלבד‪ .‬דהיינו יש להראות כי‪( i, j : aij  0 :‬כי אז ‪ bi bTj ‬הם בלתי תלויים והמטריצות הן בסיס) בהתבוננות‬
‫בפיתוח האחרון ניתן להסיק כי בהכרח‪ a b  0 :‬‬
‫‪ij i‬‬
‫‪ . j :‬היות ו‪ bi -‬הוא ווקטור של בסיס אורתונורמלי אז בהכרח‪. i, j : aij  0 :‬‬
‫‪i‬‬
‫כעת נרצה לעבור מהבסיס הסטנדרטי לבסיס כלשהו ‪ bi bTj   M nn‬כאשר‪. f   gij bij :‬‬
‫טענה‪:‬‬
‫נתון‪ B  b1 ,..., bn  :‬בסיס ל‪-‬‬
‫‪n‬‬
‫ו‪ bi bTj  -‬בסיס ל‪ . M nn -‬עבור מטריצה‪ V  M nn :‬נרצה לכתוב‪V   uij bij :‬‬
‫כאשר‪ U nn :‬מטריצה שיש למצוא‪ .‬אז הקשר בניהן הוא‪. V  BUBT :‬‬
‫הוכחה‪:‬‬
‫*‬
‫‪‬‬
‫‪‬‬
‫נפתח בהגדרה‪. Vxy    uij bij    uij  bibTj    uij  bibTj    uij bixb jy   uij Bxi Byj :‬‬
‫‪xy‬‬
‫‪xy‬‬
‫‪ij‬‬
‫‪ij‬‬
‫‪ij‬‬
‫‪ ij‬‬
‫‪ xy ij‬‬
‫מאידך‪ ,‬נכפיל מטריצות‪. Vxy   BUBT    BxiU ij BTjy  U ij Bxi Byj :‬‬
‫‪ij‬‬
‫‪ij‬‬
‫‪xy‬‬
‫קיבלנו את אותו הדבר ולכן הוכחנו את הטענה‪.‬‬
‫* ‪ bix  b jy‬‬
‫‪xy‬‬
‫‪b b ‬‬
‫‪T‬‬
‫‪j‬‬
‫‪i‬‬
‫‪‬‬
‫‪‬‬
‫‪ ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪x, y‬‬
‫‪‬‬
‫‪‬‬
‫‪b jn   ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪B‬‬
‫‪b jx‬‬
‫‪bi1 ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪. bi bTj  bix  b j1‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪bin ‬‬
‫‪ ‬‬
‫מסקנה‪. V  BUBT  U  B1VBT :‬‬
‫נניח ‪ B‬מקיימת‪ B1  B* :‬ונקבל‪. U  B*V  B*  :‬‬
‫‪T‬‬
‫‪|3‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪41.1.41 – 5‬‬
‫ניישם את כל הפיתוחים לעיל על התמרת פורייה דו‪-‬מימדית‪:‬‬
‫עבור הבסיס‪ B  b1 ,..., bn  :‬ראינו כי ניתן לבנות בסיס חדש‪. bi bTj  :‬‬
‫עבור מטריצה ‪ f  x, y ‬שנרצה להעבירּה למטריצה‪ fˆ  x, y  :‬נקבל‪( fˆ  B* fB* :‬אין צורך ב‪ transpose-‬בביטוי השני משיקולי‬
‫סימטריה)‪ .‬לכן נקבל‪w y y ' :‬‬
‫' ‪ x x‬‬
‫‪N 1 N 1‬‬
‫‪  f  x ', y ' w‬‬
‫‪x ' 0 y '  0‬‬
‫‪1‬‬
‫‪. fˆ  x, y  ‬‬
‫‪N‬‬
‫מהות ההתרמה היא מעבר לתמונה חדשה המכילה ערכים מרוכבים‪. f  x, y   fˆ  x, y   R  x, y   iI  x, y  :‬‬
‫אפשר להציג את הערך המוחלט‪. fˆ  x, y   R 2  I 2 :‬‬
‫‪‬‬
‫‪‬‬
‫יותר נוח ויזואלית להציג את הלוג של הערך המוחלט באופן הבא‪. log 1  fˆ :‬‬
‫כשמסתכלים בתמונה חשוב לראות היכן מונחת ראשית הצירים‪ .‬שוב‪ ,‬ויזואלית נוח יותר להושיב את התמונה כך שמרכזה בראשית‪.‬‬
‫לשם כך נבצע מעבר‪ fˆ  u  u0 , v  v0  :‬‬
‫‪ u0 x  v0 y ‬‬
‫‪2 i‬‬
‫‪. f  x, y  e N‬‬
‫‪N‬‬
‫‪ u0  v0 ‬נקבל‪ fˆ  u  0.5N , v  0.5N  :‬‬
‫בפרט כאשר‪:‬‬
‫‪2‬‬
‫במקרה זה ה‪ DC -‬ישב במרכז התמונה‪.‬‬
‫‪|4‬‬
‫‪Image Processing‬‬
‫‪x y‬‬
‫‪ f  x, y  1‬‬
‫‪2 i  N‬‬
‫‪N ‬‬
‫‪ x y ‬‬
‫‪2 ‬‬
‫‪. f  x, y  e N  2‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪12.4.21 – 6‬‬
‫בסיסים למרחב התמונות‪:‬‬
‫המשך פיתוח מהרצאה קודמת‪:‬‬
‫ראינו כי בהינתן‪:‬‬
‫הפעולה‪:‬‬
‫‪ B  b1 ,..., bn  ‬הפעולה‪:‬‬
‫‪n‬‬
‫‪ ‬‬
‫‪* T‬‬
‫‪ B F B‬יוצרת ייצוג של ‪ F‬לפי בסיס חדש שאנו מגדירים‪.‬‬
‫*‬
‫‪ ‬‬
‫‪T‬‬
‫*‪ F  B* F B‬נקראת פעולה ֵספ ָָרבִּילִּית (ניתנת להפרדה)‪.‬‬
‫כאשר נדבר על בסיסים למרחב התמונות נתמקד בבסיסים ספרבילים (הנוצרים באופן שתואר בהרצאה קודמת)‪.‬‬
‫נזכור כי כל התכונות של התמרת פורייה מתקיימות‪.‬‬
‫ ההתמרה נותנת את העוצמה בכל תדר‪.‬‬‫ פעולת הקונבולוציה בזמן הופכת לכפל בתדר‪.‬‬‫‪ -‬התמרת פורייה של גאוסיאן היא גם גאוסיאן‪.‬‬
‫התמרת קוסינוס‪:‬‬
‫יהיו ווקטורים‪:‬‬
‫‪ . v  v0 ,..., vn  ‬מגדירים את ההתמרה באופן הבא‪:‬‬
‫‪T‬‬
‫‪n‬‬
‫‪   2 j  1 k ‬‬
‫‪1 n 1‬‬
‫‪v  j  cos ‬‬
‫‪‬‬
‫‪‬‬
‫‪2n‬‬
‫‪n j 0‬‬
‫‪‬‬
‫‪‬‬
‫‪vˆ  k   a  k ‬‬
‫‪   2 j  1 k ‬‬
‫‪1 n 1‬‬
‫‪a  k  vˆ  k  cos ‬‬
‫‪‬‬
‫‪‬‬
‫‪2n‬‬
‫‪n k 0‬‬
‫‪‬‬
‫‪‬‬
‫‪v j ‬‬
‫כאשר‪. k : a  k   2 , a  0   1 :‬‬
‫אם נסמן ב‪ B  b1 ,..., bn   n -‬את הבסיס החדש אז מתקיים‪B  BT , BBT  I :‬‬
‫(האיברים הם עם נורמה ‪ 1‬וניצבים זה לזה וגם הפעולה היא סימטרית)‪.‬‬
‫ניתן להגדיר התמרת קוסינוס דו‪-‬מימדית באופן הבא‪:‬‬
‫בהינתן תמונה ‪ , f‬התמרת מוגדרת ע"י הפעלתה על העמודות ועל השורות‪. B FB  BFB :‬‬
‫‪T‬‬
‫בסיס אופטימלי למרחב התמונות – ‪:)Principle Component Analysis( PCA‬‬
‫נתון תת‪-‬מרחב‪:‬‬
‫‪ . v1 ,..., vn  ‬נתון בסיס אורתונורמלי‪:‬‬
‫‪n‬‬
‫‪. B  b1 ,..., bd  ‬‬
‫‪d‬‬
‫ראינו את הקשר‪. v  Bu  u  BT v :‬‬
‫נסתכל בתת‪-‬מרחב הנפרש ע"י ‪. k  d , b1 ,..., bk   k‬‬
‫‪d‬‬
‫‪k‬‬
‫נסמן‪ . vi   uij b j   uij b j  vˆi :‬כעת‪ uˆi   ui1 ,...., uik  :‬ו‪ ui   ui1 ,...., uid  -‬וכן‪. ui  vi , uˆi  vˆi :‬‬
‫‪j 1‬‬
‫‪|1‬‬
‫‪T‬‬
‫‪j 1‬‬
‫‪d‬‬
‫האנרגיה היא‪:‬‬
‫‪T‬‬
‫‪n‬‬
‫‪k‬‬
‫‪d‬‬
‫‪n‬‬
‫‪n‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪uij2   uij2    uij2 ‬‬
‫‪‬‬
‫‪n i 1 j 1‬‬
‫‪n i 1 j 1‬‬
‫‪n i 1 j k 1‬‬
‫‪‬‬
‫‪2‬‬
‫‪1‬‬
‫‪ ui‬‬
‫‪n i‬‬
‫‪‬‬
‫‪2‬‬
‫‪1 n d‬‬
‫‪   uij2  E  ES  EN‬‬
‫‪n i 1 j k 1‬‬
‫‪Image Processing‬‬
‫‪n‬‬
‫‪1‬‬
‫‪ vi‬‬
‫‪n i 1‬‬
‫‪2‬‬
‫‪E‬‬
‫‪1 n‬‬
‫‪  vˆi‬‬
‫‪n i 1‬‬
‫‪.‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪12.4.21 – 6‬‬
‫‪ES‬‬
‫קיבלנו הפרדה לרכיב של המידע ורכיב של הרעש‪ .‬נרצה למצוא את הבסיס עבורו היחס‪:‬‬
‫‪EN‬‬
‫זה הוא הקריטריון שלפיו נרצה לפעול‪.‬‬
‫הוא מקסימלי‪.‬‬
‫‪d‬‬
‫‪k‬‬
‫‪2‬‬
‫‪1‬‬
‫ראינו כי‪ . vi   uij b j   uij b j  vˆi :‬נגדיר את הקריטריון שלנו בצורה קצת אחרת‪vi  vˆi :‬‬
‫‪‬‬
‫‪n‬‬
‫נרצה להראות שאותו ה‪ B -‬שממזער את הקריטריון לנו הוא גם ממזער את הרעש‪ .‬נתחיל מהפיתוח הבא עבור ‪ i‬מסוים‪:‬‬
‫‪. min‬‬
‫‪2‬‬
‫‪d‬‬
‫‪u‬‬
‫‪2‬‬
‫‪ij‬‬
‫‪‬‬
‫‪j  k 1‬‬
‫‪d‬‬
‫‪j‬‬
‫‪u b‬‬
‫‪ij‬‬
‫‪2‬‬
‫‪‬‬
‫‪k‬‬
‫‪j‬‬
‫‪k 1‬‬
‫‪d‬‬
‫‪u b  u b‬‬
‫‪ij‬‬
‫‪ij‬‬
‫‪j‬‬
‫‪‬‬
‫‪2‬‬
‫‪. vi  vˆi‬‬
‫כאשר השוויון האחרון נובע מפרסבל‪.‬‬
‫‪d‬‬
‫‪n‬‬
‫‪n‬‬
‫‪2‬‬
‫‪1‬‬
‫‪1‬‬
‫נרוץ על כל ה‪ i -‬ונקבל‪vi  vˆi    uij2  EN :‬‬
‫‪‬‬
‫‪n i 1‬‬
‫‪n i 1 j k 1‬‬
‫הגענו אליו משני הכיוונים ולכן המסקנה היא שהבסיס החדש הוא אכן ממקסם את היחס הקודם וממזער את הרעש‪.‬‬
‫‪ .‬קיבלנו שוב את ערך הרעש כהערך המינימלי‪.‬‬
‫אינטואיציה אחרת לקריטריון‪:‬‬
‫נניח ווקטורים‪:‬‬
‫‪d‬‬
‫‪ . v1 | v2 |,.....,| vd , v ‬מהווקטורים האלה מקבלים‪:‬‬
‫‪k‬‬
‫‪. uˆ1 ,....,| uˆk , uˆ ‬‬
‫‪ b1T v ‬‬
‫מתעלמים משאר הווקטורים שאינם בתת‪-‬המרחב לפי‪. uˆ   T  :‬‬
‫‪b v‬‬
‫‪ k ‬‬
‫משם מעבירים חזרה למימד‪:‬‬
‫‪k‬‬
‫‪d‬‬
‫‪ vˆ1 | vˆ2 |,.....,| vˆd , vˆ ‬כאשר‪. vˆ  Buˆ   bi uˆi :‬‬
‫‪i 1‬‬
‫יש כאן עיקרון של צוואר בקבוק‪ ,‬מכיוון שמהות הווקטורים צריכה להישמר ע"י ‪ k‬הווקטורים של ההתמרה‪.‬‬
‫צוואר הבקבוק מובנה מפעולות לינאריות‪ .‬היום‪ ,‬אחד התחומים המפורסמים יותר הוא שימוש בעיקרון זה באמצעות פעולות שאינן‬
‫לינאריות (נקרא‪.)deep learning :‬‬
‫נסביר כיצד למצוא את הבסיס הנ"ל‪:‬‬
‫‪k‬‬
‫‪1 n k 2‬‬
‫נחזור לעיקר הבעיה יש לנו‪ , v1 ,..., vn  n :‬רוצים‪ . vˆi   uij b j :‬ראינו‪ . ES   uij :‬נפתח‪:‬‬
‫‪n i 1 j 1‬‬
‫‪i 1‬‬
‫‪k‬‬
‫‪k‬‬
‫‪1 n k 2 1 n k T T‬‬
‫‪1‬‬
‫‪‬‬
‫‪uij   b j vi vi b j   bTj   vi viT  b j   bTj  A  b j‬‬
‫‪‬‬
‫‪n i 1 j 1‬‬
‫‪n i 1 j 1‬‬
‫‪j 1‬‬
‫‪j 1‬‬
‫‪n‬‬
‫‪‬‬
‫נמצא את‪:‬‬
‫‪k‬‬
‫‪ES ‬‬
‫‪ b1 ,..., bk ‬שממקסמים את הביטוי הנ"ל‪.‬‬
‫מספר הערות על המטריצה‪: A :‬‬
‫ המטריצה סימטרית‪.‬‬‫‪T‬‬
‫ המטריצה מוגדרת וחיובית‪ ,‬דהיינו‪ . x Ax  0 :‬כל הע"ע שלה חיוביים‪ .‬הווקטורים העצמיים‪ w1 ,...., wn :‬הם אי‪-‬שליליים‪.‬‬‫ז"א‪ , 1  2  ....  n  0 :‬כאשר‪. Awi  i wi :‬‬
‫‪|2‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪12.4.21 – 6‬‬
‫נחזור לבעיה שלנו‪ .‬המקסימום יתקבל כאשר ניקח ‪ k‬הווקטורים העצמיים של ‪ A‬המתאימים לע"ע העצמיים הגבוהים ביותר‪.‬‬
‫הוכחה למקרה של ווקטור אחד‪:‬‬
‫יש למצוא‪ max bT Ab :‬כאשר‪ . b  1 :‬ידוע כי ‪ A‬סימטרית ומוגדרת חיובית‪ .‬נניח‪ 1  2  ....  n  0 :‬הע"ע שלה‬
‫‪d‬‬
‫ו‪ w1 ,...., wn -‬הו"ע שלה‪ .‬אפשר לכתוב‪ b   ai wi :‬ונקבל‪:‬‬
‫‪i 1‬‬
‫‪d‬‬
‫‪ d‬‬
‫‪‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪bT Ab    ai wi  A   ai wi     ai wi    a j  j w j    ai2i  1  ai2  1‬‬
‫‪i 1‬‬
‫‪ i 1‬‬
‫‪  i 1‬‬
‫‪  i 1‬‬
‫‪  j 1‬‬
‫‪ i 1‬‬
‫‪T‬‬
‫קיבלנו כי לכל ‪. b Ab  1 : b‬‬
‫‪d‬‬
‫‪T‬‬
‫‪d‬‬
‫‪d‬‬
‫‪T‬‬
‫‪d‬‬
‫עבור‪ b  w1 :‬מקבלים‪ . bT Ab  w1T Aw1  1 :‬לכן‪. w1  arg max bT Ab :‬‬
‫‪b‬‬
‫עבור ‪ k‬כללי ההוכחה קצת יותר ארוכה ולא ניכנס אליה במסגרת הקורס‪ .‬נסתפק בכך שהרעיון זהה וההוכחה נכונה‪.‬‬
‫נסכם‪:‬‬
‫בהינתן‪:‬‬
‫‪d‬‬
‫‪ , v1 ,..., vn ‬כאשר מחפשים תת‪-‬מרחב ממימד ‪ k‬שבו התמונות יכולות להימצא‪:‬‬
‫‪d‬‬
‫‪b1 ,..., bk ‬‬
‫‪1 d‬‬
‫נבנה את מטריצת האוטוקורלציה‪vi viT :‬‬
‫‪‬‬
‫‪n i 1‬‬
‫הווקטורים שמהווים את הבסיס שלנו יהיו ה‪ k -‬הראשנים בעלי הע"ע הגבוהים ביותר‪.‬‬
‫‪ A ‬ונמצא את הע"ע והו"ע שלה‪.‬‬
‫‪|3‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪28.4.31 – 7‬‬
‫תזכורת ‪:PCA‬‬
‫יש לנו ווקטורים‪  x1 ,..., xn   d :‬וחיפשנו תת‪-‬מרחב שבו נמצאות כל הנקודות‪.‬‬
‫בסופו של דבר האלגוריתם שראינו הוא‪:‬‬
‫‪1 n‬‬
‫הגדרת המטריצה‪ . A   xi xiT :‬המטריצה היא בעלת ע"ע חיוביים‪.‬‬
‫‪n i 1‬‬
‫יצירת תת‪-‬מרחב ממימד ‪ k‬ע"י לקיחת הווקטורים העצמיים‪ v1 ,..., vn  :‬המתאימים לע"ע העצמיים מהגדול ביותר כלפי הקטן‪.‬‬
‫‪  v1 , x  ‬‬
‫‪‬‬
‫‪‬‬
‫‪ x  ‬כלומר‪. x  xˆ    vi , x  x :‬‬
‫‪‬‬
‫‪i 1‬‬
‫‪ v , x ‬‬
‫‪ k‬‬
‫‪‬‬
‫‪k‬‬
‫הייצוג ניתן ע"י‪:‬‬
‫‪k‬‬
‫‪k‬‬
‫‪k‬‬
‫‪k‬‬
‫‪k‬‬
‫‪j 1‬‬
‫‪j 1‬‬
‫‪j 1‬‬
‫‪j 1‬‬
‫אנרגית הסיגנל נכתבה‪ . ES   vTj Av j :‬נוכל לכתוב‪. ES   vTj Av j   vTj  j v j    j :‬‬
‫קיבלנו ביטוי מפורש לאנרגית הסיגנל בעזרת הע"ע‪.‬‬
‫‪d‬‬
‫בפרט‪ ,‬האנרגיה של כל הסיגנל היא‪. ES    j :‬‬
‫‪j 1‬‬
‫באופן טיפוסי‪ ,‬הע"ע הם מספרים שהולכים בקטנים‪ ,‬אך קיים תחום שבו הם קטנים בצורה משמעותית‪.‬‬
‫עבור תחום זה‪ ,‬לפי הקריטריון שלנו אנו בוחרים את מספר הע"ע שהכי רלוונטיים לאנרגית הסיגנל שלנו‪.‬‬
‫תת‪-‬מרחב אפיני‪:‬‬
‫‪k‬‬
‫תת המרחב לינארי הנפרש ע"י הווקטורים נראה בצורה הבאה‪.  a j v j :‬‬
‫‪j 1‬‬
‫‪k‬‬
‫תת‪-‬מרחב אפיני מוגדר כתזוזה מהמרכז בגודל כלשהו‪. v0   a j v j :‬‬
‫‪j 1‬‬
‫במקרה שלנו‪ ,‬תת‪-‬המרחב הוא אפיני‪.‬‬
‫נכליל את המושג של ‪ PCA‬לתת‪-‬מרחב אפיני‪.‬‬
‫‪1‬‬
‫בשלב הראשון נחשב את הווקטור הממוצע‪ xi :‬‬
‫‪n‬‬
‫לאחר מכן נחשב את המרחקים‪. x1  x , x2  x ,....., xn  x , d :‬‬
‫‪. vo  x ‬‬
‫בסוף נפעיל ‪ PCA‬על הווקטורים‪ v1 ,..., vk :‬עם המטריצה‪. A    xi  x  xi  x  :‬‬
‫‪T‬‬
‫‪ f f ‬‬
‫באלגוריתם‪ Harris Corner detection :‬ביצענו גזירה לפי כל ציר ומציאת שינויים‪.  ,  :‬לקחנו את ווקטורי הנגזרות‪,‬‬
‫‪ x y ‬‬
‫לקחנו מטריצה ‪ 2X2‬ומצאנו שני ע"ע‪ .‬למעשה עשינו ‪ PCA‬באלגוריתם זה‪.‬‬
‫‪|1‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪28.4.31 – 7‬‬
‫זיהוי פנים‪:‬‬
‫תיאור המשימה‪:‬‬
‫תחילה מצלמים תמונה של אדם מספר פעמים‪ .‬נניח ומבצעים זאת על כל האנשים בחדר מסוים‪( .‬השלב נקרא‪.)training data :‬‬
‫כעת המטרה היא להחליט בהינתן תמונה עם פרצוף חדש האם היא של אחד מהאנשים בחדר‪.‬‬
‫ישנה משימה קשה יותר והיא איתור פנים בתוך תמונה )‪ – (Face detection‬לא נעסוק בה‪.‬‬
‫כדי לבצע את המטרה שלנו נעזר ב‪ ,PCA-‬המעביר את התמונה המקורית דרך צוואר‪-‬בקבוק ומחזיר תמונה הקרובה לתמונה‬
‫המקורית עם מינימום שגיאה‪ .‬צוואר הבקבוק הוא המהות של התמונה‪.‬‬
‫כאשר נבצע זאת על תמונה כלשהי מתוך ה‪ data-‬שלנו נקבל תת‪-‬מרחב אפיני‪.‬‬
‫נניח כי תת‪-‬המרחב מכיל שני ווקטורים‪( v0 , v1 , v2 :‬יחד עם וקטור הממוצע לפי הגדרת תת‪-‬המרחב)‪.‬‬
‫כעת כל תמונה תיוצג ע"י‪ . x  v0  a1v1  a2v2 :‬נקרא לכל ווקטור עצמי‪.EigenFace :‬‬
‫‪1 1‬‬
‫‪1‬‬
‫בשלב האימון מצאנו את הווקטורים העצמיים והטלנו אותו על תת‪-‬המרחב הנפרש ע"י שני ווקטורים‪.‬‬
‫בשלב הזיהוי נרצה למצוא התאמה של הערך שהתקבל עבור התמונה החדשה לבין אחד‬
‫מהאזורים של התמונות שצולמו‪ .‬הקריטריון שלנו נקרא‪ :‬שכן קרוב )‪.(NN‬‬
‫נניח ויש לנו תמונה מגודל ‪ ,1000x1000‬ז"א‪:‬‬
‫‪d 106‬‬
‫‪3‬‬
‫‪3 3‬‬
‫דוגמא לתת‪-‬מרחב הנפרש ע"י שני ווקטורים‬
‫ובו יש ‪ 3‬תמונות מ‪ 3-‬פרצופים שונים‪.‬‬
‫‪. x1 ,.., xn ‬‬
‫המטריצה ‪ A‬תהיה בגודל‪ 106 x106  1012 :‬וזה כבר לא יעבוד‪.‬‬
‫לכאורה מדוגמא זו ברור כי השימוש ב‪ PCA-‬בזבני ולא פרקטי לחלוטים עבור תמונות יותר גדולות‪.‬‬
‫דיון קצר בתחום האלגברה ליניארית‪:‬‬
‫‪n‬‬
‫נניח שיש לנו ווקטורים‪:‬‬
‫‪d‬‬
‫‪ x1T ‬‬
‫‪ ‬‬
‫ניתן לראות כי‪xn    :‬‬
‫‪ xT ‬‬
‫‪ n‬‬
‫‪‬‬
‫‪‬‬
‫נסמן‪ :‬‬
‫‪‬‬
‫‪nn‬‬
‫‪1‬‬
‫‪ . n  d ; x1 ,....., xn ‬נסתכל על‪xi xiT :‬‬
‫‪‬‬
‫‪n i 1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪X dn X Tdn  X dn X nd   x1‬‬
‫‪n‬‬
‫‪n‬‬
‫‪n‬‬
‫‪x2‬‬
‫‪‬‬
‫‪‬‬
‫‪xn   ‬‬
‫‪‬‬
‫‪‬‬
‫‪T‬‬
‫‪i‬‬
‫‪x xj‬‬
‫טענה‪:‬‬
‫נניח‪ Mb  b :‬עבור‪,   0 :‬‬
‫‪x2‬‬
‫‪n‬‬
‫‪ x1T ‬‬
‫‪ ‬‬
‫‪    x1‬‬
‫‪ xT ‬‬
‫‪ n‬‬
‫‪ , b ‬אז‪:‬‬
‫‪d‬‬
‫‪ A ‬ונסמן מטריצה‪. X   x1 ,...., xn nxd :‬‬
‫‪.A‬‬
‫‪. M nn  X X dn‬‬
‫‪T‬‬
‫‪nd‬‬
‫‪ X dn  b ‬הוא ו"ע של ‪ A‬המתאים לע"ע ‪. ‬‬
‫הוכחה‪:‬‬
‫נתון‪ . XX b  Mb  b :‬נקבל‪Xb  XX Xb  XMb  X b    Xb  :‬‬
‫‪T‬‬
‫‪T‬‬
‫‪‬‬
‫‪T‬‬
‫‪‬‬
‫‪. A  Xb   XX‬‬
‫כמובן ש‪ Xb  0 -‬כי‪. Mb  X T Xb  b  0 :‬‬
‫נציין כי הטענה היא סימטרית לחלוטין‪ .‬היא אם"ם‪.‬‬
‫‪|2‬‬
‫‪Image Processing‬‬
‫‪2 2‬‬
‫‪2‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪28.4.31 – 7‬‬
‫נציין כי על אף ש‪ A-‬מכיל הרבה יותר ע"ע מאשר ‪ M‬הטענה נכונה כי רוב הע"ע של ‪ A‬הם אפס‪.‬‬
‫נסכם את הדיון באופן הבא‪:‬‬
‫בהינתן ווקטורים‪ , n  d ; x1 ,....., xn  d :‬נבנה מטריצה בגודל ‪. M ij  xi x j  : nxn‬‬
‫נמצא את הו"ע של ‪: M‬‬
‫‪n‬‬
‫‪ b1 ,...., bk ‬ואת הע"ע המתאימים להם כמובן‪.‬‬
‫נרכיב ווקטור עצמי‪ . vi   x1 ,...., xn  bi  d :‬ונקבל‪:‬‬
‫התגברנו על הבעיה של ריבוי המימדים‪.‬‬
‫‪d‬‬
‫‪. v1 ,...., vk ‬‬
‫האלגוריתם מכיל הרבה בעיות‪.‬‬
‫ישנן מספר דרכים להגבר עליהם ואכן היום יש דברים מפותחים יותר‪.‬‬
‫אחד הפיתוחים נובע משלב האימון‪ ,‬בו מתבצעת גם למידה‪.supervised training :‬‬
‫לומדים דברים כגון מין האדם‪ ,‬אביזרים נוספים (משקפיים וכו')‪.‬‬
‫‪|3‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪5.5.31 – 8‬‬
‫‪ Color Representation‬ודחיסת תמונות‪:‬‬
‫הפורמט של תמונת צבע הוא ‪ 22‬ביט‪ ,‬כל ‪ 8‬ביטים אומרים כמה יש לקחת מכל צבע בסקלה ‪. R G B .0-222‬‬
‫המטריצות שלנו כעת תהיינה במידות‪. n  n  3 :‬‬
‫ניתן לתאר את הצבעים ע"י ‪:color cube‬‬
‫ניתן להציג את הצבעים במרחבי צבע אחרים‪.‬‬
‫‪Y  0.177 0.813 0.011   R ‬‬
‫דוגמא‪ -  I    0.54 0.263 0.174 G  :‬כאשר‪.Q = blue-yellow , I = red-green , Y = luminance :‬‬
‫‪Q   0.246 0.675 0.404   B ‬‬
‫זו היא מטריצת המעבר בערוצי הטלוויזיה‪ .‬מקור המספרים הוא בתקנים בעיקרו‪.‬‬
‫היתרון המובהק בתצורה זו הוא שניתן לבצע ‪ Down-sampling‬ל‪ I -‬ו‪ Q-‬פי ‪ 2‬והעין האנושית לא מרגישה בכך‪.‬‬
‫מכאן המוטיבציה לדחיסת ‪.JPEG‬‬
‫* נוסחה נוספת היא ‪ - LAB‬לא נעסוק בה כאן‪.‬‬
‫תקנים לדחיסת תמונה ווידאו‪:‬‬
‫ישנן שתי סוגי דחיסות‪:‬‬
‫‪ – lossless .1‬דחיסה ללא איבוד מידע‪.‬‬
‫‪ - lossy .2‬דחיסה הכוללת איבוד מידע בתוכה‪.‬‬
‫דוגמאות לאלגוריתמי דחיסה מסוג ‪.LZ (Zip) , Huffman :lossless‬‬
‫דוגמאות לאלגוריתמי דחיסה מסוג ‪.JPEG , MPEG :lossy‬‬
‫הבחנה נוספת בין סוגי האלגוריתמים היא בסוג הדחיסה‪ ,‬האם היא ‪ Variable length‬או ‪.Fixed length‬‬
‫למשל‪ ,‬בדחיסת דיבור מבצעים עפ"י ‪ – Fixed length‬ז"א גודל ה‪ frame-‬קבוע‪.‬‬
‫אלגוריתמים המשתמשים ב‪ Variable length-‬הם אלו שגודלם תלוי בתוכן עצמו‪ .‬אנו נעסוק בהם‪.‬‬
‫נדון באלגוריתמים שהם ‪ Lossy‬ו‪.Variable length-‬‬
‫‪|1‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪5.5.31 – 8‬‬
‫קוד ‪:Huffman‬‬
‫ב‪ JPEG-‬יש שני דברים כללים‪ ,‬האחד הוא ‪ DCT‬והשני הוא קוד ‪.Huffman‬‬
‫נניח משתנה אקראי ‪ x‬שיכול לקבל את הערכים ‪ 1,...., n‬בהסתברויות‪ p1 ,...., pn :‬בהתאמה‪.‬‬
‫נרצה לשלוח סדרת משתנים אקראיים‪ x1 ,..., xn :‬מצד אחד לצד שני‪.‬‬
‫‪1  00‬‬
‫‪2‬‬
‫‪3‬‬
‫‪ xi : 1‬‬
‫מתאימים קוד לכל ערך של ‪ x‬כגון‪:‬‬
‫‪ x  ‬נקודד‪2  100 :‬‬
‫‪pi : 0.5 0.25 0.25‬‬
‫‪‬‬
‫‪3  111‬‬
‫ונשלח‪ . 3213132  111,100,00,111,00,111,100 :‬הצד המקבל לא יודע כמה ערכים קודדו‪.‬‬
‫נצטמצם לקודים הנקראים‪ .prefix free :‬המשמעות היא שאף מילת קוד אינה תחילית של מילת קוד אחרת‪.‬‬
‫‪1  00‬‬
‫דוגמא לקוד כזה‪ . 2  11 :‬במקרה זה לא תיתכן דו‪-‬משמעות‪ .‬לקוד זה מובטח פיענוח יחיד‪.‬‬
‫‪3  10‬‬
‫לכל מילת קוד יש אורך (מספר הביטים של הקידוד שלה) ויסומן‪ . li :‬את הקוד עצמו נסמן ב‪. ci -‬‬
‫‪n‬‬
‫האורך הממוצע של מילת קוד הוא‪. l  c    pi  l  ci  :‬‬
‫‪i 1‬‬
‫‪3‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫עבור הדוגמא לעיל נקבל‪. l  c    pi  l  ci    2   3   3  2.5 :‬‬
‫‪2‬‬
‫‪4‬‬
‫‪4‬‬
‫‪i 1‬‬
‫נרצה למצוא את הקוד בעל האורך הממוצע המינימלי‪.‬‬
‫‪1 0‬‬
‫עבור הקידוד‪ 2  11 :‬נקבל למשל‪ . l  c   1.5 :‬משמע שקוד זה הוא טוב יותר‪.‬‬
‫‪3  10‬‬
‫לפי עיקרון זה נבנה את קוד ‪ Huffman‬עבור הדוגמא הבאה‪. 0.2 , 0.25 , 0.25 , 0.15 , 0.15 :‬‬
‫נסתכל על שתי ההסתברויות הכי קטנות ונאחד אותם‪. 0.2 , 0.25 , 0.25 , 0.15 , 0.15  0.2 , 0.25 , 0.25 , 0.3 :‬‬
‫נחזור על התהליך‪. 0.2 , 0.25 , 0.25 , 0.3  0.45 , 0.25 , 0.3 :‬‬
‫כן‪ 0.45 , 0.25 , 0.3  0.45 , 0.55 :‬ובסוף‪. 0.45 , 0.55  1 :‬‬
‫נבנה עץ ונתאים לו את הערכים באופן הבא‪:‬‬
‫‪|2‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪5.5.31 – 8‬‬
‫אלגוריתם ‪:JPEG‬‬
‫בכל שלב עובדים על חלקים בגודל ‪( 8  8‬משכפלים בקצוות במידה והגודל אינו מתחלק ב‪.)8-‬‬
‫לאחר מכן מבצעים התמרת ‪ Forward DCT‬ועושים לתוצאות קוונטיזציה לפי טבלה מסוימת‪.‬‬
‫פעולה זו הוא ‪ .lossy‬לאחר מכן עושים קידוד לפי ‪ Huffman‬ומקבלים את התמונה הדחוסה‪.‬‬
‫זה באופן כללי‪ .‬בכיוון ההפוך‪ ,‬הכל חוזר חלילה‪.‬‬
‫‪n 1 n 1‬‬
‫‪1‬‬
‫‪ 2x 1 ‬‬
‫‪ 2 y 1 ‬‬
‫‪fˆ  i, j  ‬‬
‫‪a  i  a  j   f  x, y  cos ‬‬
‫‪i  cos ‬‬
‫התמרת ‪ DCT‬דו‪-‬מימדית‪j  :‬‬
‫‪2n‬‬
‫‪ 2n‬‬
‫‪‬‬
‫‪ 2n‬‬
‫‪‬‬
‫‪x 0 y 0‬‬
‫‪‬‬
‫‪1/ 2 i  0‬‬
‫‪ a  i   ‬ו‪. n  8 -‬‬
‫כאשר‪:‬‬
‫‪1‬‬
‫‪i‬‬
‫‪‬‬
‫‪0‬‬
‫‪‬‬
‫‪‬‬
‫במצגת הקשורה להרצאה מופיעה דוגמא יפה‪.‬‬
‫בתחילה מתואר בלוק ‪ 8  8‬וביצוע ההתמרה עליו (לאחר הורדה של ‪ 128‬מכל הערכים)‪ .‬לאחר מכן מחלקים כל פיקסל במספר קבוע‬
‫הנמצא בטבלת ‪ Q‬הקבועה בתקן‪ .‬שומרים את המנה (זו היא פעולה ‪ .)lossy‬מקבלים הרבה אפסים‪.‬‬
‫פעולת ה‪ zig-zag-‬מרכזת את התדרים הגבהים תחילה כהכנה לקידוד ‪.Huffman‬‬
‫לעניין הטיפול בקידוד‪ ,‬מפרידים את ה‪ DC-‬וה‪ .AC-‬מכניסים לפי כל ערך מספר המייצג את כמות האפסים שלפניו‪.‬‬
‫כעת נקודד כל זוג סדור ‪  0, 4 ‬המציין כמה אפסים יש לפני המספר‪ ,‬והערך של המספר‪.‬‬
‫למשל‪  6, 0  :‬ציין כי ישנם ‪ 6‬אפסים לפני המספר אפס ו‪  0,1 -‬מציין כי יש ‪ 0‬אפסים לפני המספר אחד‪.‬‬
‫לאחר מכן מקודדים את הבלוק‪ .‬לעניין ‪ DC‬מקודדים אותו ע"י הסתמכות על הפרשים בין בלוקים סמוכים‪.‬‬
‫‪|3‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪21.5.21 – 9‬‬
‫אלגוריתם ‪:MPEG‬‬
‫עיקר התכנים מופיעים במצגות שבאתר‪.‬‬
‫‪|1‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪19.5.11 – 10‬‬
‫עיבוד טקסטים ושימוש המטריקות לעיבוד תמונה‪:‬‬
‫נרצה לשאול שאלות כגון האם טקסט נתון עוסק בנושא מסוים‪.‬‬
‫נרצה לחפש טקסט דומה‪.‬‬
‫המושג ‪ bag of words‬מתייחס להסתכלות על מסמך כאל אוסף של מילים ללא התייחסות למשמעות שלהן‪.‬‬
‫בצורה זו ניתן לייצג את המסמך לפי היסטוגרמת שכיחויות של המילים‪.‬‬
‫גוגל עובד בצורה זו כאל אנו מזינים לו שאלה‪.‬‬
‫כדי למצוא מסמך דומה נוכל לחפש דמיון בין מסמכים ולמצוא מרחק אוקלידי‪.‬‬
‫‪ X ,Y ‬‬
‫‪. cos  X , Y  ‬‬
‫מטריקה אחת היא מטריקת קוסינוס המוגדרת‪:‬‬
‫‪X Y‬‬
‫בתחום שלנו – עיבוד תמונה ‪ -‬כדי לפתח את שיטה זו יש ליצור מילים וויזואליות ומילון וויזואלי )‪.(Visual words & dictionary‬‬
‫נסתכל על כל בלוק כאל אובייקט קטן ונתחיל ממנו בהגדרות‪ .‬נעבוד עם רזולוציה של ‪ 01 X 01‬פיקסלים‪.‬‬
‫מצד אחד זה לא הורס את התמונה לגמרי ומצד שני קיים סיכוי שזה יחזור על עצמו‪.‬‬
‫יש לנו‪ 256100  2800 :‬בלוקים אפשריים שזה יותר מדי‪ .‬לכן נחלק אותם לקבוצות – נבצע קוונטיזציה ונבנה מילון‪.‬‬
‫הפעולה נקראת ‪( clustering‬אשּכּול)‪.‬‬
‫‪:Clustering‬‬
‫‪ .‬הנקודות מפוזרות ל‪ 3-‬קבוצות ולכן ע"י הסתכלות בעין קל להפריד אותם‪.‬‬
‫נניח ויש לנו אוסף נקודות במרחב‬
‫בפעולה זו אנו מבצעים ‪ clustering‬ואת זה נרצה לגרום למחשב לעשות‪ ,‬ז"א נרצה לגרום למחשב לדעת לחלק אזורים של מידע‪.‬‬
‫‪2‬‬
‫נניח ויש‪:‬‬
‫‪ x1 ,...., xn ‬ונרצה לחלק אותם ל‪ k -‬קבוצות שיאופיינו ע"י המרכזים‪:‬‬
‫‪d‬‬
‫למעשה כל ‪ label‬של נקודה ‪ xi‬הוא‪:‬‬
‫הסכום הוא‪:‬‬
‫‪2‬‬
‫‪1 n k‬‬
‫‪ min xi  c j‬‬
‫‪n i 1 j 1‬‬
‫‪2‬‬
‫‪d‬‬
‫‪. c1 ,...., ck ‬‬
‫‪k‬‬
‫‪. li  arg min xi  c j‬‬
‫‪j 1‬‬
‫‪ . S  c1 ,...., ck  ‬מטרתינו היא למצוא את המינימום‪. min S  c1 ,...., ck  :‬‬
‫‪c1 ,....,ck‬‬
‫כדי למצוא את המינימום נעזר באלגוריתם‪ .k-means :‬להלן הפירוט‪:‬‬
‫א‪.‬‬
‫יש לקחת (לבחור) מרכזים אקראיים‪:‬‬
‫‪2‬‬
‫‪d‬‬
‫‪. c1 ,...., ck ‬‬
‫‪k‬‬
‫‪. i  1,..., n : li  arg min xi  c j‬‬
‫ב‪.‬‬
‫שיוך – משייכים כל נקודה למרכז‪:‬‬
‫ג‪.‬‬
‫בניית מרכזים חדשים – כל מרכז הוא ממוצע כל הנקודות עם ‪: j label‬‬
‫ד‪.‬‬
‫הווקטורים עם ה‪ label-‬הזה‪.‬‬
‫חוזרים חלילה עד להתכנסות‪.‬‬
‫‪j 1‬‬
‫‪x‬‬
‫‪i‬‬
‫‪|1‬‬
‫‪Image Processing‬‬
‫‪i|li  j‬‬
‫‪num‬‬
‫‪ ci ‬כאשר‪ num :‬הוא מספר‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬
‫הרצאה ‪19.5.11 – 10‬‬
‫אנליזת ביצועים של האלגוריתם‪:‬‬
‫‪2‬‬
‫‪1 n k‬‬
‫כדי להוכיח התכנסות עלינו להראות כי‪min xi  c j :‬‬
‫‪‬‬
‫‪n i 1 j 1‬‬
‫מרכזים מקיימים‪. S  c1 ,...., ck   S  c1 ,...., ck  :‬‬
‫‪after‬‬
‫‪ S  c1 ,...., ck  ‬לפני ואחרי בחירת‬
‫‪before‬‬
‫נזכר בתרגיל הסתברותי קטן‪:‬‬
‫‪n‬‬
‫‪n‬‬
‫‪1 n‬‬
‫‪1‬‬
‫‪1‬‬
‫‪2‬‬
‫‪2‬‬
‫נתונות מדידות‪ . y1 ,...., yn :‬מגדירים ממוצע‪ . y   yi :‬אז מתקיים‪ yi  y   y    yi  a  :‬‬
‫‪‬‬
‫‪n i 1‬‬
‫‪n i 1‬‬
‫‪n i 1‬‬
‫או במילים אחרות‪. var  y   y  E  yi  a  :‬‬
‫‪2‬‬
‫ווקטורית נאמר כי לכל‪:‬‬
‫‪v ‬‬
‫‪d‬‬
‫‪2‬‬
‫‪n‬‬
‫‪  yi  v‬‬
‫‪i 1‬‬
‫לעניינינו‪ ,‬נתונות נקודות‪:‬‬
‫באופן הבא‪:‬‬
‫‪2‬‬
‫‪d‬‬
‫‪2‬‬
‫‪n‬‬
‫‪.  yi  y‬‬
‫‪i 1‬‬
‫‪ . x1 ,...., xn ‬נניח ונתונים ה‪-label-‬ים הכי טובים‪ ,‬נוכל לכתוב את ה‪score-‬‬
‫‪n‬‬
‫‪ . S  l1 ,...., ln ; c1 ,...., ck    xi  cli‬אם נבחר את‪:‬‬
‫‪i 1‬‬
‫‪2‬‬
‫‪k‬‬
‫‪i  1,..., n : li  arg min xi  c j‬‬
‫‪j 1‬‬
‫אז זה יהיה הדבר הטוב ביותר שנוכל לעשות‪.‬‬
‫"נשחק" את המשחק ההפוך – נקבע את ה‪ li -‬ונשאל את עצמינו מהם ה‪ ci -‬הכי טובים ששייכים להם‪.‬‬
‫נרשום‪:‬‬
‫‪2‬‬
‫‪n‬‬
‫‪k‬‬
‫‪   xi  c j‬‬
‫‪j 1 i|li  j‬‬
‫‪2‬‬
‫‪n‬‬
‫‪ .  xi  cli‬ה‪ c j -‬שייתן את המינימום הוא‪ ,‬בהקשר לתרגיל שעשינו למעלה‪:‬‬
‫‪i 1‬‬
‫‪2‬‬
‫‪n‬‬
‫‪k‬‬
‫‪   xi  x j‬‬
‫‪j 1 i|li  j‬‬
‫‪2‬‬
‫‪xi  c j‬‬
‫‪n‬‬
‫‪k‬‬
‫‪‬‬
‫‪j 1 i|li  j‬‬
‫נסכם ונאמר כי פתחנו בבחירת קבוצה‪ c1 ,...., ck :‬ובסוף התהליך קיבלנו‪ . c1' ,...., ck' :‬נראה כי ה‪ score-‬של סוף התהליך קטן יותר‬
‫משל תחילתו‪:‬‬
‫'‬
‫'‬
‫'‬
‫'‬
‫'‬
‫'‬
‫'‬
‫‪S  c1 ,...., ck   S  l1 ,...., ln ; c1 ,...., ck   S  l1,...., ln ; c1,...., ck   S l1,...., ln ; c1,...., ck   S  c1 ,...., ck' ‬‬
‫‪li  arg min xi c j‬‬
‫‪li' arg min xi' c'j‬‬
‫מכיוון שהכל בדיד‪ ,‬מובטח כי לאחר עד ‪ 01-01‬איטרציות האלגוריתם ייעצר‪.‬‬
‫בהקשר של תמונות‪ ,‬לאחר שנבנה בלוקים עלינו להחליט כמה מילים נרצה שיהיו במילון שלנו‪ ,‬זה הוא למעשה ‪. k‬‬
‫‪|2‬‬
‫‪Image Processing‬‬
‫‪ -‬סיכום ועריכה מאת שי ידרמן‬