צילום פנורמי הוא טכניקה המאפשרת לייצר תמונות עם שדה ראיה רחב במיוחד באמצעות ציוד או תוכנה ייעודיים, כך שהתמונה תכיל את כל הנוף שיוכל לראות אדם שעומד בנקודה בה נמצאת המצלמה. בפוסט זה נסביר כיצד יוצרים תמונות פנורמה, זאת אומרת כיצד מחשב מחבר רצף של תמונות שונות לתמונה אחת כך שכל העצמים בה יהיו רציפים. פעולה זו היא חלק מתחום רחב יותר של אלגוריתמים ש״מבינים״ תמונות עליו כתבנו בשבועות האחרונים.
מקורה של המילה פנורמה ביוונית, ופירושה "מראה הכל" [1]. משמעותה של הפנורמה היא ייצוג של מרחב פיזי בעזרת תמונה, ציור, סרט או מודל תלת ממדי. בימינו קשה למצוא טלפון סלולרי או ממשק לעיבוד תמונה שאינם מכילים אפשרות לחבר תמונות לתמונת פנורמה.
בפוסט בנושא חילוץ מאפיינים מתמונות [2] הסברנו כיצד אלגוריתמים דוגמת SIFT משווים בין תמונות ומוצאים בהן את אותו העצם, למרות שהוא מצולם מזוויות שונות. כעת, נסביר כיצד משתמשים בהתאמות האלה כדי למצוא את המיקום היחסי של תמונה אחת ביחס לשניה כך שניתן יהיה לחבר אותן ביחד לתמונת פנורמה רציפה.
כדי ליצור את תמונת הפנורמה של חוף הים של מיאמי למעלה (מומלץ לקרוא דרך האתר), נצטרך שתי תמונות או יותר שמכסות כל אחת חלק אחר, אבל חשוב שהתמונות יכילו גם אזורים חופפים, כדי שנוכל לחבר ביניהן. האזור החופף מאפשר לחשב מהו המיקום של התמונות אחת ביחס לשניה. השלב הראשון הוא מציאת אזורי עניין דומים בשתי תמונות עוקבות של העיר. תיארנו בפוסט הקודם בסדרה כיצד ניתן, למשל, למצוא פינות של אובייקטים ומעברים חדים בצבעים, ואז לנסות להבין מי מהם תואמים זה לזה במספר תמונות. בתמונה של עיר אזורי עניין יכולים להיות בניינים מיוחדים, גשר מעל מים, קצוות כר הדשא ואף אזורים בולטים על שפת המים. לאחר שזוהו נקודות העניין, מופעל אלגוריתם בשם דסקריפטור (מהמילה תיאור), עליהם כתבנו בשבוע שעבר [2, 3]) שמחלץ איזורי העניין ומוצא אותם בתמונות שונות. מבחינה טכנית דסקריפטורים מאפשרים תיאור מתמטי של אזורי העניין דרך עיבוד של ערכי הפיקסלים השונים בתמונה והשוואה ביניהם לבין הביטויים המקבילים בתמונה אחרת. בצורה זו ניתן להתאים בין תמונות כפי שאנו מתאימים חלקי פאזל אשר אנו מעוניינים לחבר אחד לשני: אנו מזהים את סביבת החלקים ואת הרציפות בצבעים בנקודות החיבור בין החלקים, וכעת אנו מנסים לחבר בין החלקים המתאימים ביותר.
בתמונות אלו ניתן לראות שתי תמונות קרובות של אותה הסצנה:
לאחר הפעלת הדסקריפטור מכן ניתן לראות את הקווים המתארים איזורים תואמים בין שתי התמונות:
מימוש וצילום: צבר דולב.
לאחר שנמצאו ההתאמות בין אזורי העניין בשתי תמונות עם חפיפה, נדרש למצוא מהו הקשר הגיאומטרי בין צמד התמונות. כלומר, כיצד ניתן לסובב ולהזיז (ולפעמים גם לכווץ או להרחיב) את התמונות כך שתמונה תתחבר כהמשך רציף וטבעי של התמונה הראשונה. בדוגמא שלנו, נקבל את תמונת הפנורמה הבאה:
מימוש וצילום: צבר דולב.
למתעניינים, הצעד האחרון, של פעולות הסיבוב וההזזה, מבוצע על ידי כלי מתמטי הנקרא "מטריצת ההומוגרפיה" [4]).
תמונות פנורמה הן כלי ייחודי שמאפשר לנו להכניס כמה שיותר מהחוייה שלנו לתוך התמונה, לעומת תמונה רגילה, שבה המרחק שלנו מן הנוף ושדה הראייה שלנו מגבילים את כמות הפרטים שניתן לתעד. השיטות שמאפשרות שילוב מידע מתמונות חופפות רבות לכדי יצירת פנורמה מתבססות על אלגוריתמים יסודיים מעולם הראייה הממוחשבת. אותם האלגוריתמים משמשים בסיס גם לאפליקציות נוספות רבות כגון: שחזור תלת ממדי של אובייקטים בעזרת צילום רצף תמונות מזוויות שונות, עקיבה אחר אובייקטים שונים בסרטון, זיהוי אובייקטים מסויימים בתמונה ואפילו מסייעים בהתמצאות במרחב ליישומי רובוטיקה ומיפוי. מומלץ לצלם פנורמה בטלפון את חוף הים הקרוב לביתכם, או לנסות בעצמכם לייצר תמונה פנורמית בקישור הבא [5].
קישורים וקריאה נוספת:
[1] הסבר מפורט על מצלמות דיגיטליות ועל צילום פנורמי
[2] זיהוי אוטומטי של אותו החפץ בתמונות מזוויות שונות, מתוך מדע גדול בקטנה
[3] הסבר מפורט לדסקריפטור SIFT
[4] הסבר מפורט למטריצת ההומוגרפיה
[5] אתר המאפשר יצירת תמונת פנורמה בצורה מקוונת