Parallel Tracking and Mapping - Electrical Engineering Library

TECHNION – Israel Institute of Technology
Department of Electrical Engineering
The Vision and Image Sciences Laboratory
Parallel Tracking and
Mapping Reconstruction using Edgelets
:‫מגישים‬
‫רם ברכה‬
‫אלעד בן שמחון‬
:‫מנחים‬
‫אלי אפלבוים‬
‫ישי כמון‬
2102 ‫דצמבר‬
1
‫תוכן עניינים‬
‫רשימת סמלים וקיצורים ‪3................................... ................................ ................................‬‬
‫פרק ‪ :1‬תקציר ומבוא ‪4....................................... ................................ ................................‬‬
‫‪1.1‬‬
‫תקציר ‪4............ ................................ ................................ ................................‬‬
‫‪1.2‬‬
‫מבוא ‪5............. ................................ ................................ ................................‬‬
‫פרק ‪ :2‬אלגוריתם מיפוי ועקיבה מבוסס נקודות עניין ‪6.............................. ................................‬‬
‫‪ 2.1‬הנחות יסוד ‪6......................................... ................................ ................................‬‬
‫‪ 2.2‬מיפוי נקודות עניין בתלת מימד ‪7................ ................................ ................................‬‬
‫‪ 2.3‬מסקנות ‪8.............. ................................ ................................ ................................‬‬
‫פרק ‪ :3‬איתור שפות ‪9........................................ ................................ ................................‬‬
‫‪Data Association 3.1‬‬
‫‪9......................... ................................ ................................‬‬
‫‪ 3.2‬מציאת שפות בתמונה ‪11......................... ................................ ................................‬‬
‫‪ 3.3‬חיפוש אנכי ‪11....................................... ................................ ................................‬‬
‫פרק ‪ :4‬חיפוש אפיפולרי של שפות ‪13................... ................................ ................................‬‬
‫‪ 4.1‬רקע תיאורטי ‪13..................................... ................................ ................................‬‬
‫‪ 4.2‬חיפוש לאורך הקו האפיפולרי ‪14................ ................................ ................................‬‬
‫פרק ‪ :5‬אלמנט שפה בתלת ממד ‪16..................... ................................ ................................‬‬
‫‪ 5.1‬ייצוג ‪ Edgelet‬בתלת ממד ‪16.................. ................................ ................................‬‬
‫‪16.............................. ................................ ................................ Triangulation 5.2‬‬
‫‪ 5.3‬השלכת שפה תלת ממדית לתמונה ‪18........................................ ................................‬‬
‫פרק ‪ :6‬סיכום ‪19.............. ................................ ................................ ................................‬‬
‫‪ 6.1‬תוצאות ‪19............ ................................ ................................ ................................‬‬
‫‪ 6.2‬הצעות להמשך ‪23.................................. ................................ ................................‬‬
‫פרק ‪ :7‬ביבליוגרפיה ‪24...................................... ................................ ................................‬‬
‫‪2‬‬
‫רשימת סמלים וקיצורים‬
‫‪ .Parallel Tracking and Mapping - PTAM ‬האלגוריתם עליו מבוסס‬
‫הפרויקט‪.‬‬
‫‪ – Edgelet ‬אלמנט שפה‪ ,‬חלק קצר וישר מקומית של שפה שיכולה להיות‬
‫ארוכה ועקמומית‪.‬‬
‫‪ ‬תהליך העקיבה – אלגוריתם המשתמש במודל תלת ממדי על מנת לשערך את‬
‫מיקום המצלמה בכל רגע נתון‪.‬‬
‫‪ ‬תהליך המיפוי – אלגוריתם שמשערך מיקום תלת ממד של אובייקטים על‬
‫סמך הופעתם מתמונות‪.‬‬
‫‪ ‬טרנספורמציה ‪ - SE3‬טרנספורמציה המיוצגת ע"י מטריצה המורכבת‬
‫ממטריצת סיבוב ווקטור הזזה‪ .‬נסמן טרנספורמציה המעבירה‬
‫מקואורדינטות של מצלמה לקואורדינטות העולם כ‪-‬‬
‫‪.‬‬
‫‪ ‬תמונת מקור – התמונה בה אותרה השפה לראשונה ע"י אלגוריתם ‪.Canny‬‬
‫‪ ‬תמונת מטרה – תמונה חדשה בה אנו מחפשים את השפה בחיפוש אפיפולרי‪.‬‬
‫‪ ‬קואורדינטות עולם – מערכת הצירים המוחלטת‪ .‬המערכת נקבעת ע"י‬
‫מיקום התמונה הראשונה‪.‬‬
‫‪ – camProj ‬הטלה מתלת ממד לתמונה לפי הטלה פרספקטיבית ומודל‬
‫מצלמת חריר‪.‬‬
‫‪3‬‬
‫פרק ‪ : 0‬תקציר ומבוא‬
‫‪ 0.0‬תקציר‬
‫עקיבה אחר מצלמה‪ ,‬בסביבה לא ידועה‪ ,‬הינה בעיה נלמדת שהניבה פתרונות רבים‪.‬‬
‫ישנם מגוון שימושים ואפליקציות לעקיבה כגון ‪ ,Augmented Reality‬קביעת‬
‫מסלול הצילום בוודאו ועוד‪ .‬הפתרונות המצויים בראייה ממוחשבת‪ ,‬כגון‬
‫‪ monocular SLAM‬ו‪ ,Recursive SFM -‬הינם פתרונות שהתפתחו לאחרונה‬
‫המאפשרים ביצוע עקיבה בזמן אמת‪ .‬למרות זאת‪ ,‬פתרונות אלו לוקים בחסר כאשר‬
‫המצלמה מוזזת בתנועות מהירות לעומת אלגוריתמי עקיבה המשתמשים בסביבה‬
‫ידועה‪.‬‬
‫פרויקט זה הינו החלק הראשון במימוש ‪ ,PTAM‬אלגוריתם מיפוי ועקיבה‪ ,‬תוך‬
‫שימוש בקווי מתאר‪ .‬קווי המתאר הינם סגמנטים בעלי חסינות לתזוזות מהירות‪.‬‬
‫פרויקט זה יתאר בניית מודל תלת ממדי אשר ישמש בהמשך לביצוע העקיבה‪.‬‬
‫‪4‬‬
‫‪ 0.2‬מבוא‬
‫עקיבה בזמן אמת אחר מצלמה הינה בעיה מוכרת בעלת מגוון שימושים‪ .‬לאחרונה‬
‫עולה הדרישה לעקיבה אחר מצלמה בסצנה לא ידועה‪ .‬אלגוריתמים אלו נדרשים‬
‫לבצע מיפוי של סצנה לא מוכרת למודל ובו זמנית לבצע עקיבה אחר תנועת‬
‫המצלמה על פי מודל זה‪ .‬כל זאת תחת אילוצי זמן אמת‪.‬‬
‫פרויקט זה מבוסס על אלגוריתם ‪ ,PTAM‬המפצל את ביצוע העקיבה והמיפוי לשני‬
‫תהליכים נפרדים המבוצעים במקביל‪ .‬תכונה זו מאפשרת להריץ את האלגוריתם‬
‫במחשב מרובה ליבות ובכך לקבל תוצאות המותאמות לזמן אמת‪.‬‬
‫מיפוי הסצנה נעשה ע"י איתור נקודות עניין (לרוב פינות) ושערוך מיקומם במרחב‪.‬‬
‫נקודת עניין מאופיינת כמרכז של תלאי פיקסלים‪ ,‬סביבת פיקסלים בעלת תכונה‬
‫משותפת‪ ,‬המאפשרת התאמה נוחה של אותה נקודה במספר תמונות‪.‬‬
‫ישנה בעיה הנוצרת מעקיבה תחת תנועה מהירה של המצלמה מכיוון שתנועה זו‬
‫גורמת לטשטוש רב ובלתי צפוי של התמונה המצולמת‪ .‬טשטוש "מורח" את סביבת‬
‫הפיקסלים והופך את נקודות העניין לבלתי ניתנות להתאמה‪.‬‬
‫בניגוד לנקודות עניין‪ ,‬קווי מתאר הינם אלמנטים חד ממדיים שאינם מאופיינים על‬
‫ידי סביבתם אלה ע"י שינוי בבהירות התמונה‪ .‬שפות בתמונה‪ ,‬שנמצאות בכיוון‬
‫התנועה‪ ,‬אינן מושפעות מהטשטוש ולכן ניתנות לעקיבה‪ .‬אפילו שפות שאינן בכיוון‬
‫תנועת המצלמה ניתנות לעקיבה תחת שערוך אמפליטודת הטשטוש‪.‬‬
‫בפרויקט זה ננסה לפתור את הבעיות הנוצרות מתנועה מהירה של המצלמה‪ .‬יתואר‬
‫כיצד ניתן לבנות מודל תלת ממדי מבוסס שפות‪ ,‬כיצד לאתר שפות בתמונה‪ ,‬כיצד‬
‫להתגבר על בעיית התאמת השפות וכיצד לשערך את מיקומם במרחב‪.‬‬
‫‪5‬‬
‫פרק ‪ :2‬אלגוריתם מיפוי ועקיבה מבוסס נקודות‬
‫עניין‬
‫פרויקט זה מתבסס על אלגוריתם ‪.Parallel Tracking and Mapping‬‬
‫אלגוריתם זה ממפה סצנה לא ידועה בעזרת נקודות עניין שמוגדרות כפינות‪.‬‬
‫נתחיל בתיאור תהליך המיפוי של האלגוריתם אשר יהווה בסיס למיפוי שפות‬
‫בהמשך‪ .‬המיפוי הסופי יהיה מורכב מאלמנטים של נקודות ושפות יחד‪.‬‬
‫‪ 2.0‬הנחות יסוד‬
‫א‪ .‬מודל מצלמת חריר והטלה פרספקטיבית בעלת ‪.Barrel Radial Distortion‬‬
‫ב‪ .‬הסצנה מצולמת באמצעות מצלמה בעלת קצב ריענון תמונות של ]‪.30[Hz‬‬
‫כל הפרמטרים של המצלמה ידועים ושוערכו בתהליך כיול אפריורי‪.‬‬
‫– אורך מוקד העדשה‪.‬‬
‫– מיקום מרכז המצלמה‪.‬‬
‫– פרמטר עיוות העדשה‪.‬‬
‫ג‪ .‬תהליך העקיבה מספק מיקומים של פריימים חדשים ביחס לראשית צירים‬
‫שנקבעה מראש‪ .‬מיקום זה מיוצג באמצעות טרנספורמציה מקואורדינאטות‬
‫העולם לקואורדינטת המצלמה‪.‬‬
‫ד‪ .‬תהליך העקיבה מספק את העומק הממוצע של נקודות העניין בתמונה‪ .‬עומק‬
‫זה ישוערך לפי נקודות עניין תלת ממדיות שנמצאו בפריים החדש‪.‬‬
‫‪6‬‬
‫‪ 2.2‬מיפוי נקודות עניין בתלת מימד‬
‫ראשית‪ ,‬תהליך המיפוי מקבל תמונה חדשה שהועברה מתהליך העקיבה‪ .‬מהתמונה‬
‫נבנית פירמידה של ‪ 4‬רמות רזולוציה שונות מ ‪ 640X480‬ועד ‪ 80X60‬פיקסלים‪.‬‬
‫מטרת הפירמידה הינה למצוא פינות בגדלים שונים בתמונה וע"י כך להגדיל את‬
‫מספר נקודות העניין שאותרו בתמונה‪.‬‬
‫על מנת לחלץ נקודות עניין בתמונה‪ ,‬תהליך המיפוי מפעיל את אלגוריתם ‪FAST‬‬
‫‪ Corner Detection‬למציאת פינות בכל רמה בפירמידה‪ .‬לאחר מכן מתבצע סינון‬
‫הפינות שהתקבלו בעזרת אלגוריתם ‪( Non Maximal Suppression‬השארת הפינה‬
‫בעלת הציון הגבוה ביותר מתוך סביבה קרובה של פינות)‪ .‬בנוסף‪ ,‬מנופות פינות‬
‫בעלות ציון ‪ Shi Tomasi‬נמוך מרף שנקבע מראש‪.‬‬
‫נקודות עניין מאופיינות ע"י סביבה של ‪ 8X8‬פיקסלים כאשר מיקום הנקודה הוא‬
‫מרכז הסביבה‪.‬‬
‫לאחר מכן‪ ,‬מבצעים חיפוש אפיפולרי לאיתור אותה הנקודה בתמונה נוספת‪.‬‬
‫התמונה הנבחרת הינה התמונה הקרובה במרחב למיקום מרכז המצלמה בתמונה‬
‫הנוכחית‪ .‬בחיפוש האפיפולרי משתמשים בשערוך מיקומי הפריימים שהתקבל‬
‫מתהליך העקיבה‪.‬‬
‫על מנת למצוא נקודה בתמונה‪ ,‬יבוצע חיפוש לאורך הקו האפיפולרי במקטע הנקבע‬
‫ע"י העומק הממוצע של עצמים בתמונה‪ .‬נתון זה יתקבל גם הוא מתהליך העקיבה‬
‫וקיים בהנחות הפרויקט‪ .‬החיפוש אינו מבוצע עד לעומק אינסופי אלה יוגבל לקטע‬
‫קצר‪.‬‬
‫בתמונה הנוספת ישנן נקודות עניין שהתקבלו מאותו תהליך איתור פינות‪ .‬נחפש‬
‫התאמה לנקודת העניין ע"י מעבר על נקודות העניין בתמונה החדשה ברדיוס‬
‫מצומצם מסביב לקו האפיפולרי ובאותה רמת פירמידה‪ .‬ההתאמה תעשה ע"י‬
‫השוואת סביבות הפיקסלים‪.‬‬
‫לאחר מציאת התאמה בין נקודות‪ ,‬יבוצע שערוך תלת ממד‪ ,Triangulation ,‬של‬
‫נקודה בעזרת הנקודות התואמות ומיקומי הפריימים הידועים‪ .‬נקודת תלת ממד‬
‫תיוצג ע"י מיקום במרחב ותוכנס למפה‪.‬‬
‫‪7‬‬
‫‪ 2.2‬מסקנות‬
‫תהליך שחזור תלת מימד מבוסס נקודות עניין מסתמך על סביבת הנקודות לצורך‬
‫מציאת התאמה בתמונות שונות‪ .‬התאמה זו מתבצעת בצורה קלה ומאפשרת‬
‫התאמה בוודאות גבוהה כאשר מצלמים במנוחה או בתנועה איטית‪.‬‬
‫בתמונה שצולמה תוך כדי תנועה מהירה יתקבל טשטוש‪ .‬טשטוש זה הינו רב ובעל‬
‫השפעה גדולה על התמונה‪ .‬עצם שצולם מתמונה חדה ועצם שצולם בתמונה‬
‫מטושטשת לא יראו אותו הדבר‪ .‬איתור פינות בתמונה מניח כי פינה היא סביבת‬
‫פיקסלים בה יש שינוי רמות אפור בכל כיוון הזזה של סביבת הפיקסלים‪.‬‬
‫הפינה הימנית בתמונה תהפוך תחת תזוזה מהירה לאובייקט הדומה יותר לשפה‪,‬‬
‫כמו בתמונה האמצעית‪ .‬במקרה כזה‪ ,‬הפינה לא תסומן כנקודת עניין ולא תתבצע‬
‫התאמה בחיפוש האפיפולרי וכתוצאה מכך לא יתבצע שחזור תלת מימד‪.‬‬
‫במקרים בהם כן תתבצע התאמה בין שתי נקודות בתמונות שונות‪ ,‬התאמה זו ככל‬
‫הנראה תהיה התאמה שגויה‪.‬‬
‫נקודות עניין אינן מתאימות למיפוי סצנה בתזוזות מהירות‪ .‬עקיבה המתבססת על‬
‫מודל פינות אמורה להתבצע תחת תנועה איטית ו"חלקה" לקבלת עקיבה‬
‫אופטימלית‪.‬‬
‫‪8‬‬
‫פרק ‪ :2‬איתור שפות‬
‫שפות הם אובייקטים חד ממדיים שאינם תלויים בסביבתם‪ .‬בפרק זה נתאר את‬
‫תהליך חילוץ השפות מתמונה והתאמתם לשפות בתמונות אחרות‪.‬‬
‫‪Data Association 2.0‬‬
‫התאמה של נקודות עניין מבוססות פינות‪ ,‬מתבצעת ע"י השוואה של סביבת‬
‫הנקודות‪ .‬בעזרת ‪ ,zero mean SSD‬חיסור פיקסלים מתאימים ליצירת פונקציית‬
‫שגיאה‪ ,‬ניתן לקבוע את טיב ההתאמה‪.‬‬
‫כאשר משתמשים באלמנטים של שפות נוצרת בעיה של שגיאות התאמה‪ .‬שפה אינה‬
‫מאופיינת ע"י סביבת פיקסלים ולכן ישנו קושי להתאים שפה אחת לאחרת‪ .‬שפות‬
‫בתמונה הינן למעשה הבדלים גבוהים ברמות אפור בתמונה‪ ,‬נגזרות מקסימליות של‬
‫בהירות‪ ,‬ולכן כל שפה דומה לאחרת‪ .‬בנוסף‪ ,‬אין אפשרות להשתמש בערך הנגזרת‬
‫בגלל הבדלי התאורה בין התמונות‪.‬‬
‫שפה בתלת ממד שהתקבלה מהתאמות שגויות תשפיע מאוחר יותר על תהליך‬
‫העקיבה‪ .‬במקרה הטוב‪ ,‬התאמה שכזו לא תמצא בפריים חדש ולא תתרום מידע‬
‫לחיפוש‪ ,‬כלומר לא יהיה ניתן לשערך על סמך התאמה זו את מיקום המצלמה‪.‬‬
‫במקרה הרע‪ ,‬שפה תלת ממדית זו תותאם שוב לשפה שגויה ותגרום לשערוך לא‬
‫נכון‪.‬‬
‫דבר נוסף המושפע מההתאמות השגויות הינן אופטימיזציות המודל התלת ממדי‪.‬‬
‫תהליך העקיבה משתמש באופטימיזציות (‪ )Bundle Adjustment‬על המפה‬
‫להקטנת השגיאות המצטברות‪ .‬אופטימיזציות אלו רגישות מאוד לדגימות שהינן‬
‫‪ Bundle Adjustment .outliers‬ממזער את השגיאות המתקבלות בין שפה‬
‫שהושלכה לתמונה לבין שפה שנמצאה בחיפוש בתמונה ע"י שינוי מיקומי הפריימים‬
‫ומיקומי האלמנטים בתלת מימד‪ .‬התאמה שגויה שחמקה אל תוך האופטימיזציה‬
‫תגרום להזזה שגויה של שאר השפות‪ ,‬הנקודות וכל מיקומי המצלמות‪.‬‬
‫‪9‬‬
‫נתאר מס' טכניקות לפתרון בעיית ההתאמה‪:‬‬
‫א‪ .‬כל שפה מתאפיינת בנוסף למיקומה בקוטביות‪ .‬נגדיר את כיוון השפה כך‬
‫ששמאל לשפה הינם פיקסלים כהים וימין לשפה הינם פיקסלים בהירים‪.‬‬
‫הגדרה זו של קוטביות משמשת לפסילת התאמת שפות בעלות קוטביות‬
‫הפוכה‪.‬‬
‫ב‪ .‬כאשר נחפש שפה בתמונה נגדיר טווח חיפוש צר סביב המיקום המשוער‬
‫ההתחלתי‪ .‬נגביל את החיפוש בחיפוש אפיפולרי ובחיפוש אנכי בתמונה‪.‬‬
‫ג‪ .‬לאחר שחזור תלת ממד של שפה מ‪ 2-‬תמונות נוסיף אותה למפה רק לאחר‬
‫בדיקה נוספת מול פריים שלישי‪ .‬חלק זה יתואר בפרק שחזור תלת ממד‪.‬‬
‫ד‪ .‬כאשר נעבד תמונה חדשה בחיפוש אחר שפות‪ ,‬נשליך לתמונה שפות קיימות‬
‫במפה וננפה מועמדים לשחזור בתמונה שקרובים לשפות קיימות אלו‪.‬‬
‫טכניקה זו תמנע חיפוש וניסיון לשחזור של שפה שכבר קיימת ובנוסף תמנע‬
‫שחזור של שפות קרובות אחת לשנייה אשר מועדות להתאמות שגויות‪.‬‬
‫‪ 2.2‬מציאת שפות בתמונה‬
‫על פי המאמר ‪ Edgelet‬בתמונה הינו חלק קצר וישר מקומית של שפה שיכולה‬
‫להיות ארוכה ועקמומית‪.‬‬
‫על מנת לאתר שפות בתמונה ראשית נבצע טשטוש לתמונה עם גרעין בגודל ‪ 3x3‬על‬
‫מנת לסנן רעשים בתמונה‪ .‬לאחר מכן‪ ,‬נפעיל את אלגוריתם ‪Canny Edge‬‬
‫‪ Detection‬למציאת תמונת שפות‪ .‬אלגוריתם זה מייצר תמונת שפות כאשר כל שפה‬
‫הינה בעלת רוחב של פיקסל בודד ומיקומה הינו הנגזרת המקסימלית האזורית‪.‬‬
‫‪11‬‬
‫על מנת לחלק את השפות ל‪ Edgelets‬ביצעו כותבי המאמר שינוי בשלב ה‪Linker-‬‬
‫של אלגוריתם ‪ Canny‬ע"מ שיחלק את השפות בנקודות עקמומיות ל‪.Edgelets -‬‬
‫משיקולי פשטות המימוש‪ ,‬החלטנו להפעיל לאחר אלגוריתם ‪ Canny‬את אלגוריתם‬
‫‪ Hough Transform‬על תמונת השפות ע"מ לבצע חלוקת שפות המתאימה להגדרת‬
‫ה‪.Edgelets-‬‬
‫הפלט של אלגוריתם זה הינו סדרה של קווים ישרים בתמונה בגודל של ‪01‬‬
‫פיקסלים‪ .‬לאחר מכן‪ ,‬נדרש לסובב את האלמנטים על מנת שיתאימו לקוטביות‬
‫שהוגדרה‪ .‬ביצענו בדיקת קוטביות ב‪ 5‬נקודות לאורך השפה וקבענו את הקוטביות‬
‫לפי הממוצע (מנגנון זה נועד לקבוע קוטביות של שפה בתמונה בצורה החלטית גם‬
‫כאשר הקוטביות משתנה לאורך השפה)‪ .‬אלמנט שפה בתמונה ייוצג ע"י ‪ 2‬נקודות‬
‫הקצה‪ .‬הגדרנו את הנקודות כך שהנקודה הראשונה הינה בכיוון הקוטביות כלומר‬
‫חיסור‬
‫יהיה וקטור בכיוון ה‪.Edgelet-‬‬
‫‪ 2.2‬חיפוש אנכי‬
‫על מנת לחלץ שפות ביצענו ממוצע לתמונה והפעלנו את אלגוריתם ‪ .Canny‬ממוצע‬
‫זה יכול להשפיע על המיקום הסופי של ה‪ Edgelets‬ולכן נדרש לבצע חיפוש אנכי‬
‫בתמונת רמות האפור על מנת למצוא את המיקום המדויק‪.‬‬
‫החיפוש מתחיל בהגדרת חמש נקודות לאורך המיקום המשוער של ה‪ .Edgelet-‬בכל‬
‫נקודה מבוצע חיפוש בכיוון אנכי ל‪ ,Edgelet-‬לאורך חמישה פיקסלים בלבד‪ ,‬אחר‬
‫הגרדיאנט המקסימלי הקרוב ביותר ובקוטביות המתאימה‪.‬‬
‫בסוף החיפוש מתקבלות נקודות בעלות גרדיאנט עם אמפילטודה מקסימלית וכיוון‬
‫מסוים‪ .‬על מנת לנפות התאמות שגויות‪ ,‬נלקחת זווית הגרדיאנט שהינה ה‪Median-‬‬
‫מתוך כל הזויות והיא תהיה רף להשוואה עבור שאר הזוויות‪ .‬נקודה עם גרדיאנט‬
‫בעל זווית ששונה מה‪ Median-‬ביותר מ‪ 5-‬מעלות מסומנת כשגויה‪.‬‬
‫במקרה בו לאחר הסינון יתקבלו פחות מ‪ 2-‬נקודות מתאימות החיפוש יסומן‬
‫ככישלון‪ .‬כאשר החיפוש מצליח אנו מבצעים ‪ Regression‬על הנקודות להתאמת קו‬
‫ישר דרכם‪ .‬במידה ומקדם העקמומיות של הקו המתקבל גדול מרף שנקבע הקו‬
‫‪11‬‬
‫ימצא מתאים והחיפוש מוגדר כהצלחה‪ .‬לאחר מציאת הקו נבצע תיקון למיקום‬
‫השפה בתמונה לפי תוצאות ה‪.Regression-‬‬
‫חיפוש אנכי זה יאפשר בהמשך לאתר שפות לאחר השלכה לתמונה חדשה וסינון‬
‫שפות קצרות מידי או עקמומיות ולבצע תיקון למיקומם המשוער בתמונה‪.‬‬
‫‪12‬‬
‫פרק ‪ : 4‬חיפוש אפיפולרי של שפות‬
‫חיפוש שפות דומה לחיפוש נקודות עניין בכמה מובנים‪ ,‬אך ישנן בעיות נוספות‬
‫שנוצרות מחיפוש שפות‪ .‬בפרק זה נסביר בקצרה את ההתאמות הדרושות לשפות‪.‬‬
‫‪ 4.0‬רקע תיאורטי‬
‫גיאומטריה אפיפולרית היא מערכת החוקים הגיאומטריים החלים על שתי תמונות‬
‫של סצנה תלת ממדית שצולמו ממקומות שונים‪ .‬קיימים יחסים בין מיקום הנקודה‬
‫במרחב לבין ההשלכה שלה על מישור התמונה שמובילים לאילוצים שונים בין‬
‫הנקודות בשתי התמונות‪ .‬יחסים אלו נכונים בהנחת מודל מצלמת חריר‪.‬‬
‫חיפוש אפיפולרי משתמש בתנאים גאומטריים אלו‪ .‬בעזרת טרנספורמציה בין‬
‫מצלמה אחת לשנייה מתקבל קו אינסופי אשר לאורכו שוכנת הנקודה אותה‬
‫מחפשים בתמונה השנייה‪.‬‬
‫לרוב‪ ,‬תנאים גאומטריים אלו מחושבים ע"י המרה למשוואות אלגבריות וכפל‬
‫מטריצות (‪ .)Essential Matrix‬בפרויקט זה נרצה להגביל את תחום החיפוש‬
‫בתמונה לתחום מצומצם על מנת להימנע מהתאמות שגויות ולכן נשתמש בחשבון‬
‫גאומטרי‪.‬‬
‫ניתן לצמצם את טווח החיפוש על הקו בהינתן עומק נקודות העניין בתמונה‪.‬‬
‫מגדירים וקטור כיוון מנורמל ̂ שהינו הווקטור המקשר בין מרכז המצלמה‬
‫לנקודה בתמונה‪ .‬נסמן את העומק הממוצע של נקודות העניין כעומק ‪ .‬בנוסף‬
‫מגדירים את סטיית התקן ‪.‬‬
‫העומק המינימלי לחיפוש יהיה לכן ̂ ‬
‫̂ ‬
‫והעומק המקסימלי‬
‫‪ .‬משוואת שתי הנקודות על הישר מקיימות ‪:‬‬
‫̂ ‬
‫̂ ‬
‫‪13‬‬
‫כעת‪ ,‬מטילים את‬
‫על מישור המצלמה הימנית‪ .‬ההטלות יתחמו את‬
‫הקו האפיפולרי ויאפשרו לחפש את הנקודה על קו קצר במקום קו אינסופי‪.‬‬
‫‪ 4.2‬חיפוש לאורך הקו האפיפולרי‬
‫בחיפוש מעשי ייתכן כי הנקודה שאותה מחפשים לא תהיה בדיוק על הקו‬
‫האפיפולרי ולכן יש צורך לחפש גם בסביבת הקו‪ .‬לצורך כך‪ ,‬בעת חיפוש אפיפולרי‬
‫של נקודות‪ ,‬הוגדר אזור ברדיוס מסוים מסביב לקו האפיפולרי שבתוכו יבוצע חיפוש‬
‫הנקודה‪ .‬כל הנקודות מתחום זה חולצו וסביבתם הושוותה לסביבת הנקודה שאנו‬
‫מחפשים‪ .‬במידה ונמצאה התאמה ניתן יהיה לשחזר את מיקום הנקודה במרחב ע"י‬
‫טריאנגולציה‪.‬‬
‫חיפוש של שפות הינו שונה מאחר ואנו לא יכולים להשתמש במידע הקיים בסביבת‬
‫ה‪ ,Edgelet-‬מטרת הפרויקט הינה להיעזר באלמנטים שאינם "נמרחים"‪ .‬על מנת‬
‫לבצע חיפוש שפות נשתמש בקו האפיפולרי המתאים למרכז ה‪.Edgelet-‬‬
‫בהינתן הקו האפיפולרי‪ ,‬יבוצע חיפוש אחר ‪ Edgelets‬מתאימים לאורך הקו בתמונת‬
‫השפות‪ ,‬שהתקבלה מאלגוריתם ‪ .Canny‬השתמשנו באלגוריתם ‪Bresenham‬‬
‫למעבר על קו ישר בתמונה‪ .‬במהלך המעבר על הקו כאשר ניתקל בפיקסל שהינו חלק‬
‫משפה (פיקסל לבן בתמונת הפלט של ‪ )Canny‬נשתמש בסביבה מרובעת בגודל ‪9‬‬
‫פיקסלים לחיפוש פיקסלים לבנים נוספים וע"י סביבה זו נמצא את כיוונו‪ .‬כעת‪,‬‬
‫נשערך את מיקום ה‪ Edgelet-‬ע"י התאמת קו באורך של ‪ 01‬פיקסלים ע"פ המרכז‬
‫‪14‬‬
‫והכיוון שהתקבל‪ .‬קו זה יועבר לחיפוש אנכי ורק אם תמצא שם שפה הוא יילקח‬
‫כמועמד להתאמה‪.‬‬
‫קווים מקבילים לקו האפיפולרי שיתקבלו בצורה זו יפסלו‪ .‬קו מקביל הינו קו‬
‫שנמצא בדיוק לאורך הווקטור המחבר בין מרכז מצלמת המקור לתמונת המקור‪,‬‬
‫ווקטור ̂ ‪ .‬במקרה זה שפה זו נראית בפריים המקורי כנקודה ולכן מקרה זה לא‬
‫יתכן‪.‬‬
‫דרגת החופש בכיוון ‪ :Z‬יתכן ש‪ Edgelet-‬שהינו חלק משפה ארוכה יותאם לאותה‬
‫השפה בתמונה החדשה אך לא לאותו החלק מהשפה‪ .‬מקרה זה הינו מקרה תקין‪.‬‬
‫אלמנט ‪ Edgelet‬תלת ממדי כפי שיוסבר בפרק הבא הינו קו אינסופי‪ .‬כאשר‬
‫מבצעים את השחזור מבצעים זאת ע"י חיתוך שני מישורים אינסופיים שעוברים‬
‫דרך ה‪ Edgelets-‬בתמונות‪ .‬בנוסף‪ ,‬בהליך העקיבה יבוצעו אופטימיזציות לתיקון‬
‫שגיאות ויילקחו בחשבון הזזות וסיבובים של ה‪ Edgelet-‬בכיוונים ‪ Y,X‬בלבד‪.‬‬
‫כלומר‪ ,‬האלטרנטיבה לחיפוש מקומי סביב הקו האפיפולרי במקרה של נקודות הינה‬
‫החופש להתאמת אלמנטים של שפה לאזור שונה מאותה השפה‪.‬‬
‫נפסול שפות בתמונת המטרה שאינן באותה קוטביות כמו השפה בתמונת המקור‪.‬‬
‫בכדי לעשות זאת‪ ,‬אנו נדרשים לשערך את כיוון הקוטביות של השפה מתמונת‬
‫המקור בתמונת המטרה‪ .‬לשם כך‪ ,‬נתאים קו אפיפולרי בתמונת המטרה לקצוות‬
‫השפה מהתמונה המקורית‪ .‬כאשר נאתר מועמד להתאמה נבדוק את הקוטביות שלו‬
‫ע"י מרחק הקצוות שלו מכל אחד מהקווים האפיפולרים הללו‪.‬‬
‫בשלב זה‪ ,‬ישנם מס' מועמדים להתאמה בתמונה החדשה ואנו נדרשים לבחור את‬
‫ההתאמה הנכונה מבניהם במידה וקיימת כזו‪ .‬לשם כך נעזר בשחזור תלת הממד של‬
‫כל אחד מהמועמדים‪.‬‬
‫‪15‬‬
‫פרק ‪ :5‬אלמנט שפה בתלת ממד‬
‫זהו החלק האחרון של בניית המודל התלת ממדי‪ .‬כאשר מבצעים שחזור של אלמנט‬
‫לתלת ממד ניתן להוסיף אותו למודל ובסופו של דבר לקבל שחזור של הסצנה ומודל‬
‫המאפשר עקיבה אחר מיקומי המצלמה‪.‬‬
‫‪ 5.0‬ייצוג ‪ Edgelet‬בתלת ממד‬
‫קו במרחב מאופיין ע"י נקודה וכיוון‪ .‬אנו נייצג ‪ Edgelet‬ע"י טרנספורמציה בין‬
‫מישור ה‪ Edgelet-‬למישור העולם‪ .‬מישור ה‪ Edgelet-‬הינו מישור שבו ראשית‬
‫הצירים היא מרכז השפה וכיוון השפה הינו כיוון ‪ .Z‬כיוון ‪ X‬במישור זה הינו כיוון‬
‫המעבר מכהה לבהיר בתמונת המקור‪.‬‬
‫על מנת לייצג קו במרחב אנו נדרשים ל‪ 6‬פרמטרים שיביעו את ההזזה מראשית‬
‫הצירים ואת הכיוון‪ .‬ייצוג על ידי טרנספורמציה משתמש ב‪ 02‬פרמטרים‪ .‬ייצוג זה‬
‫הוא ייצוג בעל יתירות אך נועד להקל בביצוע אופטימיזציות בהמשך בתהליך‬
‫העקיבה‪.‬‬
‫טרנספורמציה זו תיוצג ע"י מטריצת מקבוצת ‪ SE3‬שהינה מטריצה המכילה‬
‫מטריצת סיבוב ו‪-‬ווקטור הזזה‪.‬‬
‫‪Triangulation 5.2‬‬
‫כאשר נמצאו שני ‪ Edgelets‬מתאימים בשתי תמונות‪ ,‬ננסה לבצע בעזרתם שחזור‬
‫תלת ממד ולמצוא את השפה במרחב‪.‬‬
‫נגדיר עבור כל שפה מישור העובר דרכה בתמונה ודרך מרכז המצלמה‪ .‬שני‬
‫המישורים שהתקבלו מגדירים בצורה חד‪-‬חד ערכית את אלמנט השפה בתלת ממד‬
‫ע"י ישר החיתוך ביניהם‪.‬‬
‫מיקום מרכז ה‪ Edgelet-‬לאורך הקו יקבע ע"פ מיקום מרכז השפה בתמונת המקור‬
‫וכך גם הקוטביות של ה‪.Edgelet-‬‬
‫‪16‬‬
‫על מנת להרכיב את הטרנספורמציה‪ ,‬אנו נדרשים לחשב את כיווני הצירים במערכת‬
‫ה‪ Edgelet-‬כפי שהם נראים במערכת קואורדינטות העולם‪.‬‬
‫כיוון ‪ Z‬הינו כיוון השפה במרחב‪ ,‬הכיוון מתקבל ע"י חישוב ווקטור הכיוון בייצוג‬
‫הישר במרחב‪.‬‬
‫כיוון ‪ X‬הינו כיוון מעבר רמות האפור בתמונה מכהה לבהיר‪ .‬כיוון זה יוגדר ככיוון‬
‫הבהירות בתמונת המקור בה אותרה השפה מההתחלה‪ .‬נחשב כיוון זה במרחב‬
‫בעזרת מישור השפה המתקבל מתמונת המטרה‪ .‬כיוון ‪ X‬ימצא במישור זה ובנוסף‬
‫יהיה ניצב לכיוון ‪ Z‬ובכיוון הקוטביות הדרושה מתמונת המקור‪.‬‬
‫על מנת להגדיר את כיוון ‪ Y‬נדרש רק למצוא ווקטור ניצב לשני הכיוונים האחרים‬
‫המגדיר שלשה ימנית‪.‬‬
‫לאחר מציאת ווקטורי הכיוון נשתמש בכיוונים אלו על מנת להגדיר את מטריצת‬
‫הסיבוב המרכיבה את הטרנספורמציה‪ .‬כל ווקטור יהיה עמודה במטריצת‬
‫הטרנספורמציה וע"י כך יתקבל המעבר בין המישורים‪.‬‬
‫על מנת למצוא את מרכז השפה נעביר ישר במרחב בין מרכז המצלמה לבין מרכז ה‪-‬‬
‫‪ Edgelet‬בתמונה ונמצא את נקודת החיתוך עם המישור הנוצר מתמונת המטרה‪.‬‬
‫מרכז זה ישמש כווקטור ההזזה במטריצת הטרנספורמציה‪.‬‬
‫‪17‬‬
‫‪ 5.2‬השלכת שפה תלת ממדית לתמונה‬
‫על מנת לנפות התאמות שגויות‪ ,‬נשתמש בשערוך תלת הממד של השפות על מנת‬
‫לוודא התאמה מול פריים שלישי‪ .‬הפלט של אלגוריתם החיפוש האפיפולרי הינו מס'‬
‫התאמות אפשריות לשפה שנמצאה בתמונה‪ .‬מכל ההתאמות הללו אנו נדרשים‬
‫לבחור אחת‪ .‬התאמות אלו עברו את התנאי האפיפולרי‪ ,‬את תנאי הקוטביות ואף‬
‫אומתו כשפות באורך מתאים ולא עקמומיות (ע"י החיפוש האנכי)‪.‬‬
‫עבור כל אחת מההתאמות האפשריות נבצע שחזור תלת ממד יחד עם השפה‬
‫המקורית‪ .‬בתהליך זה נקבל מס' טרנספורמציות המייצגות שפות במרחב‪ .‬על מנת‬
‫לבחור אחת מההתאמות כהתאמה נכונה נבצע השלכה של השפה התלת ממדית‬
‫שהתקבלה לפריים נוסף ונחפש אותה שם באמצעות החיפוש האנכי‪ .‬במידה ומכל‬
‫ההתאמות האפשריות רק אחת בלבד אומתה ע"י החיפוש האנכי אזי התאמה זו‬
‫תאושר ותועבר למפה‪.‬‬
‫כל ‪ Edgelet‬תלת ממד מיוצג על ידי טרנספורמציה ולכן השלכת המרכז לתמונה‬
‫הינו‪:‬‬
‫וכיוונו בתמונה מתקבל ע"י נגזרת הקואורדינטות בתמונה בנקודת המרכז לפי‬
‫תזוזה במישור ‪ Z‬במישור ה‪ .Edgelet-‬על מנת לבצע נגזרת‪ ,‬נשליך נקודה נוספת‬
‫קרובה מאוד (מרחק שואף לאפס) במישור ה‪ Edgelet-‬לראשית הצירים ונחסר את‬
‫ההשלכה שלה‪ .‬מצאנו בספרות שמקובל להשתמש בערך ‪ 10e-6‬על מנת לקרב‬
‫נגזרת‪.‬‬
‫‪18‬‬
‫פרק ‪ :6‬סיכום‬
‫מיפוי סצנה בתלת ממד על סמך שפות מכניס מידע נוסף למודל המתקבל מקווי‬
‫המתאר‪ .‬מודל המתקבל בצורה זו נראה לבני האדם כמודל ממשי יותר המתאר‬
‫בצורה טובה יותר את הסצנה‪.‬‬
‫המודל המתקבל ישמש בהמשך לביצוע עקיבה חסינה אחר תנועת מהירות של‬
‫המצלמה וישלים את העקיבה הקיימת אחר נקודות עניין‪.‬‬
‫כאשר מבצעים עקיבה על סמך שפות יש לוודא שלא מקבלים התאמות שגויות‪ .‬יש‬
‫לבצע עקיבה על סמך שפות רק כאשר אנו נמצאים באזור שמופה למודל ורק כאשר‬
‫הסיבה לכשל בעקיבה אחר נקודות עניין הינה הימצאות טשטוש בתמונה‪ .‬כאשר‬
‫המצלמה פונה לאזור שלא מופה בעבר יתכן וימצאו התאמות‪ ,‬שגויות כמובן‪ ,‬לשפות‬
‫במודל ולכן אין להסתמך על עקיבה זו‪.‬‬
‫‪ 6.0‬תוצאות‬
‫חילוץ שפות מתמונה –‬
‫במהלך הפרויקט השתמשנו באלגוריתמים שונים (טשטוש‪Canny Edge ,‬‬
‫‪ Extraction‬ו‪ .)Hough Transform-‬נדרשנו להתאים מס' רמות ומשתנים‬
‫שבעזרתם נקבעו תוצאות האלגוריתמים‪ .‬קיבלנו את התוצאות הטובות ביותר עבור‬
‫טשטוש תמונה עם גרעין בגודל ‪ , 3x3‬קביעת סף תחתון ‪ 41‬וסף עליון ‪ 011‬עבור‬
‫‪ ,Canny‬קביעת סף ‪ 11‬עבור ‪ Hough‬ואפשור התאמת קווים בעלי פיקסל חסר‪.‬‬
‫ישנו ‪ tradeoff‬בין כמות השפות המתקבלות בדרך זו לבין טיב השפות‪ .‬החלטנו‬
‫לאפשר שפות ברורות ללא רעשים כלל‪ ,‬על מנת שלא להכניס ‪ outliers‬למודל‪.‬‬
‫‪19‬‬
‫תיקון שפות –‬
‫ניתן לראות כי פונקציית החיפוש האנכי‪ ,DirectMeasure ,‬מבצעת תיקון של שפה‬
‫שהתקבלה ע"י ‪ Canny‬ומביאה אותה למיקומה האמיתי‪.‬‬
‫חיפוש אפיפולרי –‬
‫ניתן לראות את ההתאמות הרבות המתקבלות מחיפוש אפיפולרי של שפות‪ ,‬לכן אנו‬
‫נדרשים לבצע סינונים נוספים כפי שתואר‪.‬‬
‫‪21‬‬
‫אימות התאמות לפי ‪ keyframe‬שלישי –‬
‫על מנת לאמת סופית התאמה של שפה לשפה בתמונה אחרת‪ ,‬נדרש לבצע שחזור‬
‫תלת ממד לכל המועמדים ולהקרינם ל‪ keyframe-‬שלישי‪ .‬במידה ומועמד אחד‬
‫בלבד אומת‪ ,‬השחזור מוכתר בהצלחה‪.‬‬
‫בתמונות הבאות נציג סצנה ששוחזרה למודל תלת ממד ואת המודל עצמו‪ .‬יש‬
‫להזכיר כי מודל תלת ממד נכון עד כדי טרנספורמציה‪ .‬אין מידע לגבי סקלה וכו' כל‬
‫מנת לקבוע את דרגת החופש האחרונה במודל ולכן אין בהכרח שהמודל יתאים‬
‫בדיוק למציאות‪ .‬למרות זאת‪ ,‬מודל זה מתאים לביצוע עקיבה‪.‬‬
‫‪21‬‬
‫הפינות הירוקות מימין בתמונה מסמנות את מיקום המצלמה בכל ‪ .keyframe‬ניתן‬
‫לראות בתחתית המסך את מספר השפות ומספר הנקודות הקיימות במודל‪ .‬המרחב‬
‫מאותחל כך שמיקום ה‪ keyframe-‬הראשון שהוכנס למפה הינו ראשית הצירים וכל‬
‫שאר המיקומים ממופים יחסית אליו‪.‬‬
‫‪22‬‬
‫בתמונה הבאה ניתן לראות את המודל מנקודות מבט המצלמה באותו רגע‬
‫‪ 6.2‬הצעות להמשך‬
‫מיפוי נקודות עניין ושפות למס' מפות שונות ומתן האפשרות לעבור ביניהן בתהליך‬
‫העקיבה‪ .‬סיבוכיות התוכנית תלויה בכמות הנקודות והשפות במפה וע"י חלוקה‬
‫למס מפות ניתן להתגבר על בעיית הסיבוכיות‪.‬‬
‫פרויקט ‪ – PTAMM‬עובד כרגע רק עם נקודות עניין‬
‫~‪bob/publications/index.htmlhttp://www.robots.ox.ac.uk/‬‬
‫‪23‬‬
‫ ביבליוגרפיה‬:7 ‫פרק‬
[1] Georg Klein and David Murray: Improving the Agility of Keyframe-Based
SLAM. ECCV 2008
[2] Georg Klein and David Murray: Parallel tracking and mapping for small AR
workspaces. ISMAR 2007
[3] Richard Hartley and Andrew Zisserman: Multiple view geometry in
computer vision. Second edition.
24