התקופה האחרונה גרמה להרבה שינויים בחיינו, בין היתר באינטראקציה הבין-אישית. פגישות משפחתיות וישיבות עבודה עברו להתנהל בצורה וירטואלית בעזרת אפליקציות וידאו. אחת מהאפשרויות המעניינות של האפליקציות מאפשרת לנו להחליף רקע, ולכמה רגעים למקם את עצמנו בחוף ים, בג'ונגל או אפילו סמוך לזוהר הצפוני. נסביר כיצד אלגוריתמים מפרידים בין רקע לאובייקט.
בסרטי קולנוע עושים שימוש במסך ירוק כדי להחליף את הרקע מאחורי השחקנים ברקע וירטואלי. ההפרדה בין האובייקט לרקע עם מסך ירוק פשוטה: המחשב מזהה את הפיקסלים הירוקים בתור רקע, והיתר הם האובייקטים.
למה דווקא ירוק? כדי ליצור הפרדה מלאה בין הרקע לאובייקט נדרש הבדל גדול בין צבעי האובייקטים לרקע. הצבעים ירוק וכחול בקושי נמצאים בגוף האדם. נוסף על כך, רוב חיישני הצבע במצלמה הם ירוקים, ולכן הוא הצבע הקל ביותר לזיהוי על ידי מחשב [1].
איך אלגוריתמים מצליחים להחליף את הבלאגן בחדר בתמונות רקע שונות ללא שימוש במסך בצבע אחיד? ברוב התמונות של אדם בודד, הרקע תופס את השטח הגדול ביותר בתמונה. כאשר צבע הרקע אינו ידוע אבל הרקע אחיד יחסית, אפשר להגדיר את הצבע הנפוץ ביותר בתמונה בתור רקע. שיטה זו נקראת ״פילוח מבוסס היסטוגרמה״ [2] מפני שהיא מבוססת על "היסטוגרמת הצבע" של התמונה: טבלה הסופרת כמה פיקסלים מופיעים בכל צבע.
דרך נוספת להפריד היא בעזרת זיהוי קווי מתאר [3], בשפה מקצועית זיהוי שפות (edge detection). נקודות השפה בין אובייקט לרקע בתמונה מאופיינת לרוב בשינוי חד בצבע. כדי למצוא את נקודות השפה מחשבים עבור כל פיקסל בתמונה את ההבדל בצבע בינו לבין הפיקסלים השכנים. נקודות שעבורן נמצא שינוי מהותי בצבע ביחס לשכנותיהן, חשודות כנקודות שפה. הבחנה נוספת לגבי נקודות שפה המפרידות בין אובייקט לרקע היא שהן מהוות קו רציף, ולכן אם נראה נקודה החשודה בתור נקודת שפה כאשר אין בסביבתה נקודות שפה נוספות כנראה שמדובר בטעות (צילום אינו מדויק במאת האחוזים ובתהליך ישנן טעויות). מצד שני, אם יש נקודה שבסביבה שלה יש הרבה נקודות שפה, יש סיכוי טוב שהיא חלק מקו המפריד בין אובייקט לרקע. ניתן לקבוע פרטנית מהו הרף הנדרש להפרדה, כלומר כמה נקודות שכנות מייצגות קו שפה וכמה נחשבות טעות. קו שפה יאופיין על ידי צורה סגורה שתוחמת אובייקט. כדי למצוא אובייקט חסום בקו שפה, מפעילים מניפולציה מתמטית inpolygon שמסמנת את כל הנקודות התחומות על ידי קו השפה, וכך מפרידה בין האובייקט לרקע. תמונה המכילה את כל הפיקסלים הנמצאים בתוך הצורה התחומה על ידי קווי השפה נקראת תמונת סגמנטציה (או מפת סגמנטציה).
שלבי הפרדת הרקע: מציאת נקודות השפה של האובייקט ושיוך כל פיקסל לאובייקט או רקע.
אם נסתכל מקרוב על אזור קטן בסביבת נקודת השפה בתמונה נוכל ברוב המקרים, להבין מהצבע והמרקם לאיזה אובייקט הוא שייך: דשא, קיר, פרווה של כלב, עור, שיער או בגד שאדם לובש. מערכת "למידה עמוקה" מסוג סגמנטציה סמנטית (Semantic Segmentation) עובדות בדיוק כך [4]. מערכות אלו מתאמנות בזיהוי אובייקטים כמו כלבים, חתולים, אנשים, מכוניות, דשא וכביש, ויודעות להגיד לכל נקודה לאיזה אובייקט היא שייכת בעזרת הסתכלות על הסביבה הקרובה.
[s201_bai id="6"] |
[s201_bai id="4"] |
מערכת למידה עמוקה מסוג סגמנטציה סמנטית משייכת כל פיקסל לאובייקט מתאים |
בוידאו, על סמך העובדה שהתנועה האנושית רציפה, המקום של הדמות לא משתנה הרבה בין פריים לפריים. אפשר לנצל מידע מהסגמנטציה של הפריים הקודם לחישוב הנוכחי. כיום באפליקציות וידאו חדשות הנדרשות לזהות רקע בוידאו בזמן אמת משתמשים במערכות לומדות מסוג סגמנטציה סמנטית בזמן-אמת, שבנוסף לתמונת הפריים הנוכחי נעזרות גם בתמונת הסגמנטציה של הפריים הקודם [5].
לסיכום, ישנן שיטות מגוונות להפרדה בין אובייקט לרקע, ושיטות רבות למציאת עצמים בתמונה ולסמנם. צבעים, טקסטורה ומעברים חדים, מספקים מידע חזותי שאפשר להיעזר בו כדי להבדיל בין הרקע לאובייקט. כל אחת מהשיטות מתאימה לתנאי שטח אחרים. בפעם הבאה שאתם משתתפים במסיבה וירטואלית בסוף העולם כשברקע זומבים רעבים רודפים אחריכם, נסו לגלות באיזו שיטה האלגוריתם משתמש כדי להפריד את הרקע.
קישורים והסברים נוספים:
[1] הסבר נוסף לשימוש במסך ירוק להפרדת רקעים
[2] הסבר נוסף לפילוח מבוסס היסטוגרמה (histogram equalization)
[3] הסבר נוסף על זיהוי קצוות (edge detection)
[4] הסבר נוסף על סגמנטציה סמנטית (semantic segmentation)
[5] הסבר על מערכות סגמנטציה בזמן אמת