Summary of Image Processing - 2023 PDF

Document Details

ExceedingSaxophone

Uploaded by ExceedingSaxophone

Hebrew University of Jerusalem

2023

Sharon Rotgeizer

Tags

image processing computer vision image analysis digital image

Summary

This document is a summary of an image processing course from 2023. It provides a concise overview of the course content and topics like image acquisition, histograms, geometric operations, and more. The summary also discusses the challenges associated with computer vision.

Full Transcript

‫שרון רוטגייזר‬ ‫עיבוד תמונה‬ ‫הקדמה‬ ‫סיכום זה נוצר על ידי‪ ,‬כדי לנסות ולהנגיש את הקורס הזה‪ ,‬שקשה ממילא לסטודנטים ועלול‬ ‫להרגיש מאוד כבד‪.‬החוברת תאפשר לכם לחפש במ...

‫שרון רוטגייזר‬ ‫עיבוד תמונה‬ ‫הקדמה‬ ‫סיכום זה נוצר על ידי‪ ,‬כדי לנסות ולהנגיש את הקורס הזה‪ ,‬שקשה ממילא לסטודנטים ועלול‬ ‫להרגיש מאוד כבד‪.‬החוברת תאפשר לכם לחפש במהרה כל נושא‪.‬‬ ‫לצערי‪ ,‬הסיכום לא כולל את התרגולים מכיוון שהם מעשיים מדי‪ ,‬עם שאלות ופתרונות לא‬ ‫קצרים‪.‬החוברת כתובה על פי איך שחגית העבירה את הקורס בשנת ‪ 2023‬ולכן‪ ,‬קחו את‬ ‫התוכן פה בעירבון מוגבל‪ ,‬היא אינה מהווה תחליף לאף הרצאה או תרגול‪.‬‬ ‫ההרצאות אינן מחולקות לפי ארבע שעות וכו'‪ ,‬אלא לפי הנושאים המועברים בקורס‪.‬‬ ‫הסיכום אינו תחליף להרצאות‪ ,‬לא מתיימר להיות כזה והשימוש הוא באחריותכם הבלעדית‪.‬‬ ‫המלצתי היא להגיע לכל הרצאה ולכל תרגול – בקורס הזה הם מומלצים לתרגול המעשי של‬ ‫החומר עם שאלות‪.‬‬ ‫לסיום‪ ,‬אני מקווה שהחוברת תעזור לכם להבין את הדברים בקורס‪.‬‬ ‫שרון‪.‬‬ ‫תוכן עניינים‬ ‫שיעור ‪ – 0‬מבוא‬ ‫שיעור ‪ – 1‬רכישת תמונה‬ ‫שיעור ‪ – 2‬היסטוגרמות‬ ‫שיעור ‪ – 3‬פעולות נקודה‬ ‫שיעור ‪ – 4‬פעולות גיאומטריות‬ ‫שיעור ‪ – 5‬פעולות מרחביות‬ ‫שיעור ‪ – 6‬התמרת פורייה‬ ‫שיעור ‪ – 7‬פעולות במרחב התדר‬ ‫שיעור ‪ – 8‬פירמידות‬ ‫שיעור ‪ – 9‬זיהוי שפות‬ ‫שיעור ‪ - 10‬התאמת תמונה‬ ‫שיעור ‪ – 11‬צבע‬ ‫נספח – הוכחה שבסיס פורייה אורתונורמלי‬ ‫נספח ‪ -‬סגמנטציה‬ ‫נספח ‪ -‬למידה ממוכנת ]‪[TBA‬‬ ‫שרון רוטגייזר‬ ‫שיעור ‪ - 0‬מבוא‬ ‫מה זה בעצם עיבוד תמונה? זה חלק אחד מתוך התחומים שקשורים למדעים‬ ‫ויזואליים עם תמונות‪ ,‬כמתואר משמאל‪.‬‬ ‫עיבוד תמונה זה התחום שלוקח את התמונה‪ ,‬מבצע עליה פעולות )עיבוד( והפלט‬ ‫הוא תמונה גם כן‪ ,‬רק שהיא יכולה להיות מחודדת‪ ,‬משופרת‪ ,‬עם תוספות כלשהן וכו'‪.‬‬ ‫הצעד הבא הוא ראייה ממוחשבת – לקחת תמונה ולהוציא עליה תובנה יותר סמנטית‪.‬למשל‬ ‫– להוציא סצנה תלת ממדית‪ ,‬להגיד איפה היא צולמה‪ ,‬להגיד מה אנחנו מזהים בתמונה וכו'‪.‬‬ ‫תחום שלישי הוא מידול גיאומטרי – לקחת את התמונה‪ ,‬לסובב אותה או לבצע עליה‬ ‫מניפולציה בעולם התלת ממדי ולרנדר )בעזרת גרפיקה ממוחשבת( תמונה חדשה דו ממדית‪.‬‬ ‫למרות שמדובר בארבעה תחומים גדולים‪ ,‬כל העסק הזה עובד ביחידה אחרת בעבודה היום‬ ‫יומית‪.‬‬ ‫דרך אחרת להשוות בין ראייה ממוחשבת לעיבוד תמונה היא על ידי מידול כמו העין‬ ‫האנושית‪ ,‬שזו ברמה הנמוכה ודברים יותר מורכבים הם ברמות היותר‬ ‫גבוהות‪.‬בעוד שעיבוד תמונה עוסק בניתוח הבסיסי של תמונה )זיהוי‬ ‫שפות‪ ,‬חילוץ תבניות‪ ,‬הכנה של התמונה(; אין טעם להתעסק בניתוח‬ ‫סמנטי של התמונה או זיהוי עצמים אם התמונה מלוכלכת‪.‬‬ ‫למה בעצם ראייה ממוחשבת היא קשה? נכון‪ ,‬יש לנו למידה ממוכנת‬ ‫היום והכלים מתקדמים‪ ,‬אבל עדיין לא מספיק‪.‬לנו זה קל לזהות בן אדם‬ ‫שמנסה לפרוץ לרכב אבל למחשב זה קשה‪.‬נראה זאת על ידי כמה‬ ‫דוגמאות‪ ,‬שיבלבלו אפילו אותנו!‬ ‫בדוגמה מצד שמאל‪ ,‬זה לא הכי טריוויאלי‪ ,‬אבל מסתתרת פרה!‬ ‫בדוגמה מימין ניתן לראות משולש שאפילו קצת בולט יותר מהרקע אבל בעצם אין שם כלום!‬ ‫הדבר היחיד שרומז לנו על קיומו של המשולש הזה הוא העיגולים השחורים‪.‬אנחנו נוטים‬ ‫לראות צורות שלמות ופה משהו מסתיר את העיגולים האלה‪.‬הקומבינציה של שלושת‬ ‫ההסתרות האלה שיוצרות קווים ישרים מתפרשים לנו בתור אובייקט‪.‬איך נגיד את זה‬ ‫למחשב? איך נגיד לו שעיגול זה דבר סטנדרטי ועיגול לא שלם זה מוזר‪.‬‬ ‫שרון רוטגייזר‬ ‫בדוגמה האחרונה‪ ,‬אנחנו רואים סתם רצף אותיות של ע' וש'‪ ,‬אבל אם נשים שלושה קווים‬ ‫פתאום אנחנו רואים את הצורה השלמה ואפילו יודעים לנתח מה היא‪ ,‬ולהגיד שזו צורה תלת‬ ‫ממדית‪.‬אם נעלים את הקווים )מימין( יהיה לנו קל לזהות את הצורה‪.‬אז למה בצד שמאל זה‬ ‫יותר קשה לזיהוי? אנחנו רגילים לקווים סגורים‪.‬בעיני העיניים שלנו – קווים לא סתם נחתכים‬ ‫באמצע‪ ,‬משהו מסתיר אותם‪.‬לכן בצד ימין קל לנו לראות את זה‪ ,‬ובצד שמאל קשה‪.‬‬ ‫בעיה נוספת בניתוח של תמונות‪.‬נסתכל למשל על זו משמאל ואנו רואים בה ‪ 5‬בליטות ושקע‬ ‫אחד‪.‬אם אנחנו עושים שיקוף של ‪ 180‬מעלות )‪ (vertical flip‬לפתע יהיו לנו ‪ 5‬שקעים‬ ‫ובליטה אחת! הם אמנם שיקוף אחת של השנייה אבל האפקט התלת ממדי חזק‪.‬הסיבה לזה‬ ‫היא שהעין שלנו רגילה לכך שהתאורה באה מלמעלה‪.‬השמש‪ ,‬הירח והמנורה מעלינו‪.‬‬ ‫הניתוח מתבצע אוטומטית לפי ההנחה‪.‬המחשב לא מכיר את ההנחות האלו‪.‬‬ ‫דוגמה לאשליה קצת יותר מורכבת‪ ,‬היא זו שמשמאל‪.‬לכאורה יש לנו שתי תמונות של אדם‬ ‫הם נראים בני אדם רגילים כאשר אחד הוא לכאורה שיקוף של השני‪.‬אבל‪ ,‬אם נהפוך את‬ ‫התמונה השנייה‪ ,‬נקבל את העיוות בצד ימין‪.‬בהתחלה‪ ,‬חשבנו שהכל בסדר! המוח מעבד‬ ‫צורות מורכבות בצורה שונה‪.‬‬ ‫תבנית של פרצוף שכוללת עיניים ראש ופה יכולה להיות מפורשת בצורות שונות‪ ,‬כלומר‬ ‫המוח משתמש בשני אלגוריתמים‪.‬הראשון הוא זיהוי פרצוף קלאסי‪ ,‬כמו התמונה המקורית‪,‬‬ ‫אבל כשהתמונה הפוכה‪ ,‬המוח משתמש באלגוריתם אחר בסיסי יותר‪ ,‬שעדיין מאשר את‬ ‫היותו של הפרצוף תקין‪ ,‬למרות שזה לא כך בפועל‪.‬‬ ‫עיבוד תמונה נמצאת היום בכל מקום‪ ,‬מוצר או אפליקציה שיש להם איזושהי נגיעה לתמונות‪.‬‬ ‫בהתאמה‪ ,‬התחום גם מבוקש בתעשייה‪.‬יש את זה במכוניות אוטונומיות‪ ,‬בצבא‪ ,‬סרטים וכו'‪.‬‬ ‫להלן מור"ק על מכוניות אוטונומיות‪ :‬בעבר הרחוק‪ ,‬שנות ה‪ ,80-‬ניסו בגרמניה לפתח את‬ ‫המכונית האוטונומית הראשונה‪.‬הכל היה טוב‪ ,‬המכונית נסעה ישר‪ ,‬הגיעה לכיכר‪ ,‬עשתה‬ ‫חצי סיבוב והמשיכה פתאום באיזשהו קו ישר אקראי‪.‬המפתחים לקחו את הרכב‪ ,‬בדקו כמה‬ ‫שעות את הקוד‪ ,‬והחזירו את המכונית לכביש‪.‬הכל טוב‪ ,‬המכונית נוסעת‪ ,‬מגיעה לכיכר‪,‬‬ ‫עוברת את המקום שבו סטתה קודם‪ ,‬ואחרי כמה שניות שוב המשיכה לאיזשהו קו ישר מקרי‬ ‫אחר‪.‬מה קרה פה? תאורה! המכונית חיפשה את השפה שמחברת בין הכביש למדרכה אבל‬ ‫מאיזושהי נקודה וזווית‪ ,‬הצל של הרכב התלכד עם המקום שהמכונית אמורה לעקוב אחריו‪..‬‬ ‫מאותו המקרה למדו על בעיות תאורה ושגם צל הוא דבר בעייתי שצריך לקחת בחשבון‪.‬‬ ‫שרון רוטגייזר‬ ‫נראה מה אנחנו כן יכולים לעשות עם עיבוד תמונה בלבד‪.‬‬ ‫הדוגמה הראשונה היא השלמת חלקים חסרים ‪ /‬מלוכלכים‬ ‫בתמונה‪.‬‬ ‫דוגמה שנייה היא העלמת אובייקטים מתמונה )והשלמה של‬ ‫מה שהיה מאחוריי אותו האובייקט(‪.‬‬ ‫לעיתים )ואפילו נראה זאת בקורס( נרצה לקחת טקסטורה קטנה ולייצר ממנה‬ ‫אחת גדולה יותר‪ ,‬אבל לא בצורה של הדבקה )כי יראו את התפר( אלא ממש‬ ‫טקסטורה עם אותן תכונות סטטיסטיות‪.‬‬ ‫יש עוד המון דוגמאות‪ ,‬ביניהן אחת שלוקחת תמונה של טום הנקס‪ ,‬בונה ממנו‬ ‫מודל תלת ממדי‪ ,‬משנה את המודל )גרפיקה ממוחשבת( ואז מייצרת תמונות חדשות‪.‬‬ ‫שימוש אחד מאוד מעניין הוא דיפ פייק – למידת המודל התלת ממדי של אדם‬ ‫א' ושתילת הפרצוף של אדם ב'‪.‬‬ ‫הגיע הזמן לסקירה קצרה של נושאי הקורס‪:‬‬ ‫נדבר על איך רוכשים תמונה‪.‬‬ ‫נדבר על איך מעבדים את התמונה‪ ,‬תיקונים‪.‬למשל – שינוי בהירות‪ ,‬קונטרסט‪.‬נדבר על‬ ‫פעולות גיאומטריות שמסובבות ‪ /‬מורחות על התמונה‪.‬נדבר על פעולות מרחביות כמו ניקוי‬ ‫או טשטוש של תמונה‪.‬‬ ‫נדבר על כלי שנקרא טרנספורם פורייה‪.‬הוא כלי מורכז שיעזור לנו להבין יותר‬ ‫דברים על התמונות אבל גם להוריד רעשים מחזוריים‪.‬‬ ‫נדבר על רזולוציות שונות ואיך הן יכולות לעזור לנו‪ ,‬למשל שילוב תמונה אחת בתוך השנייה‪.‬‬ ‫נדבר על זיהוי אלמנטים פשוטים בתמונה כמו זיהוי שפות ופינות‪.‬‬ ‫נדבר על סגמנטציה שהיא מעיין חילוץ אובייקטים על ידי צביעה‪.‬‬ ‫נדבר על זיהוי תבניות‪.‬למשל – נרצה למצוא בצורה יעילה תמונות של פנים‪.‬‬ ‫נרצה לדבר על התאמה בין תמונות כדי להדביק אותן‪.‬‬ ‫אחרי עיבוד תמונה חגית ממליצה )כמובן( לקחת את קורסי ההמשך שהם ראייה ממוחשבת‪,‬‬ ‫המעבדה בחקר חישובי של התנהגות אנושית ויש עוד מספר קורסים‪.‬‬ ‫יש במצגת שקופית שנדלג עליהם‪ ,‬שמדברת על איך פועלת מערכת הראייה‪.‬רבים מאלו‬ ‫שפיתחו את התחום שאבו השראה אלגוריתמית מפעילות העין‪.‬יותר מזה – מערכת הראייה‬ ‫היא גם זו שתשפוט את התוצאות‪.‬‬ ‫שרון רוטגייזר‬ ‫שיעור ‪ – 1‬רכישת תמונה‬ ‫נדבר על איך אנחנו רוכשים תמונה ואיך נהפוך אותה לדיגיטלית‪ ,‬כזו שנוכל לעבוד עליה עם‬ ‫הכלים האלגוריתמיים שלנו‪.‬‬ ‫נשאל בעצם‪ ,‬מה זו תמונה? התמונה היא הטלה של סצנה תלת ממדית לדו ממד‪.‬‬ ‫פורמלית‪ ,‬התמונה יכולה להיות מוגדרת בתור פונקציה ‪ ,𝑓𝑓: ℝ2 → ℝ‬כאשר בכל‬ ‫מיקום )‪ (x,y‬במישור התמונה‪ ,‬יש איזשהו מדד לכמות האור שיש באותה הנקודה‪.‬‬ ‫ככל שהערך יותר בהיר‪ ,‬כך גם העוצמה תהיה גבוהה יותר‪.‬למשל‪ ,‬מימין מופיעה התמונה‬ ‫ומשמאל איך אותה התמונה נראית כפונקציה‪.‬‬ ‫בגלל שהחלק הלבן הוא בצורת איקס‪ ,‬המקומות שבהם העוצמה היא הגבוהה ביותר גם‬ ‫יתקבלו בצורת איקס‪.‬באופן דומה‪ ,‬כל שאר האזורים הם שחורים וכמות האור היא ‪.0‬‬ ‫עכשיו נדבר על רכישת התמונה‪.‬נניח שיש לנו סצנה ו ‪) film‬אמיתי או ‪ ccd‬דיגיטלי( עליו‬ ‫אור‬ ‫נרצה להטיל את התמונה‪.‬יש לנו בעיה – כל נקודה בסצנה התלת ממדית מעבירה‬ ‫שיגרום‬ ‫לכל מקום‪.‬אם כן – כל נקודה ב ‪ film‬מקבלת אור מכל מקום בתמונה‪ ,‬דבר‬ ‫לבלגן‪.‬‬ ‫מה אנחנו היינו רוצים? היינו רוצים שלכל נקודה קרן אור אחת בדיוק תפגע‬ ‫במקום אחד ב ‪.film‬איך נעשה זאת? נחסום את כל הקרניים ונשאיר חריר קטן‬ ‫שדרכו תיכנס קרן אור אחת )נכון‪ ,‬זה לא אפשרי‪ ,‬נניח שגודל החריר שואף ל‪.(0‬‬ ‫אם הייתי יושב בתוך הקופסה הזאת‪ ,‬היינו רואים את התמונה‪ ,‬אמנם הפוכה‬ ‫אבל עדיין נראה‪.‬‬ ‫לדגם הזה אנחנו קוראים מצלמת חריר – יש חור קטן כדי למקד את התמונה במקום אחד‪.‬‬ ‫לא סיימנו! מכיוון שהחור הזה מאוד קטן יש לנו בעיה – האור שייקלט יהיה מאוד חלש‪.‬לכן‪,‬‬ ‫פתרון ראשון הוא לפתוח את החריר להרבה זמן עד שייקלט מספיק אור‪.‬אם האובייקט יזוז‬ ‫באמצע נקבל תמונה מטושטשת‪.‬אז אין לנו ברירה – צריך איכשהו להגביר את עוצמת האור‬ ‫בלי להגדיל את החור‪.‬‬ ‫לכן‪ ,‬נכנסת פה העדשה‪.‬העדשה לוקחת את כל הקרניים שיוצאות מאובייקט מסוים‬ ‫וממקדת אותם לנקודה אחת‪.‬ככה הרבה אור מגיע והפיקוס עדיין טוב‪.‬‬ ‫עם זאת‪ ,‬העדשה רגישה למרחק‪.‬רק עבור מרחק מסוים של האובייקט מהעדשה‬ ‫יהיה פוקוס של הנקודות‪.‬כשאנחנו מפקסים את המצלמה זה אומר שהאזור‬ ‫שבפוקוס ייפול על מישור התמונה בצורה ממוקדת וכל השאר יהיה מטושטש )בגלל‬ ‫ריבוי קרני אור(‪.‬למשל בתמונה משמאל‪ ,‬הנקודות האדומה והירוקה יתפקסו‪ ,‬אך‬ ‫הנקודה הכחולה תתפקס מחוץ למישור התמונה ונוצר טשטוש‪.‬אם כן‪ ,‬העדשה‬ ‫מפקסת מישור מסוים‪.‬‬ ‫לסיום‪ ,‬צילום תמונה נעשה באמצעות ‪ tradeoff‬בין גודל מיקום העדשה וגודל החור‪.‬נשים‬ ‫את כל המערכת בקופסה אחרת וזו המצלמה‪.‬‬ ‫מצד שמאל מוצגת התמונה הראשונה מ‪ ,1826‬לאחר ‪ 8‬שעות של חשיפה‪.‬‬ ‫שרון רוטגייזר‬ ‫נסכם את התהליך עד כאן‪.‬רכשנו את התמונה דרך העדשה לתוך‬ ‫מישור התמונה הדו ממדי‪.‬אבל‪ ,‬כדי להכניס את זה למחשב נצטרך‬ ‫עוד יחידה שתהפוך את התמונה לדיגיטלית‪.‬‬ ‫זהו רכיב חומרתי עם סנסורים שפשוט סופר פוטונים ואז‬ ‫מדווח ליחידת חישוב כלשהי את המספר‪.‬כל רכיב מוציא‬ ‫מספר אחד ולמעשה המערך של התוצאות זו התמונה‬ ‫שתתקבל‪.‬כל סנסור יוצר מספר אחד שקוראים לו פיקסל‪.‬‬ ‫כמובן שיש פה עוד תהליכי עיבוד נוספים על כמות הפוטונים‬ ‫שנכנסה לכל רכיב כזה‪ ,‬אך נדלג על שלבים אלו‪.‬כמו כן‪ ,‬לכל נקודה יש מדד רגישות נפרד‬ ‫לאדום כחול וירוק‪.‬‬ ‫התמונה משמאל מייצגת ריבוע מתוך התמונה ואיך הוא מיוצג‬ ‫בצורה דיגיטלית‪ ,‬כאשר המספרים נעים בין ‪) 0‬שחור( ל‪255-‬‬ ‫)לבן( ויש ‪ 256‬דרגות אפור שונות‪.‬‬ ‫בקורס אנחנו נעבוד עם תמונות דרגות אפור‪ ,‬כלומר תמונת ‪ grayscale‬עם ‪ 256‬דרגות שונות‬ ‫)נדרשים ‪ 8‬ביטים = בית אחד לייצוג(‪.‬יש לנו גם תמונות בינאריות לחלוטין )שחור או לבן(‪.‬‬ ‫תמונת צבע היא יותר מורכבת ויש בה שלושה ערוצים של אדום‪ ,‬ירוק וכחול ולמעשה כל‬ ‫תמונה כזו ניתן לפרק לשלוש ערוצים וכל ערוץ יהיה דרגות אפור של "כמה אדום"‪" ,‬כמה‬ ‫ירוק"‪" ,‬כמה כחול"‪.‬אז תמונה צבעונית זו הכללה של דרגות אפור ולצורך הנוחות נתעסק רק‬ ‫בתמונות דרגות אפור‪.‬בסוף הקורס נרחיב על ההתאמה לעולם הצבע‪.‬‬ ‫‪ – Image intensity‬זה מונח פיזיקלי המתאר את כמות הפוטונים שנפלו לנו באזור בתמונה‪,‬‬ ‫"עוצמת האור"‬ ‫‪ – Image brightness‬זה כבר משהו תפיסתי‪ ,‬כמה בהירות אנחנו קולטים מהנקודה הזאת‪.‬‬ ‫נכון ששניהם מונוטוניים‪ ,‬אך אינם זהים‪.‬הדרך שבה נראה שהם שונים היא בדוגמה משמאל‪.‬‬ ‫המדד הראשון נע בקפיצות שוות‪ ,‬כלומר חלוקה שווה של המקטע ל‪256-‬‬ ‫חתיכות‪.‬מה שמעניין הוא שהשחור עולה מאוד מהר ואילו הצבעים הבהירים‬ ‫עולים מאוד לאט‪.‬‬ ‫המדד השני נע בקפיצות שוות של הבדלי בהירות‪.‬‬ ‫ההבדל בין שני המדדים נובע מכך שאנחנו פחות שמים לב להבדלים בין צבעים בהירים‬ ‫ויותר שמים לב להבדלים בין צבעים כהים‪.‬אנחנו יכולים לראות שהקשר בין שני המדדים‬ ‫הוא לא לינארי ויותר מזה – הוא יהיה לוגריתמי‪.‬תיקון גאמא )שנראה(‪ ,‬עושה משהו דומה –‬ ‫הוא יעזור לנו לעבור ממדד העוצמה למדד הבהירות‪.‬עכשיו נראה עוד דוגמאות להבדל הזה‪.‬‬ ‫נשים לב לדוגמה הוויזואלית משמאל‪.‬יש לנו ריבוע כהה ובהיר ובתוך כל אחד‬ ‫מהם יש ‪.patch‬התמונות נבנו ככה שקפיצת ה ‪ intensity‬שלהם זהה‪ ,‬כלומר‬ ‫פער הפיקסלים זהה‪.‬עם זאת‪ ,‬ניתן לראות בבירור שהבדלי הבהירות הרבה‬ ‫יותר דומיננטיים בריבוע הכהה‪.‬בצד ימין כמעט לא רואים הבדל בין הריבוע ל‬ ‫‪ patch‬שלו‪.‬‬ ‫אם נחזור רגע למדדים שלמעלה‪ ,‬אז ניתן לראות שאם נזוז קצת בחלק‬ ‫הבהיר לא ישתנה הרבה‪ ,‬אבל אם נזוז בחלק השחור נשים לב די מהר‬ ‫להבדל )בעין(‪.‬‬ ‫שרון רוטגייזר‬ ‫נזכיר לשנייה את חוק וובר‪ ,‬שמראה את הקשר בין העוצמה לבהירות ומופיע בגרסאות שונות‬ ‫בעוד תחומי ביולוגיה ופיזיולוגיה ונשתמש בחוק הזה בהמשך‪.‬הוא קובע‬ ‫שההבדל התפיסתי הוא לא לינארי ביחס לשינוי האמיתי וזה גם מסתדר‬ ‫לנו בגרף משמאל – אם נעשה שינוי בעוצמות הנמוכות )כהה( נרגיש‬ ‫אותו הרבה יותר חזק מאשר כשנעשה שינוי בעוצמות הגבוהות‪.‬‬ ‫למעשה‪ ,‬יש חוק דומה גם לגבי צבעים‪.‬יש אזורי צבע ששינוי קטן בהם יהיה ניכר לעין מאוד‬ ‫מהר ויש אזורים במרחב הצבע שגם אם נשנה את עוצמת הפוטונים לא נראה הרבה גדול‬ ‫)למשל באזורים הירוקים(‪.‬‬ ‫עכשיו נרצה לדבר על ה ‪.digitizer‬תפקידו הוא לקחת תמונה רציפה )‪ (𝑓𝑓: ℝ2 → ℝ‬שהערך‬ ‫בכל נקודה הוא מספר הפוטונים שנפלו שם ונרצה לדגום את זה ולהפוך את זה למטריצה עם‬ ‫מספר סופי של פיקסלים‪.‬בכל כניסה יהיה לנו ערך אחד שגם הוא מגיע מקבוצת ערכים‬ ‫סופית )יהיה ‪.(0-255‬הנ"ל מתבצע בשני שלבים‪:‬‬ ‫דגימה )‪ – (spatial sampling‬כמה פיקסלים נכניס בשדה הראייה של הסנסור‪.‬‬ ‫ ‬ ‫קוונטיזציה )‪ – (quantization‬הפיכת התחום הרציף לתחום הבדיד )דרגות אפור(‪.‬‬ ‫ ‬ ‫נתחיל מלדבר על דגימה במרחב‪.‬התהליך לוקח את התחום הרציף‬ ‫ומחלק אותו לאזורים ריבועיים‪ ,‬כאשר לכל ריבוע הוא נותן ערך אחד‪.‬‬ ‫הערך יכול להיקבע על פי ממוצע הפוטונים באותו האזור או החציון‬ ‫שלהם וכו'‪.‬כבר במעבר השני ניתן לראות איך הרזולוציה משתנה‬ ‫במעבר לדיגיטלי‪.‬‬ ‫הסיבה שהמישור מחולק לשריג היא מטעמי נוחות )גם מתמטית(‪.‬היו בעבר ניסיונות לעבוד‬ ‫עם משושים או משולשים אבל ריבועית נוחים‪ ,‬גם כי הם ניתנים לחלוקות קטנות שוות גודל‪.‬‬ ‫השאלה הבאה שנשאלת היא "לכמה ריבועים לחלק את התמונה?"‪.‬אז מסתבר )באופן לא‬ ‫מפתיע( שככל שיש יותר – יותר טוב‪.‬כמות הריבועים הזו נקראת רזולוציה ועכשיו נפרמל‪.‬‬ ‫נאמר שרזולוציה היא כזו שמתארת את הפרט הכי קטן שניתן לראות‪ ,‬מה יכולת ההפרדה‬ ‫שלנו בין שני אלמנטים )ככל שיש יותר הפרדה‪ ,‬הרזולוציה גבוהה יותר(‪.‬‬ ‫כדי לדבר על רזולוציה מבחינה מספרית נצטרך לדבר על תדר ואורך גל‪.‬‬ ‫נסתכל לדוגמה על הסינוס הזה‪ ,‬זו אינפורמציה מחזורית כלשהי‪.‬אפשר‬ ‫להגיד למשל שלאורך ציר ה‪ x-‬משתנה הבהירות‪.‬אורך גל זה האורך של‬ ‫מחזור אחד והיחידות יהיו יחידות אורך או פיקסלים‪.‬לדבר הזה יש מדד משלים שהוא‬ ‫התדר‪ ,‬אחד חלקי אורך הגל‪.‬התדר נמדד ביחידות "כמה מחזורים יש לנו ביחידת אורך‬ ‫אחת"‪.‬‬ ‫למשל‪ ,‬אם אורך הגל הוא חצי מטר‪ ,‬אז התדר הוא שני מחזורים במטר אחד‪.‬עוד דוגמה‪,‬‬ ‫אם נכווץ את הגל מה יקרה? אורך הגל קטן והתדר עולה‪ ,‬כי באותה יחידת אורך נכנסים‬ ‫יותר מחזורים‪.‬כרגע התדרים הם לאורך שורה או עמודה של התמונה ואפשר גם לדבר על‬ ‫תדרים דו ממדיים )למשל אלכסוניים( ונדבר על כך בפורייה‪.‬תדרים משומשים גם בצבעים‬ ‫וגם באודיו ועוד‪.‬‬ ‫נחזור לדבר על דגימה‪.‬בצד שמאל יש לנו סיגנל אדום מחזורי ושמנו חלונות אפורים‬ ‫בקפיצות מסויימות‪ ,‬די גדולות אפילו‪.‬מה זה אומר על התדר שלנו? שהוא יהיה נמוך!‬ ‫אם לוקח לנו )תחת ההסתרה!( זמן לסיים את המחזור‪ ,‬אורך הגל האמיתי ארוך יותר‬ ‫ולכן התדר נמוך‪.‬או ככה לפחות מערכת הראייה שלנו חושבת‪.‬מערכת הראייה‬ ‫חושבת שהדוגמה משמאל היא מה שמסתתר מאחוריי התמונה‪.‬‬ ‫שרון רוטגייזר‬ ‫מערכת הראייה שלנו נוטה לתת את הפרשנות הכי פשוטה שאפשר למידע‪.‬אנחנו‬ ‫לא חושדים שקורה משהו מאחוריי האפור לא תקין‪.‬אבל למעשה‪ ,‬מה שמסתתר‬ ‫מאחוריי האפור זה מה שמשמאל! אז טעינו ואורך הגל קטן יותר והתדר יותר גדול‪.‬‬ ‫מה שעיוות את המחשבה שלנו הם המלבנים הגדולים האלה‪.‬‬ ‫אם ניקח הרבה יותר מלבנים קטנים‪ ,‬אז כבר נראה את המציאות בצורה נכונה‪.‬כלומר‪,‬‬ ‫אנחנו נצטרך לדגום את המידע בצפיפות הרבה יותר גבוהה )בקפיצות קטנות יותר‪,‬‬ ‫בתדר גדול יותר(‪.‬‬ ‫זה מוביל אותנו למשפט הראשון שנקרא משפט ‪.nyquist‬המשפט אומר שאם אנחנו רוצים‬ ‫לראות אינפורמציה עם תדר ‪ ,f‬אנחנו צריכים לדגום בתדר של יותר מ‪.2f-‬המשפט גם עובד‬ ‫הפוך – אם נרצה לראות דברים במרחק ‪ ,d‬נצטרך לדגום בקפיצות פחות מחצי ‪.d‬‬ ‫נסתכל על הדוגמה מצד שמאל‪.‬כמו שניתן לראות‪ ,‬המחזור מסתיים‬ ‫בחץ הירוק ואנחנו דוגמים איפה שהעיגולים הכחולים‪ ,‬כלומר ב‪3/4-‬‬ ‫מחזור‪.‬ללא כל מידע נוסף‪ ,‬הקוווקו האדום הוא מה שהמוח שלנו‬ ‫יחשוב שקורה‪.‬מה יקרה אם נדגום בחצי אורך גל? נקבל בדיוק את ציר ה‪ !x-‬כלומר‪ ,‬נחשוב‬ ‫שזה ‪ 0‬ואין כלום )לכן חשוב שזה יהיה יותר מפעמיים התדר‪ ,‬ללא שוויון(‪.‬נראה אינטואיציה‬ ‫עמוקה יותר להוכחת המשפט בפורייה‪.‬תדר ‪ – nyquist‬פעמיים התדר שנרצה ‪.f‬‬ ‫דוגמה נוספת‪ :‬נתונות תמונות התדרים הבאות‪.‬הכחולה בתדר קבוע והשחורה‬ ‫בתדר משתנה‪.‬ננסה להלביש את הכחולה על השחורה פעמיים‪:‬‬ ‫למה בצד שמאל אנחנו רואים פסים עקומים ובצד ימין פסים ישרים? לתמונה הכחולה יש‬ ‫תדר קבוע שהוא מתחת לתדר ‪ Nyquist‬בחלק השמאלי העליון של התבנית השחורה‪ ,‬שם‬ ‫לתמונה השחורה יש תדר גדול מדי ונוצר האפקט של הפסים העקומים‪.‬בחלק התחתון מימין‬ ‫לעומת זאת‪ ,‬תדר התמונה השחורה קטן והתמונה הכחולה כבר מעל תדר ‪ Nyquist‬הנדרש‪.‬‬ ‫לתופעה הזאת קוראים ‪ – Aliasing‬קורה כשאנחנו דוגמים מתחת מ ‪ ,Nyquist‬ואפילו מתחת‬ ‫לתדר המקורי‪.‬‬ ‫איך זה קשור לדגימה הריבועית שעשינו של תמונות? אנחנו דוגמים ערך אחד מכל ריבוע‪,‬‬ ‫אבל בקפיצות קבועות‪.‬אם היינו משתמשים ביותר ריבועים אז נקבל תמונה איכותית יותר‬ ‫וזה בדיוק מה שמגדיר את הרזולוציה‪.‬כלומר דגימה בתדר ‪ Nyquist‬מבטיחה לנו רזולוציה‪.‬‬ ‫ככל שנשתמש ביותר ריבועים‪ ,‬ככה תדר הדגימה גבוה יותר‪.‬‬ ‫בהרצאה מוצגת דוגמה נוספת‪ ,‬של גלגלי עץ מתוך כרכרות סוסים שמסתובבים‪.‬אשליה‬ ‫שנוצרת היא שהגלגל עשוי להיראות ככה שהוא מסתובב אחורה‪ ,‬למרות שהוא אמור לנסוע‬ ‫קדימה‪.‬נניח שמחזור אחד הוא תזוזה של הפס הכחול למיקום של הפס הבא וניצור את‬ ‫הפריים הבא על ידי סיבוב הגלגל‪ ,‬כך שהפס הכחול יהיה בדיוק באמצע של שני פסים‪,‬‬ ‫כלומר נזוז חצי מחזור‪.‬דגימה בחצי המחזור היא בדיוק ‪ ,Nyquist‬אבל לא יותר ולכן ייווצר‬ ‫‪.Aliasing‬זה בא לידי ביטוי בכך שאנחנו לא יודעים אם הפס הכחול עלה חצי מחזור או‬ ‫שהפס החום שמעליו ירד חצי מחזור‪ ,‬מה שיוצר את האפקט של גלגל שמסתובב אחורה‬ ‫וקדימה‪.‬‬ ‫שרון רוטגייזר‬ ‫קיים עוד וידאו של הליקופטר שלא רואים סיבוב של פרופלורים‪ ,‬וזה נוצר על ידי דגימה‬ ‫שהיא בדיוק בתדר הנכון או כפולה שלו )או חלקיות(‪ ,‬כי אז למעשה נוצר אפקט שאין‬ ‫סיבוב‪.‬‬ ‫עכשיו‪ ,‬ראינו שלכל ריבוע יש צבע מסוים והמטרה היא למצוא את שני הצבעים האחרים‪.‬‬ ‫אפשר להשלים את זה בדרך נאיבית‪ ,‬למשל לקחת עבור פיקסל ירוק את ממוצע הכתומים‬ ‫שמסביבו וככה גם את הכחול וכו'‪.‬אבל‪ ,‬נשים לב שכל צבע נדגם פיקסל כן ופיקסל לא‪,‬‬ ‫כלומר הם דוגמים לנו את העולם‪.‬אנחנו יכולים להשלים את זה פשוט על ידי החלקת התדר‬ ‫שאמור לעבור בין שני אדומים למשל‪.‬עם זאת‪ ,‬זה גורם לנו לפספס פרטים קטנים‪.‬‬ ‫נניח שיש לנו תמונה בעלת כמה תדרים שונים ואנחנו יודעים איפה התדרים הנמוכים‬ ‫והגבוהים‪.‬במצב כזה‪ ,‬אפשר לעשות דגימה לא אחידה )בקצבים שונים(‪.‬את השמיים‬ ‫והעמוד למשל‪ ,‬נוכל לדגום פחות )זול יותר( ואת החלונות נצטרך לדגום יותר פעמים )פחות‬ ‫ריבועים בחיישן(‪.‬‬ ‫כשסיימנו את הדגימה ואנחנו יודעים כמה אור יש לנו בכל מקום בשריג‪ ,‬נרצה‬ ‫להפוך את מספר הפוטונים שיש לנו )עד מאה אלף( לערך מספרי תחום )‪0-‬‬ ‫‪ ,(255‬בעזרת קוונטיזציה‪.‬‬ ‫למה בעצם ‪ ?0-255‬אולי ננסה לבחור מספר אחר‪.‬‬ ‫כשאנחנו לוקחים פחות ערוצים אנחנו עדיין רואים המון פרטים בתמונה אבל‬ ‫יש ארטיפקטים אחרים‪.‬למשל‪ ,‬בתמונה עם ‪ 8‬צבעים יש קו באמצע המצח‬ ‫וגוש לבן על הלחי‪.‬זה נובע מכך שאין לנו מספיק דרגות אפור‪.‬אין לנו‬ ‫מספיק צבעים כדי לתאר מעבר חלק מאזור א' לאזור ב'‪.‬כשיש לנו קווים‬ ‫כאלה )כמו באמצע המצח( הם נקראים שפות )‪ (contours‬ובמקרה הזה‬ ‫‪ ,false contours‬כי אלה לא באמת שפות בתמונה המקורית‪.‬‬ ‫גם את הקוונטיזציה אנחנו יכולים לעשות על תמונה שכבר קיימת‪.‬מצד‬ ‫שמאל מוצגת תמונה רגילה בסמוך לאותה התמונה בעזרת ‪ 16‬צבעים בלבד‪.‬‬ ‫אבל ההבדל כמעט לא מורגש‪ ,‬פרט לשמיים‪.‬מה המסקנה? תדר נמוך‬ ‫)תמונות חלקות יותר( רגישות יותר לקוונטיזציה‪.‬‬ ‫אולי זה הזמן לציין שתדר ‪ 0‬משמעו תמונה חלקה לגמרי‪.‬‬ ‫נשאלת עכשיו השאלה – באיזה אלגוריתם נשתמש כדי להפוך תחום גדול רציף למספר‬ ‫דרגות האפור שהחלטנו עליו‪.‬‬ ‫נניח שהחלטנו על מספר דרגות אפור‪.k ,‬נמספר אותם‬ ‫כמו משמאל ונרצה לקחת את ה‪) z-‬כמות פוטונים‪ ,‬מספר ענקיים( ולחלק אותם ל‪ k-‬דרגות‬ ‫האפור‪.‬הדרך הכי פשוטה היא לחלק את זה באופן אחיד‪.‬ניקח את תחום הקלט של‬ ‫הסנסורים )למשל ‪ (0-100‬ואנחנו קופצים קפיצות שוות‪.‬אם כן‪,‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫= 𝑖𝑖𝑍𝑍 ‪𝑍𝑍𝑖𝑖+1 −‬‬ ‫‪(𝑍𝑍 − 𝑍𝑍0 ),‬‬ ‫= 𝑖𝑖𝑞𝑞‬ ‫) ‪(𝑍𝑍 + 𝑍𝑍𝑖𝑖+1‬‬ ‫𝑘𝑘 𝑘𝑘‬ ‫𝑖𝑖 ‪2‬‬ ‫הדבר ההגיוני הוא לתת את דרגת האפור שהיא תיאור טוב של ה ‪ bin‬אליו היא שייכת‪.‬כמובן‬ ‫שזה יגרום לנו לאיבוד מידע מסוים‪.‬אם יושבים שני פיקסלים בצבעים קרובים‪ ,‬למשל ליד ‪Z2‬‬ ‫משני הצדדים‪ ,‬ה‪ contrast-‬יגדל‪ ,‬כי המרחק בין הפיקסלים יגדל‪.‬‬ ‫שרון רוטגייזר‬ ‫עכשיו נדבר על קוונטיזציה לפי חוק וובר‪ ,‬כלומר קוונטיזציה לא אחידה‪.‬החוק אומר שבאזור‬ ‫הכהה אנחנו מאוד רגישים לשינויים קטנים ובאזורים הבהירים אנחנו הרבה פחות רגישים‪.‬‬ ‫אם כן‪ ,‬כדאי לנו לשים ‪-bin‬ים קטנים באזורים הכהים ו ‪-bin‬ים גדולים באזורים הבהירים‪.‬‬ ‫אנחנו יכולים להרשות לעצמנו לנוע הרבה בין רמות עוצמה גבוהות ולא להרגיש שינוי ויזואלי‪.‬‬ ‫לכן‪ ,‬כדי לשמר את האיכויות הוויזואליות שווה לעשות‬ ‫את הקוונטיזציה הלא אחידה‪.‬‬ ‫בדרך הראשונה‪ ,‬הפיקסלים תארו את ה ‪ intensity‬ואילו עכשיו אנחנו משמרים את התמונה‬ ‫לפי הבהירות שלנו‪.‬‬ ‫למען האמת‪ ,‬שאם היה לנו מידע מקדים על התמונה‪ ,‬כנראה שנוכל לעשות‬ ‫הרבה יותר טוב‪.‬נניח שאנחנו תמיד מצלמים דשא ירוק ולכן אנחנו באזורי‬ ‫בהירות מסוימים זהים‪ ,‬כלומר הכי הרבה פוטונים מתקבלים באזור די קטן‪.‬‬ ‫במקרה הזה‪ ,‬יהיה לנו שווה לשים ‪-bin‬ים קטנים באזור בו יש לנו הרבה מידע‪.‬אמנם תהיה‬ ‫לנו שגיאה גדולה על פיקסלים שהם לא באזור המרוכז‪ ,‬אבל זה יקרה על מספר מועט מאוד‬ ‫של פיקסלים‪ ,‬דבר שאינו נורא כל כך‪ ,‬אבל זה עדיין תלוי מטרה שאנחנו רוצים בתמונה כזו‪.‬‬ ‫כמובן שכדי שהמצלמה תוכל להעביר תמונה למחשב על ההגדרות המיוחדות צריך לכלול‬ ‫איזשהו קובץ נוסף שיעיד על כך שנעשתה פעולה מיוחדת; אבל כיום המצלמות עובדות לפי‬ ‫אוסף מצומצם קבוע של סטנדרטים‪.‬‬ ‫נדבר על אלגוריתם לקוונטיזציה אופטימלית )לויד( ונתחיל מדוגמה שבה יש לנו‬ ‫היסטוגרמה עם ארבעה גושים גדולים עיקריים ונרצה שהצבע המייצג לכל ‪bin‬‬ ‫יישב כמה שיותר קרוב למסה המרכזית של הפיקסלים‪.‬ניקח את ה ‪-bin‬ים‬ ‫להיות ארבע גושים ו ‪ 𝑍𝑍0 , … , 𝑍𝑍4‬יגדירו לנו את גבולות ה‪ bin-‬וה‪ q-‬מגדירים את‬ ‫הצבע שייבחר לייצג את כל מי שנפל לאותו ה ‪.bin‬‬ ‫מבחינה פורמלית מתמטית‪ ,‬נרצה לבחור 𝑞𝑞 ‪ 𝑍𝑍,‬כאלו שיקטינו את השגיאה שלמעשה קרובה‬ ‫לאלגוריתם ‪.k-means‬לכל פיקסל השגיאה תוגדר בתור המרחק ממנו לפיקסל הכי קרוב אליו‬ ‫שנבחר כדי לייצג אותו‪.‬השגיאה מוגדרת כך‪:‬‬ ‫‪𝑘𝑘−1 𝑧𝑧𝑖𝑖+1‬‬ ‫𝑑𝑑𝑑𝑑 ‪𝐸𝐸 = 𝑝𝑝(𝑧𝑧)(𝑧𝑧 − 𝑞𝑞𝑖𝑖 )2‬‬ ‫𝑖𝑖𝑧𝑧 ‪𝑖𝑖=0‬‬ ‫למרות שאמרנו "מרחק"‪ ,‬מעדיפים לקחת בריבוע משתי סיבות – גזיר )לעומת ערך מוחלט(‪,‬‬ ‫אבל גם נותן קנס עוד יותר גדול‪.‬הסימון )‪ p(z‬הוא ההסתברות לערך ‪ z‬מסוים‪ ,‬מה שייתן יותר‬ ‫משקל למקומות שבהם יש יותר פיקסלים‪.‬השגיאה תלויה ב 𝑞𝑞 ‪ 𝑍𝑍,‬ונרצה למזער את השגיאה‬ ‫)בהינתן ההתפלגות(‪.‬‬ ‫אז אמנם יש פתרון לבעיה אבל הוא פתרון איטרטיבי ולא מובטח לנו מינימום גלובלי‪ ,‬בכל‬ ‫פעם נניח שה‪ 𝑍𝑍-‬או ה‪ q-‬קבועים ואז נמצא את הנעלם השני‪.‬‬ ‫𝑧𝑧‬ ‫𝑑𝑑𝑑𝑑)𝑧𝑧(𝑧𝑧𝑧𝑧 ‪∫𝑧𝑧 𝑖𝑖+1‬‬ ‫‪𝑞𝑞𝑖𝑖 + 𝑞𝑞𝑖𝑖+1‬‬ ‫𝑖𝑖‬ ‫= 𝑖𝑖𝑞𝑞‬ ‫𝑧𝑧‬ ‫‪,‬‬ ‫= 𝑖𝑖𝑧𝑧‬ ‫𝑑𝑑𝑑𝑑)𝑧𝑧(𝑝𝑝 ‪∫𝑧𝑧 𝑖𝑖+1‬‬ ‫‪2‬‬ ‫𝑖𝑖‬ ‫כאשר הפתרון של ‪ q‬הוא פשוט מרכז המסה של האזור‪.‬אז בהינתן ‪ ,z‬נרצה את מרכז‬ ‫המסה‪.‬בהינתן ‪ ,q‬כדי למזער את השגיאה הכי משתלם לנו לקחת את האמצע בין ה ‪-q‬ים‪.‬‬ ‫נאתחל רנדומלית ל‪ z-‬או ‪ ,q‬למשל קוונטיזציה אחידה ואיטרטיבית עד לשגיאה מספיק קטנה‪.‬‬ ‫שרון רוטגייזר‬ ‫מצד שמאל מופיעה שוב תמונת המגדלור‪ ,‬אך הפעם בצירוף התמונה‬ ‫לאחר קוונטיזציה אופטימלית‪.‬עדיין יש לנו ‪ false contours‬אך הם צפופים‬ ‫ועדינים יותר‪ ,‬כלומר השקענו יותר משאבים שם‪.‬‬ ‫נדבר קצת על קוונטיזציה בצבע וההבדל בין ‪ 24‬ביטים )‪ 2563‬צבעים( ל‪4‬‬ ‫ביטים במקרה של התמונה הנ"ל‪.‬המשמעות היא שמשתמשים רק ב‪16‬‬ ‫צבעים לייצג את כל התמונה וזה נראה לא רע‪ ,‬אבל בתקריב רואים טוב‬ ‫את ההבדל‪.‬‬ ‫סיימנו את הדגימה ואז הקוונטיזציה ועכשיו סוף סוף‪ ,‬יש לנו תמונה דיגיטלית שהיא מטריצה‬ ‫בגודל סופי‪ ,‬כשבכל תא יש אחד מתוך ‪ 256‬דרגות אפור ואפשר להתחיל לעבוד עליה‪.‬‬ ‫שרון רוטגייזר‬ ‫שיעור ‪ – 2‬היסטוגרמות‬ ‫נדבר על היסטוגרמות אבל קודם נדבר על כמה תכונות של תמונות והגדרות‪.‬‬ ‫ממוצע של תמונה הוא סכום הפיקסלים חלקי מספר הפיקסלים בתמונה‪.‬‬ ‫למען הנוחות‪ ,‬אנחנו נדבר ונדגים על תמונה חד ממדית‪ ,‬בגלל הקושי בלצייר דו ממדית‪ ,‬אך‬ ‫אפשר )כמו בגרף משמאל( לדמיין שאנחנו מסתכלים על שורה בודדת בתמונה דו ממדית‪.‬‬ ‫ציר ה‪ y-‬מתאר את דרגות האפור‪.‬אנחנו מדברים כמובן על תמונה בדידה אך התיאור‬ ‫הרציף פשוט נוח יותר לשרטוט‪.‬‬ ‫פעולה שאנחנו יכולים לעשות על תמונה היא להוסיף לכל פיקסל בה ‪ 5‬דרגות אפור‬ ‫וזה ישנה בהתאמה את ציר ה‪ y-‬של הגרף‪.‬בפועל‪ ,‬זה ייראה כמו בדוגמה משמאל‪.‬‬ ‫הכל נעשה יותר כהה‪.‬זו תכונת הבהירות ‪ /‬עוצמה‪.‬‬ ‫תכונה שנייה היא ‪ – contrast‬מה טווח הצבעים ‪ /‬הבהירויות שיש לנו בתמונה‪.‬בגרף מצד‬ ‫שמאל‪ ,‬זה מתבטא בכך שההפרש בין הפיקסל הכי גבוה להכי קטן הוא חלון די קטן‪.‬‬ ‫התמונה מצד שמאל היא עם ‪ contrast‬נמוך‪ ,‬אין הרבה הבדל בין הכי כהה להכי בהיר‪.‬‬ ‫בצד ימין לעומת זאת מופיעה אותה התמונה עם ניגודיות גבוהה‪.‬‬ ‫יש לנו כמה דרכים למדוד ‪.contrast‬הדרך הכי פשוטה היא ההפרש בין הפיקסל הבהיר‬ ‫ביותר לפיקסל הכהה ביותר‬ ‫})𝑦𝑦 ‪max{𝐼𝐼(𝑥𝑥, 𝑦𝑦)} − min{𝐼𝐼(𝑥𝑥,‬‬ ‫הבעיה בהגדרה הזאת היא רגישות ל ‪ – outliers‬מספיק שיש פיקסל אחד שהוא בטעות נורא‬ ‫גבוה או נמוך‪ ,‬הכל ישתבש לנו‪.‬זה לא תופס ויזואלית את מה שנראה בפועל‪.‬‬ ‫הגדרה אחרת היא להסתכל על השונות ‪ /‬סטיית התקן של הפיקסלים בתמונה‪.‬השונות היא‬ ‫ממוצע ההבדל בין פיקסל לממוצע התמונה‪:‬‬ ‫} ‪𝑉𝑉𝑉𝑉𝑉𝑉(𝐼𝐼) = mean{(𝐼𝐼(𝑥𝑥, 𝑦𝑦) − 𝐼𝐼mean )2‬‬ ‫כמו כן‪ ,‬סטיית התקן מוגדרת על ידי )𝐼𝐼(𝑉𝑉𝑉𝑉𝑉𝑉 = )𝐼𝐼(‪.std‬בהמשך הקורס ומכיוון שאנחנו‬ ‫עצלנים‪ ,‬אנחנו נלך לפי ההגדרה הגרועה הראשונה‪ ,‬כי נוכל להסביר באמצעותה טוב יותר‪.‬‬ ‫כעת‪ ,‬נתבונן בתמונה הבעייתית משמאל‪.‬בתמונה זו יש שני חצאים שכל אחד עם‬ ‫‪ contrast‬נמוך‪ ,‬אבל בסך הכל כשמסתכלים על כל התמונה‪ ,‬מקבלים שונות גבוהה‪.‬‬ ‫לצורך התמודדות עם בעיה כזו‪ ,‬נשתמש ב ‪ local image contrast‬שימדוד לכל פיקסל‬ ‫את ה‪ contrast-‬סביבו‪.‬‬ ‫שרון רוטגייזר‬ ‫ההגדרה היא‪:‬‬ ‫𝑛𝑛𝐼𝐼 ‪𝐼𝐼𝑝𝑝 −‬‬ ‫ = 𝑝𝑝𝐶𝐶‬ ‫ ‬ ‫𝑛𝑛𝐼𝐼‬ ‫ונשים לב שבנוסף למרחק ‪ /‬שונות של הפיקסל 𝑝𝑝𝐼𝐼 מהשכנים יש חלוקה ב 𝑛𝑛𝐼𝐼‪.‬‬ ‫נסתכל על דוגמת האשליה עם הריבועים משיעורים קודמים‪.‬אם היינו משתמשים‬ ‫רק במונה‪ ,‬אז היינו מקבלים את אותו ה‪.contrast-‬כשאנחנו משתמשים בחלוקה‬ ‫הזו בפיקסל שבסביבה‪ ,‬אנחנו כבר מקבלים ערכים שמדגישים יותר נכון את ההבדל‬ ‫הוויזואלי‪.‬זה משמש אותנו כדי לתאר כל מיני דברים בתמונה‪.‬‬ ‫יש עוד תכונה אחת של תמונות אבל נדלג אליה ונחזור בהמשך‪.‬‬ ‫כעת‪ ,‬נגדיר מה זו היסטוגרמה‪.‬זה גרף שמתאר את הסטטיסטיקה‬ ‫של התמונה‪.‬ההיסטוגרמה ‪ H‬תחזיר לנו כמה פיקסלים יש בכל דרגת‬ ‫אפור )ציר ה ‪.(x‬יש עוד שני סוגי היסטוגרמות פופולריים‪:‬‬ ‫הראשון זה ‪ Pk‬שהוא מגדיר את ההיסטוגרמה המנורמלת )אחוז הפיקסלים בכל‬ ‫ ‬ ‫דרגת אפור(‪ ,‬כך שסכום הפיקסלים הוא ‪.1‬זה טוב לנו כי עכשיו זו היסטוגרמת‬ ‫התפלגות‪.‬עוד יתרון‪ ,‬זה שבהיסטוגרמה הזו לא נצטרך להתעסק עם גודל התמונה‪.‬‬ ‫השני זה ‪ Ck‬זו היסטוגרמות צבירה – בכל דרגת אפור ‪ k‬גודל העמודה יהיה סכום כל‬ ‫ ‬ ‫דרגות האפור שהן לכל היותר ‪.k‬גובה העמודה האחרונה הוא ‪ / 1‬מס הפיקסלים‪.‬‬ ‫בדר"כ נשתמש בהיסטוגרמת צבירה מנורמלת‪.‬‬ ‫בשקף שלאחר מכן חגית מראה כמה תמונות ושואלת איך לדעתנו תראה ההיסטוגרמה‪.‬‬ ‫מאותו השקף יש מסקנה חשובה – היסטוגרמה היא לא משמרת מיקום‪.‬למשל‪ ,‬לשתי‬ ‫התמונות הבאות יש בדיוק את אותה ההיסטוגרמה‪ ,‬כי יש להן בדיוק אותם הפיקסלים‪.‬לא‬ ‫ניתן לשחזר תמונה מהיסטוגרמה‪.‬‬ ‫נניח שיש לנו את הילדה והיסטוגרמה שלה‪ ,‬איך תראה ההיסטוגרמה אחרי הקטנת ה‪-‬‬ ‫‪ ?contrast‬באופן אנלוגי‪ ,‬ההיסטוגרמה תידחס ימינה כשנגדיל את ה‪.contrast-‬בהמשך‬ ‫נרצה לעשות מתיחת ‪ contrast‬תוך שימוש הממוצע‪ ,‬משהו שבעייתי כרגע‪.‬‬ ‫מתוך ההיסטוגרמה ניתן לקבל את התוחלת והשונות‪:‬‬ ‫‪𝔼𝔼[𝐼𝐼] = 𝑘𝑘 ⋅ 𝑃𝑃(𝑘𝑘) ,‬‬ ‫‪𝑉𝑉𝑉𝑉𝑉𝑉(𝐼𝐼) = 𝔼𝔼[𝐼𝐼 2 ] − 𝔼𝔼[𝐼𝐼]2‬‬ ‫𝑘𝑘‬ ‫כלומר לא צריך לעבור פיקסל‪-‬פיקסל‪ ,‬אלא ההיסטוגרמה מספקת לנו את כל המידע הדרוש‪.‬‬ ‫עוד מדד סטטיסטי אחד שאפשר לבקש על תמונה הוא האנטרופיה שלה‪.‬אם האנטרופיה‬ ‫גבוהה אז יש הרבה בלגן בתמונה‪.‬המקרה האידאלי הוא אם לא משנה איזה פיקסל נבחר‪,‬‬ ‫נדע מה הצבע שלו‪ ,‬כלומר עבור תמונה קבועה והאנטרופיה ‪.0‬המצב הקטסטרופלי הוא אם‬ ‫נגריל פיקסל מהתמונה‪ ,‬לכל דרגות האפור סיכוי זהה להתקבל‪.‬נוסחת האנטרופיה היא‪:‬‬ ‫)𝑘𝑘(𝑃𝑃 ‪Entropy(𝐼𝐼) = − 𝑃𝑃(𝑘𝑘) log‬‬ ‫𝑘𝑘‬ ‫שרון רוטגייזר‬ ‫האינטואיציה של אנטרופיה היא כמה ביטים או מידע אנחנו צריכים כדי לתאר את ההתפלגות‬ ‫שלנו‪.‬בתמונה מצד שמאל‪ ,‬אנחנו צריכים ביט אחד כי התמונה חלקה‪.‬ככל שהאנטרופיה‬ ‫יותר גדולה‪ ,‬נצטרך יותר ביטים כדי לתאר אותה‪.‬בתמונה של לנה מצד שמאל‪ ,‬יש אנטרופיה‬ ‫הרבה יותר גדולה‪.7 ,‬‬ ‫אנחנו מאבדים המון מידע של מיקומים בהיסטוגרמות אבל אפשר גם לעשות היסטוגרמות‬ ‫מקומיות‪.‬ניקח כל ריבוע )חלון( קטן בתמונה ונחשב את ההיסטוגרמה שלו‪.‬שימוש‬ ‫אחד של זה הוא זיהוי תבניות‪.‬נניח שאנחנו רוצים למצוא עליית גג בתמונה‪ ,‬אז‬ ‫נעבור חלון‪-‬חלון בתמונה ונעצור כשנקבל היסטוגרמה בתמונה שזהה למה שאנחנו‬ ‫מחפשים‪.‬כמובן שבפועל העסק מורכב יותר בגלל בעיות תאורה‪ ,‬גדלי חלונות שונים‪,‬‬ ‫רעשים‪ ,‬ואולי בכלל בחלון יש בדיוק אותם הפיקסלים אבל ‪.scrambled‬‬ ‫זה עדיין כלי ניפוי יעיל‪ ,‬כי רוב התמונה באמת לא מתאימה לנו‪ ,‬והמועמדים שכן מתאימים‬ ‫יצריכו בדיקה ידנית‪.‬‬ ‫יש עוד המון דברים שאפשר לעשות ונעשה עוד עם היסטוגרמות‪.‬שימוש אחד הוא פיקוס‬ ‫אוטומטי‪.‬לאלו שיצא להם פעם להשתמש במצלמה אמיתית‪ ,‬ודאי ראיתם פעם שהמצלמה‬ ‫קצת נכנסת ויוצאת וזאת בשל חיפוש נקודת הפוקוס‪.‬איך זה קורה? המצלמה עושה‬ ‫היסטוגרמה לתמונה שהיא רואה באותו הרגע ומחפשת את תכונה מסוימת בה‪ ,‬בסוף בוחרת‬ ‫את ההיסטוגרמה של התמונה הכי חדה‪.‬איך?‬ ‫מסתבר שאם יש לנו תמונה מטושטשת )למשל כל פיקסל מקבל את ממוצע הפיקסלים‬ ‫שסביבו(‪ ,‬ההיסטוגרמה יכולה רק לרדת‪ ,‬כי אפילו הפיקסל הכי בהיר מתמצע עם השכנים‬ ‫שלו‪.‬באופן דומה‪ ,‬עבור הפיקסל הכהה הוא יכול להיות רק יותר בהיר‪.‬אם כן‪ ,‬לתמונות‬ ‫מטושטשות יש ‪ contrast‬קטן )או האנטרופיה קטנה(‪.‬לכן‪ ,‬המצלמות מודדות את ה‪contrast-‬‬ ‫או את האנטרופיה ובעצם העדשה בוחרת את ההיסטוגרמה עם ה‪/ contrast -‬אנטרופיה הכי‬ ‫גבוה‪.‬ומה אם המציאות מטושטשת? עדיין‪ ,‬המצלמה תגיע למקסימום שהיא יכולה‪.‬ברקע‬ ‫כמובן יש אלגוריתם איטרטיבי וקצת יותר עמוק‪.‬‬ ‫חידה‪ :‬על איזה מקום מאוד קשה לאלגוריתם לעשות פוקוס? על קיר!‬ ‫פעולה שנייה )אחרי שינוי ניגודיות( שנעשה על היסטוגרמה היא ‪.thresholding‬ניקח את‬ ‫דרגות האפור ומעל ערך מסוים נהפוך הכל ללבן ומתחת לאותו הערך‪ ,‬לשחור‪.‬גרף המעבר‬ ‫מדרגות אפור א' לדרגות אפור ב' מוצג בצד שמאל )ונרחיב עליו בשיעור הבא(‪.‬השאלה‬ ‫שנשאלת היא איזה סף לבחור? נניח שאנחנו רוצים לחלץ רק את הים מתוך תמונה של‬ ‫מגדלור עם ים‪ ,‬אז נקווה שהים בהיר יותר משאר התמונה ונבחר ‪ thresholding‬מתאים‪.‬‬ ‫דרך אחת שבה אפשר לבחור את הסף המתאים היא על ידי ההיסטוגרמה‪.‬בצד שמאל‬ ‫מוצגת תמונה מקורית לעומת מה יקרה אם ניקח ‪ thresholding‬גדול או קטן מדי‪.‬‬ ‫נניח שיש לנו תמונה עם ההיסטוגרמה כנ"ל‪ ,‬אז נקווה שהגוש הכהה‬ ‫הוא הרקע והגוש הבהיר הוא האובייקט‪.‬‬ ‫אפשר לעשות ‪ thresholding‬מקומי! זאת על ידי כך שנעשה ספים שונים לחלקים שונים‬ ‫בתמונה‪.‬נסתכל על כל היסטוגרמה מקומית‪ ,‬נמצא את הסף הכי טוב ונקווה שנצליח לקבל‬ ‫תמונה בינארית יפה‪ ,‬כמו בדוגמה משמאל‪.‬גם ‪ CamScanner‬עושה את זה!‬ ‫שרון רוטגייזר‬ ‫עכשיו נדבר על מדידת מרחק בין היסטוגרמות‪.‬כשדיברנו על ‪ pattern matching‬אמרנו‬ ‫שנשווה היסטוגרמה ממש אחד לאחד אבל כמו שראינו – יש לא מעט חסרונות‪.‬‬ ‫נניח שנתונה לנו תמונה ומטרתנו לאתר את השלט הכחול‪.‬שיטת העבודה היא לעבור חלון‪-‬‬ ‫חלון ולמדוד מרחק בין היעד שלי לבין החלון שעליו אנחנו יושבים‪.‬הפלט של תהליך כזה הוא‬ ‫מפת דמיון – ככל שחלון מסוים בתמונה דומה יותר למטרה‪ ,‬הערך שייצא במפת הדמיון יהיה‬ ‫יותר גבוה‪ ,‬מעיין מפת חום‪.‬‬ ‫נניח שיש לנו שתי היסטוגרמות ‪ PA‬ו‪ PB-‬ונרצה למדוד את המרחק ביניהם‪.𝐷𝐷(𝑃𝑃𝐴𝐴 , 𝑃𝑃𝐵𝐵 ) ,‬‬ ‫השיטה הראשונה היא מה שעשינו עד כה‪ ,‬וזו שיטה שנקראת מינקובסקי‪:‬‬ ‫𝑝𝑝‪1/‬‬ ‫𝐵𝐵𝑃𝑃 ‪𝐷𝐷(𝑃𝑃𝐴𝐴 , 𝑃𝑃𝐵𝐵 ) = |𝑃𝑃𝐴𝐴 (𝑘𝑘) −‬‬ ‫𝑝𝑝|)𝑘𝑘(‬ ‫ ‬ ‫𝑘𝑘‬ ‫כאשר ‪ k‬אלו דרגות האפור‪.‬המשמעות של החזקה היא שורש מסדר ‪ p‬ובדרך כלל ‪ p=1,2‬ואז‬ ‫אלו מרחק אוקלידי ‪ /‬מנהטן‪.‬‬ ‫בעיה בשיטה‪ :‬למרות שההיסטוגרמות מצד ימין קרובות יותר מאשר בצד‬ ‫שמאל‪ ,‬המרחק שמתקבל בשמאליות קטן יותר! זה משתבש כי אנחנו עושים‬ ‫את ההפרשים לכל כניסה )דרגת אפור( בצורה בלתי תלויה בדרגות שונות‪.‬זו טעות‬ ‫שמסתכלת רק בתוך אותם ה‪-bin‬ים של האפור‪.‬‬ ‫אופציה שנייה היא ‪ kl divergence‬שמתארת את "כמות האינפורמציה הנוספת שדרושה כדי‬ ‫לקודד את ‪ A‬בהינתן ההיסטוגרמה של ‪) "B‬לקוח מתורת האינפורמציה(‪ ,‬אבל לא רק‬ ‫שהשיטה סובלת מאותה הבעיה של מרחקי מינקובסקי‪ ,‬המרחק אינו סימטרי‪ ,‬כלומר‬ ‫)𝐴𝐴||𝐵𝐵( 𝐾𝐾𝐾𝐾𝐷𝐷 ≠ )𝐵𝐵||𝐴𝐴( 𝐾𝐾𝐾𝐾𝐷𝐷‪.‬‬ ‫)𝑘𝑘( 𝐴𝐴𝑃𝑃‬ ‫‪𝐷𝐷𝐾𝐾𝐾𝐾 (𝐴𝐴||𝐵𝐵) = 𝑃𝑃𝐴𝐴 (𝑘𝑘) log‬‬ ‫)𝑘𝑘( 𝐵𝐵𝑃𝑃‬ ‫𝑘𝑘‬ ‫אנחנו מחפשים איזשהו מדד שכן לוקח בחשבון מרחקים בין הכניסות השונות של‬ ‫ההיסטוגרמות‪.‬מרחק כזה הוא ‪.Earth Mover Distance ,EMD‬הפונקציה אומרת כזה דבר‪:‬‬ ‫המרחק בין שתי היסטוגרמות היא כמות העבודה )המינימלית( שצריך לעשות כדי להפוך את‬ ‫היסטוגרמה א' להיות היסטוגרמה ב'‪.‬העבודה מוגדרת על ידי כמות הפיקסלים‬ ‫כפול מספר דרגות האפור שהעברנו אותן‪.‬במצב כזה‪ ,‬אכן ההיסטוגרמות‬ ‫מקודם יוצאות במרחקים הגיוניים‪.‬פורמלית‪:‬‬ ‫𝑖𝑖𝑖𝑖𝑑𝑑 ⋅ 𝑖𝑖𝑖𝑖𝑓𝑓 ‪𝐷𝐷𝐸𝐸𝐸𝐸𝐸𝐸 (𝐴𝐴, 𝐵𝐵) = min‬‬ ‫𝐹𝐹‬ ‫𝑖𝑖‬ ‫𝑗𝑗‬ ‫כך ש ‪ 𝑓𝑓𝑖𝑖𝑖𝑖 ,𝑓𝑓𝑖𝑖𝑖𝑖 ≥ 0‬זה כמות הפיקסלים שנעביר מעמודה ‪ i‬לעמודה ‪ j‬וכן‪:‬‬ ‫‪𝑃𝑃𝐴𝐴 (𝑘𝑘) = 𝑓𝑓𝑘𝑘𝑘𝑘 ,‬‬ ‫𝑖𝑖𝑖𝑖𝑓𝑓 = )𝑘𝑘( 𝐵𝐵𝑃𝑃‬ ‫𝑗𝑗‬ ‫𝑖𝑖‬ ‫האילוצים האלו נועדו לוודא שלאחר שנזיז את כל הפיקסלים נקבל את ההיסטוגרמה ‪B‬‬ ‫וכשאנחנו מתחילים – שלא ניקח יותר פיקסלים ממה שיש לנו‪.‬אפשר לחשוב על זה בתור‬ ‫בעיית זרימה‪.‬‬ ‫שרון רוטגייזר‬ ‫על כן‪ ,‬נראה מקרה פרטי בחד ממד )בדיוק מה שאנחנו צריכים( בו זה יותר קל‪.‬טענה‪:‬‬ ‫|)𝑘𝑘( 𝐵𝐵𝐶𝐶 ‪𝐷𝐷𝐸𝐸𝐸𝐸𝐸𝐸 (𝐴𝐴, 𝐵𝐵) = |𝐶𝐶𝐴𝐴 (𝑘𝑘) −‬‬ ‫𝑘𝑘‬ ‫כלומר‪ ,‬המרחק הנ"ל הוא פשוט ההפרש בין היסטוגרמת הצבירה של ‪ A‬לזו של ‪.B‬אנחנו‬ ‫אמנם לא נוכיח את המשפט‪ ,‬אבל אפשר לתת אינטואיציה‪.‬נתבונן במצב משמאל‪,‬‬ ‫ונתבונן בהיסטוגרמות הצבירה‪.‬‬ ‫נסתכל על היסטוגרמת ההפרש ונקבל את מה שמשמאל‪.‬זה בדיוק שאנחנו‬ ‫צריכים! הגובה הוא מספר הפיקסלים והרוחב זה מרחק דרגות האפור שצריך‬ ‫לזוז‪.‬שטח המלבן הנ"ל הוא בדיוק מרחק ה ‪.EMD‬‬ ‫כנושא אחרון לשיעור‪ ,‬נדבר על חישוב יעיל של היסטוגרמה מקומית‪ ,‬של חתיכה מהתמונה‪.‬‬ ‫נגיד שאנחנו הסתכלנו על חלון מסוים )צהוב( ואז רוצים את ההיסטוגרמה של חלון אחד‬ ‫ימינה‪.‬לצורך כך‪ ,‬נדבר על ‪.integral histogram‬‬ ‫זהו מבנה נתונים שמכיל בפנים היסטוגרמות‪.‬ליתר דיוק‪ ,‬זו מטריצה כגודל התמונה שלנו‬ ‫ולכל פיקסל במבנה יש לנו היסטוגרמה‪ ,‬של כל הפיקסלים מ )‪ (0,0‬עד )‪.(x,y‬אז מבנה‬ ‫הנתונים הוא טנזור תלת ממדי‪ ,‬של גודל התמונה ועומק של ‪.256‬כמובן שכדי לארגן‬ ‫מבנה נתונים כזה צריך ‪ pre-processing‬אבל יועיל לנו בהמשך לחישוב היסטוגרמות יעיל‪.‬‬ ‫כדי לבנות את המבנה הזה‪ ,‬נסתכל בתרשים משמאל ונניח שאנחנו רוצים את ההיסטוגרמה‬ ‫של הנקודה )‪ ,(x,y‬בוורוד‪.‬נניח שכבר חישבנו את כל ההיסטוגרמות בשורות והעמודות שלפני‬ ‫הפיקסל הנ"ל‪.‬אז נעשה הכלה והדחה! כמובן נוסיף את הפיקסל )‪ (x,y‬עצמו‪.‬‬ ‫)𝑦𝑦 ‪𝐻𝐻(𝑥𝑥, 𝑦𝑦) = 𝐻𝐻(𝑥𝑥 − 1, 𝑦𝑦) + 𝐻𝐻(𝑥𝑥, 𝑦𝑦 − 1) − 𝐻𝐻(𝑥𝑥 − 1, 𝑦𝑦 − 1)+𝑎𝑎 𝐼𝐼(𝑥𝑥,‬‬ ‫יש לנו ‪ 3‬פעולות כשכל אחת עולה ‪ 256‬פיקסלים )דרגות אפור( וזה די יקר‪ ,‬אבל עדיין נחמד‪.‬‬ ‫איפה נשתמש בזה? נניח שבא מישהו ורוצה לחשב את ההיסטוגרמה המקומית במלבן‬ ‫מסוים‪ ,‬כמתואר משמאל‪.‬נחשב זאת על ידי )כמו הכלה והדחה(‪:‬‬ ‫) ‪𝐻𝐻(𝑥𝑥1 : 𝑥𝑥2 , 𝑦𝑦1 : 𝑦𝑦2 ) = 𝐻𝐻(𝑥𝑥2 , 𝑦𝑦2 ) − 𝐻𝐻(𝑥𝑥1 , 𝑦𝑦2 ) − 𝐻𝐻(𝑥𝑥2 , 𝑦𝑦1 ) + 𝐻𝐻(𝑥𝑥1 , 𝑦𝑦1‬‬ ‫כמובן שאם ההיסטוגרמה יחסית קטנה אולי יותר זול לבנות אותה בצורה ידנית וזהו‪ ,‬אבל‬ ‫אם אנחנו מדברים על חלון די גדול‪ ,‬זמן הריצה עצמו נמוך ומשתלם‪.‬‬ ‫שרון רוטגייזר‬ ‫שיעור ‪ – 3‬פעולות נקודה‬ ‫השיעור הזה זו התחלה של סדרת הרצאות של פעולות שונות שאפשר לעשות על תמונות‪.‬‬ ‫יש לנו ‪ 3‬סוגי פעולות‪:‬‬ ‫פעולת נקודה ‪ -‬זו פעולה שעובדת על כל פיקסל ומשנה לו את הצבע בדרך כלשהי‪.‬‬ ‫ ‬ ‫זה ייתן לנו אפקטים על התמונה‪.‬‬ ‫פעולה גיאומטרית – פעולה שפועלת על התמונה כולה ולא מסתכלת על ערך‬ ‫ ‬ ‫הפיקסל אלא על הקואורדינטה עצמה‪ ,‬היא תזוז למיקום אחר‪.‬‬ ‫פעולה מרחבית – פעולה שפועלת על הפיקסלים אבל כתלות בסביבה )מרחב( שלה‪.‬‬ ‫ ‬ ‫זה ישמש אותנו לחידוד‪ ,‬טשטוש‪ ,‬ניקוי רעשים ועוד‪.‬‬ ‫היום נדבר על פעולות נקודה‪.‬ניקח פיקסל‪ ,‬נסתכל על הצבע שלו ולפי זה נחליט לאיזה צבע‬ ‫הוא עובר‪.‬אם ‪ f‬היא התמונה המקורית‪ ,‬אז )𝑦𝑦 ‪.𝑔𝑔(𝑥𝑥, 𝑦𝑦) = 𝑀𝑀 𝑓𝑓(𝑥𝑥,‬כפי שניתן לראות‪,‬‬ ‫הפעולה ‪ M‬מסתכלת על הצבעים‪ ,‬לא על המיקומים‪.‬‬ ‫לעיתים‪ ,‬נאהב להציג זאת כפונקציה‪ ,‬כמו מצד שמאל‪ ,‬כאשר ‪ v‬אלה דרגות האפור המקוריות‬ ‫ו )‪ M(v‬יהיו הדרגות החדשות אליהן עובר כל ‪.v‬במקרה של הגרף משמאל‪,‬‬ ‫𝛽𝛽 ‪.𝑀𝑀(𝑣𝑣) = 𝛼𝛼𝛼𝛼 +‬הכפל בקבוע מכווץ ‪ /‬מותח ולכן משנה‪ contrast-‬והוספת הקבוע משנה לי‬ ‫את הבהירות‪.‬‬ ‫פונקציית המיפוי חייבת להיות תקינה – כלומר לא ייתכן שדרגת אפור ‪ v‬תמופה לשתי דרגות‬ ‫חדשות שונות‪.‬‬ ‫עוד נקודה חשובה ויזואלית היא שאנחנו לא אוהבים שצבעים מחליפים את הבהירות שלהם‪.‬‬ ‫כלומר – אם יש לי אזור א' בהיר יותר מאזור ב'‪ ,‬כדאי שאזור א' יישאר בהיר מאזור ב'‪ ,‬גם‬ ‫לאחר המיפוי‪.‬לכן‪ ,‬בשביל הנוחות הוויזואלית‪ ,‬הפונקציות שנאהב יהיו מונוטוניות עולות‪.‬‬ ‫נסתכל למשל‪ ,‬על התמונה משמאל‪ ,‬בעלת ניגודיות נמוכה‪.‬נגיד שדרגות האפור )רובן( בין‬ ‫‪ u1‬ל ‪.u2‬כמו כן‪ ,‬נניח שאנחנו משתמשים בפונקציית המיפוי באמצע‪.‬מה קורה לתמונה‬ ‫תחת מיפוי זה? אנחנו מגדילים את ה‪ contrast-‬למקסימום!‬ ‫זה נראה יותר טוב! אולי נאבד כמה פיקסלים שמחוץ לטווח הצבעים ]‪ ,[u1,u2‬אבל לא נורא‪.‬‬ ‫עוד פעולה אפשרית היא פעולת ה ‪ ,thresholding‬שאת הגרף שלה ראינו כבר בשיעור‬ ‫הקודם‪.‬‬ ‫יש את פונקציית הנגטיב‪ ,𝑀𝑀(𝑣𝑣) = 255 − 𝑣𝑣 ,‬שהופכת את הצבעים‪.‬‬ ‫שרון רוטגייזר‬ ‫𝛾𝛾‬ ‫עכשיו נעבור לדבר על תיקון תמונה מסוג אחר‪.𝑣𝑣𝑜𝑜𝑜𝑜𝑜𝑜 = 𝑐𝑐 ⋅ 𝑣𝑣𝑖𝑖𝑖𝑖 ,gamma correction ,‬‬ ‫ערך פופולרי הוא ‪ 2.2‬או ‪) 1/2.2‬תלוי בכיוון שנרצה(‪.‬למה זה טוב? נראה דוגמה‪.‬‬ ‫עם הערך הזה של ‪ ,gamma‬אנחנו מקבלים תיקון עבור התמונה הבאה‪:‬‬ ‫התיקון מבהיר את כל צבעי הביניים‪ ,‬וככל שהצבע יותר כהה כך פקטור הגדילה גדול יותר‬ ‫)מציית לחוק וובר(‪.‬למעשה‪ ,‬לא רק שהתמונה נהיית יותר בהירה אלא יש פה גם אפקט‬ ‫שינוי ניגודיות‪.‬זה שילוב של מתיחה וקצת כיווץ‪.‬‬ ‫הפרמטר ‪ 2.2‬הגיע מתוך מסך ה ‪ ,CRT‬מסך ישן שהיה פעם וזו הייתה דרך הפעולה שלו‪.‬‬ ‫הוא תרם בעבר לפעולה הבאה‪ :‬נניח שקיבלתי דרגת אפור של ‪ 0.4‬ואני רוצה שזה מה שיוצג‬ ‫לי על המסך‪.‬ה ‪ CRT‬היה מביא לי ‪.0.1‬אם כן‪ ,‬בגלל שה ‪ CRT‬מעלה את ‪ v‬בחזקת ‪,2.2‬‬ ‫המצלמה מראש תיתן ל‪ CRT-‬את תיקון הגאמא ההפוך‪ ,‬כלומר בחזקת ‪.1/2.2‬בצורה כזו הם‬ ‫ינטרלו אחד את השני‪.‬אז למעשה‪ ,‬זה הומצא בתור תיקון הגאמא של המסך‪.‬‬ ‫אבל כיום‪ ,‬המסך כבר לא קיים‪.‬נלך אחורה לכל המצלמות ונתקן את ההטמעה הזו? לא‪,‬‬ ‫התמונות כבר צולמו‪ ,‬לא ניגע במצלמות ישנות‪.‬אבל גם – התיקון הזה עדיין טוב לנו‪ ,‬בגלל‬ ‫חוק וובר‪.‬התיקון הוא "המוציא לפועל" של החוק הזה‪.‬זה גם מבצע בפועל ‪non uniform‬‬ ‫‪.quantization‬כמו כן‪ ,‬כמו שהגרף מתאר‪ ,‬ערכי דרגות האפור צריכים להיות מנורמלים‪.‬‬ ‫עכשיו נדבר על פעולות נקודה בהיסטוגרמות‪.‬אנחנו אמנם עושים פעולות נקודה על‬ ‫תמונה‪ ,‬אבל עדיין שואלים את עצמנו האם אפשר לעשות משחקים עם ההיסטוגרמות‬ ‫בצורה ישירה‪.‬הנחת בסיס חשוב‪ :‬המיפוי הוא מונוטוני עולה ממש‪ ,‬כי רק אז קיים‬ ‫מיפוי הופכי‪.‬זה לא בהכרח יתקיים‪ ,‬אבל נעבור את הגשר כשנגיע לזה‪.‬‬ ‫נניח שיש לנו היסטוגרמה של תמונה ‪ A‬והיסטוגרמה של תמונה ‪ ,B‬כאשר אנחנו יודעים‬ ‫שתמונה ‪ B‬מתקבלת ממיפוי של ‪.A‬כל הפיקסלים שב‪ va-‬עוברים ל‪ vb-‬וזה נכון לכל‬ ‫דרגות האפור‪.‬בגלל שהמיפוי הוא מונוטוני‪ ,‬אף דרגה אחרת לא תמופה ל‪.vb-‬‬ ‫יתרה מזו – כל הפיקסלים שדרגת האפור שלהם קטנה מ‪ va-‬ימופו לדרגות אפור קטנות‬ ‫מ‪.vb-‬אותו הדבר תקף להיסטוגרמות צבירה‪.‬‬ ‫לכן‪ ,‬תחת מיפוי מונוטוני עולה אנחנו יכולים לבנות את ההיסטוגרמה של ‪ B‬מתוך‬ ‫ההיסטוגרמה של ‪ ,A‬בלי לחשב מפורשות את התמונה ‪.𝐻𝐻𝑏𝑏 (𝑣𝑣𝑏𝑏 ) ← 𝐻𝐻𝑎𝑎 (𝑣𝑣𝑎𝑎 ) ,B‬בבניית‬ ‫ההיסטוגרמה של ‪ ,b‬איך אנחנו יודעים מי זה ‪ ?va‬לפני שנגיד את התשובה‪ ,‬רק נעיר‬ ‫שהתהליך זהה בהיסטוגרמת הצבירה‪) 𝐶𝐶𝑏𝑏 (𝑣𝑣𝑏𝑏 ) = 𝐶𝐶𝑎𝑎 𝑀𝑀−1 (𝑣𝑣𝑏𝑏 ) ,‬אותו דבר בהיסטוגרמות‬ ‫הרגילות(‪.‬‬ ‫כדרך אגב‪ :‬קל לעבור מהיסטוגרמת צבירה להיסטוגרמה רגילה‪ ,‬על ידי העובדה ש‬ ‫‪𝑣𝑣𝑖𝑖 = 𝐶𝐶𝑖𝑖 − 𝐶𝐶𝑖𝑖−1‬‬ ‫שרון רוטגייזר‬ ‫השאלה המעניינת היא כזו‪.‬בהינתן שתי תמונות ‪ ,A,B‬האם אפשר למצוא את ההעתקה?‬ ‫הדרך שבה נעשה את זה היא דרך היסטוגרמות הצבירה‪.‬לא תמיד בטוח שקיים כזה מיפוי‪,‬‬ ‫אבל אם קיים‪ ,‬נרצה למצוא אותו‪.‬נצטרך להניח שהמיפוי מונוטוני עולה‪.‬‬ ‫נעשה את זה בעזרת ‪.2 pointer algorithm‬נתחיל לרוץ על ‪ Ca‬ולכל דרגת‬ ‫אפור ‪ va‬נסתכל על גובה העמודה )כמות הפיקסלים(‪.‬נרוץ על ‪ Cb‬עד שנגיע‬ ‫לערך ששווה לערך ‪.va‬אם אכן מצאנו כזו עמודה‪ ,‬אז זה המיפוי שלנו‪.‬נוח‬ ‫לנו לעבוד עם היסטוגרמת הצבירה מכיוון שהיא עולה והמצביע של ‪ Cb‬אף‬ ‫פעם לא צריך לרוץ אחורה‪.‬‬ ‫אינטואיציה ללמה זה נכון נובעת מהעובדה שאמרנו קודם – כל דרגת אפור שקטנה מ‪va-‬‬ ‫תמופה לדרגת אפור קטנה מ‪.vb-‬‬ ‫מה קורה אם יש לנו ‪ 2‬עמודות באותו הגובה‪ ,‬כלומר קיימת דרגת אפור עם ‪ 0‬פיקסלים? יש‬ ‫כמה גרסאות‪:‬‬ ‫לקחת מתוך ‪ Cb‬את העמודה הראשונה שגדולה שווה לגובה העמודה ‪.Ca‬‬ ‫ ‬ ‫לקחת את העמודה האחרונה שמתאימה לגובה העמודה ‪.Ca‬‬ ‫ ‬ ‫הבעיה השנייה שהיא יותר קשה – הפונקציה הנ"ל רציפה אבל היסטוגרמה היא דבר בדיד‪.‬‬ ‫לכן‪ ,‬נשתמש בכלי חדש שנקרא ‪.histogram equalization‬זהו כלי שכל מטרתו היא לשפר‬ ‫את איכות התמונה‪.‬נניח שיש לנו היסטוגרמה כמו בצד שמאל‪ ,‬עם שתי דרגות אפור יחסית‬ ‫קרובות ושלא רואים הבדל ביניהן‪.‬מה שכן יעזור במקרה הזה הוא הגדלת ה‪.contrast-‬‬ ‫נכון שזו לא התמונה שצילמנו‪ ,‬אבל זה ישפר את האיכות שלה‪.‬לכאורה לא רע‪ ,‬אבל מה‬ ‫קורה אם אנחנו כבר ב ‪ contrast‬מקסימלי? אפשר אולי לבצע את זה מקומית לכל זוג‬ ‫עמודות צמודות כאלה‪ ,‬האינטואיציה היא שנרצה לקחת את העמודות ולהרחיק כמה‬ ‫שאפשר אחד מהשני‪.‬במילים אחרות – ניצול כל תחום רמות האפור‪.‬התהליך הנ"ל יהיה‬ ‫‪.histogram equalization‬‬ ‫מה שנעשה מתואר משמאל – ניקח היסטוגרמה ונרצה מיפוי שישטח אותה‪.‬לדבר הזה יש‬ ‫שני אילוצים‪.‬הראשון הוא שהסדר של דרגות האפור חייב להישמר‪ ,‬כלומר אם פיקסל א' היה‬ ‫בהיר יותר מפיקסל ב'‪ ,‬זה יישאר ככה גם אחרי ה ‪.equaliza on‬האילוץ השני הוא שאסור‬ ‫לנו לשבור את העמודות של ההיסטוגרמה‪.‬כלומר אנחנו לא יכולים לקחת ‪ 3‬פיקסלים מתוך‬ ‫‪ 20‬בדרגת אפור ‪.x‬הסיבה היא‪ ,‬שאז לא נוכל לשחזר את המיפוי‪ ,‬שמתבסס על זה שכל‬ ‫הפיקסלים בדרגת אפור א' עברו לדרגת אפור ב'‪.‬הבעיה המתמטית אפילו יותר בסיסית –‬ ‫אם חלק מהפיקסלים בדרגת אפור ‪ x‬הולכים ל‪ y‬וחלק לדרגת ‪ ,z‬זאת לא פונקציה תקינה!‬ ‫לכן‪ ,‬נניח שאנחנו מחליטים לשנות את דרגות האפור ‪ ,x‬כל ‪ 20‬הפיקסלים יזוזו‪.‬כמובן שיהיו‬ ‫לנו קצת פיקסלים שיאבדו מידע‪ ,‬אבל רוב הפיקסלים משפרים את איכות התמונה‪.‬‬ ‫איך נבנה את המיפוי? נגיד שיש לנו את היסטוגרמת הצבירה של התמונה המקורית‬ ‫והיסטוגרמת הצבירה לאחר ‪.equalization‬אז ) 𝑎𝑎𝑣𝑣(𝑀𝑀 = ) 𝑎𝑎𝑣𝑣( 𝑎𝑎𝐶𝐶 ‪.𝑣𝑣𝑏𝑏 = 𝐶𝐶𝑏𝑏−1‬במילים יותר‬ ‫כלליות‪.𝑀𝑀 = 𝐶𝐶𝑏𝑏−1 𝐶𝐶𝑎𝑎 ,‬את המיפוי הזה אנחנו נפעיל על התמונה ונקבל תמונה טובה יותר‪.‬‬ ‫שרון רוטגייזר‬ ‫נעבור על היסטוגרמת הצבירה בצורת ‪.2 point algorithm‬לכל‬ ‫דרגת אפור )בין ‪ 0-7‬בדוגמה הזאת( אנחנו רוצים לדעת לאיזה‬ ‫צבע היא תמופה‪.‬האלגוריתם‪:‬‬ ‫שלב ראשון – נאתחל את היסטוגרמת הצבירה של היעד שלנו‬ ‫בהיסטוגרמת צבירה בעלת קפיצות שוות‪.‬‬ ‫שלב שני – לכל דרגת אפור ‪ v‬בתמונת המקור‪ ,‬נרוץ על דרגות‬ ‫האפור בתמונת היעד‪ ,‬עד שניתקל בדרגת אפור ‪ u‬שכמות‬ ‫הפיקסלים בה היא לפחות כמו המקורית‪ ,‬כלומר )𝑣𝑣( 𝑎𝑎𝐶𝐶 ≥ )𝑢𝑢( 𝑏𝑏𝐶𝐶‪.‬‬ ‫נקבע שדרגת האפור ‪ v‬עוברת לדרגה ‪.u‬‬ ‫שלב שלישי – נמשיך לרוץ על דרגות האפור בתמונה המקורית‪ ,‬כל עוד ) ‪.𝐶𝐶𝑏𝑏 (𝑢𝑢) ≥ 𝐶𝐶𝑎𝑎 (𝑣𝑣 ′‬‬ ‫ברגע שזה לא מתקיים יותר‪ ,‬עוברים לדרגת האפור הבאה בהיסטוגרמת היעד‪.‬‬ ‫במקרה שלנו )ניסיתי‪ ,‬ממליץ לראות את ההקלטה בהנפשה הזאת(‪:‬‬ ‫התחלנו מדרגת אפור ‪ 0‬ובעמודה זו יש ‪ 3‬פיקסלים‪.‬מכיוון שבהיסטוגרמת היעד יש ‪ ,7‬נמפה‬ ‫את ‪ 3‬לדרגה זו‪.‬כשממשיכים לדרגה ‪ 1‬עם ‪ 6‬פיקסלים גם היא קטנה מ‪ 7-‬ולכן גם דרגת‬ ‫האפור ‪ 1‬תמופה לדרגה ‪ 0‬בתמונת היעד‪.‬דרגת אפור ‪ 2‬בתמונת המקור כבר לא נכנס ב‪,7-‬‬ ‫אבל הוא כן נכנס ב‪ 10-‬וכן הלאה‪.‬‬ ‫בצד שמאל מופיע המיפוי הסופי ונשים לב לכך שהעמודה עם ‪ 38‬לא נכנסת‬ ‫ב‪ 28-‬ולא ב‪ 35-‬ולכן לא יהיו דרגות אפור כאלו בתמונת היעד‪.‬זו למעשה‬ ‫בדיוק הרחקת העמודות!‬ ‫יש פה תופעה מעניינת – כשיש לנו קצת פיקסלים מדרגות‬ ‫אפור קרובות הם מאוחדים לאותה דרגת האפור אבל‬ ‫כשיש לנו הרבה פיקסלים מדרגות אפור קרובות‪,‬‬ ‫האלגוריתם מעדיף להרחיק ביניהם‪.‬‬ ‫בתור שלב אחרון – נפעיל את המיפוי שמצאנו על התמונה‪.‬‬ ‫ה‪ contrast-‬המקומי גדל עבור הרבה פיקסלים וקטן עבור מעט פיקסלים‪ ,‬כמו שצריך! זה‬ ‫מוציא לנו את המידע החשוב בצורה שנראה אותו טוב יותר )כאשר אנחנו מגדירים מידע‬ ‫חשוב ככזה שיש הרבה ממנו(‪.‬אמנם שמאוחדים לדרגה אחת משלמים מחיר של איבוד‬ ‫מידע‪ ,‬אבל זה כמעט לא נראה לעין וזה )יחסית( לא הרבה פיקסלים‪.‬כמו כן‪ ,‬מספר דרגות‬ ‫האפור קטן‪.‬‬ ‫דוגמה על תמונה אמיתית מופיעה בצד שמאל‪.‬‬ ‫שרון רוטגייזר‬ ‫יתרה מזו – ניתן לעשות ‪ equalization‬מקומי! כלומר‪ ,‬לכל‬ ‫חלון קטן בתמונה נעשה שיווי היסטוגרמה בפני עצמו‪.‬‬ ‫משמאל זה למשל ‪.8x8‬‬ ‫אפשר גם לעשות משהו קצת יותר מרחיק לכת; מערכת הראייה שלנו לא אוהבת קצוות‬ ‫שרופים – גושי פיקסלים בהירים או כהים מדי‪.‬למעשה‪ ,‬העין תעדיף היסטוגרמה גאוסיאנית‪,‬‬ ‫כלומר הרבה פיקסלים במרכז דרגות האפור ומעט בצדדים‪.‬לכלי שעושה את זה קוראים‬ ‫‪.histogram matching‬במקום מיפוי להיסטוגרמה שטוחה נמפה את זה בעזרת אותו‬ ‫האלגוריתם להיסטוגרמה נתונה כלשהי‪.‬‬ ‫נניח שיש לנו את התמונה שמתארת את העולם האמיתי ואחרי כמה שעות צולמה התמונה‬ ‫הצהובה‪.‬נרצה לנסות להשוות בין התמונות כדי לראות אם יש שינויים‪Histogram.‬‬ ‫‪ matching‬יעזור לנו למפות את הצבעים )ההיסטוגרמה( של התמונה הצהובה לאלה של‬ ‫התמונה הראשונה‪.‬יש בהרצאה כמה דוגמאות שהתהליך לא תמיד עובד‪.‬‬ ‫שימוש נוסף מפתיע הוא סינתזה של טקסטורות‪.‬יש לנו מרקם מסוים‪ ,‬כנתון בצד שמאל‬ ‫ואנחנו רוצים ליצור תמונה חדשה גדולה יותר מאותו המרקם‪.‬אנחנו לא רוצים כמובן לעשות‬ ‫זאת על ידי הדבקה כי אז יראו בקלות איפה התפר‪ ,‬אלא ליצור תמונה חדשה עם אותה‬ ‫הסטטיסטיקה‪.‬הרעיון שמשתמש ב ‪ histogram matching‬לפתרון הבעיה הזאת הומצא כבר‬ ‫ב‪.1995-‬האלגוריתם אומר כך‪:‬‬ ‫ניצור תמונה רנדומלית עם אותה הסטטיסטיקה על ידי לקיחת גודל תמונת היעד שנרצה‬ ‫וליצור תמונה רנדומלית באותו הגודל‪.‬אנחנו ניקח את התמונה הזו ונעשה לה ‪histogram‬‬ ‫‪ matching‬להיסטוגרמה של המרקם המקורי‪.‬כדי לפתור את בעיית הגדלים נעבוד עם‬ ‫היסטוגרמות מנורמלות‪.‬‬ ‫כמובן שהשיטה לא מושלמת כי הרי שיווי היסטוגרמות לא תמיד מגיע לאופטימום‪ ,‬אבל‬ ‫אפשר לעשות כמה איטרציות‪.‬השיטה הזאת לא עובדת כשיש גושי צבעים או משהו שהוא‬ ‫תלוי מיקום יחסי‪ ,‬כי האלגוריתם מסתכל על הצבעים נטו ואין סיכוי שהמידע המרחבי יילקח‬ ‫בחשבון‪.‬לכן‪ ,‬האלגוריתם עובד על טקסטורות גנריות יותר‪ ,‬ללא מבנה‪.‬יש בהרצאה עוד‬ ‫דוגמאות ופרט דוגמה אחת יותר רכה – כזו שאמנם הטקסטורה נשמרת אבל ריבועיות גושים‬ ‫נאבדת‪.‬‬ ‫כדרך אגב‪ ,‬האלגוריתם האמיתי מ‪ 95‬קצת שונה וכולל בנוסף גם התאמת המקור ליעד בכל‬ ‫רמות הרזולוציה‪ ,‬מה שמאפשר לקבלת טקסטורות מורכבות יותר ועוד נדון על כך‪.‬‬ ‫כשאנחנו עושים ‪ histogram matching‬אנחנו בעצם מחפשים מיפוי אופטימלי‪,‬‬ ‫שיקרב את היסטוגרמת התמונה המקורית להיסטוגרמות תמונת היעד‪.‬אותו‬ ‫המיפוי הוא גם מונוטוני‪ ,‬אבל זה לא מבטיח שהתמונה תראה טוב לאחר המיפוי‪.‬‬ ‫המניע העיקרי לכישלונות כמו שאמרנו‪ ,‬הוא בעיקר מרחבי‪.‬גם בדוגמה של לנה במצגת‪ ,‬אם‬ ‫בתמונת המקור יש הרבה צבעים בהירים ובתמונת היעד לא הרבה צבעים בהירים‪ ,‬ייווצר‬ ‫‪ artifact‬שיגרום לצבעים בהירים לבוא על חשבון הכהים‪.‬אז מה שקורה הוא מיפוי‬ ‫אופטימלי‪ ,‬אבל לא תמונה אופטימלית‪ Matching.‬מקומי ישפר‪ ,‬אבל הבנו את הנקודה‪.‬‬ ‫אם כן‪ ,‬זה מעביר אותנו לבעיה אחרת – מעניינת לא פחות‪.‬נרצה מיפוי שהכי טוב לתמונת‬ ‫היעד שלנו‪ ,‬כלומר בהינתן תמונת מקור ויעד‪ ,‬שהתוצאה תהיה הכי דומה ליעד‪.‬‬ ‫שרון רוטגייזר‬ ‫כל פיקסל ימופה לצבע חדש במיפוי ונרצה שהשגיאה בין תמונת המקור לתמונת היעד יהיה‬ ‫מינימלי‪.‬נשאלת השאלה – מה זו השגיאה הזאת? לצורך הפשטות – סכום ריבועי המרחקים‬ ‫של כל פיקסל ביעד מהפיקסל שקיבלנו‪.‬נרצה למזער את הטעות הזו ובתקווה שאם נמזער‬ ‫את זה‪ ,‬נקבל תמונה שאכן קרובה לתמונת היעד שלנו‪.‬לחלקכם זה אולי נשמע כמו ‪ MSE‬או‬ ‫‪ ,(LS‬אבל אחד החסרונות )מעבר לכל הבעיות שיש באלגוריתם( הוא שזה לא מבטיח שכל‬ ‫דרגות האפור ‪ v‬ימופו לאותן הדרגות ‪.u‬‬ ‫האלגוריתם שנפעל בו לצורך התהליך )‪ (MTM‬הוא ‪ SLT‬שזה ‪.slice transform‬בהינתן‬ ‫תמונה הוא מייצר עמודה לכל דרגת אפור ואז מביע את התמונה כסכום העמודות האלה‪.‬‬ ‫דוגמה עם תמונת עמודה ו‪ 3-‬דרגות אפור בלבד‪ ,‬בצד שמאל‪.‬עכשיו‬ ‫מובטח לנו שאם ניקח את המטריצה הזו ונכפול אותה בדרגות האפור‬

Use Quizgecko on...
Browser
Browser