רז נוסק

Transcription

רז נוסק
‫התמרות אפיניות על תמונות‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪1‬‬
‫מהן טרנספורמציות גיאומטריות?‬
‫‪ z‬טרנספורמציות ליניאריות‪.‬‬
‫‪ z‬פועלות על הקואורדינאטות של הפיקסלים‪.‬‬
‫‪ z‬לא תלויות בצבעים בתמונה‪.‬‬
‫‪ z‬כוללות סיבובים‪ ,‬הזזות‪ ,‬הגדלות ועיוותים‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪2‬‬
‫מדוע מבצעים התמרות גיאומטריות?‬
‫‪ z‬רגיסטרציה בין תמונות‪.‬‬
‫‪ z‬יישור תמונות אלכסוניות‪.‬‬
‫‪ z‬תיקון עיוותים בתמונה‪.‬‬
‫‪ z‬הצפנת מפות ) סיבובים (‪.‬‬
‫‪ z‬שינויי ‪ ZOOM‬להבחנה בפרטים קטנים‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪3‬‬
‫ואם כבר גיאומטרי אז למה ליניארי?‬
‫‪ z‬קווים ישרים נשארים ישרים‬
‫‪ z‬שימור יחסי אורכים‪/‬שטחים בתמונה‬
‫‪ z‬התמונה המתקבלת עדיין "טבעית"‬
‫‪ Æ‬זה היה פעם לוח שחמט ‪Å‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪4‬‬
‫דוגמא לטרנספורמציה ליניארית‬
‫‪ z‬הגדלה פי ‪ 1.5‬ושיקוף‪:‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎤ ‪⎛ − 1.5 0 ⎞ ⎡ x ⎤ ⎡− 1.5 x‬‬
‫⎢ = ⎥ ⎢ ⎟⎟‬
‫⎜⎜‬
‫⎥‬
‫‪0‬‬
‫‪1‬‬
‫‪.‬‬
‫‪5‬‬
‫‪y‬‬
‫‪1‬‬
‫‪.‬‬
‫‪5‬‬
‫‪y‬‬
‫⎦‬
‫⎣ ⎦ ⎣⎠‬
‫⎝‬
‫‪5‬‬
‫ומה עם הזזה?‬
‫‪ z‬הזזה היא פעולה לא ליניארית כי היא משנה את מיקום‬
‫ראשית הצירים‪.‬‬
‫⎤ ‪a ⎞ ⎡0‬‬
‫‪0‬‬
‫⎤ ⎡‬
‫⎥ ⎢ = ⎥ ⎢ ⎟⎟‬
‫⎦ ‪a 22 ⎠ ⎣0 ⎦ ⎣0‬‬
‫‪12‬‬
‫‪⎛ a11‬‬
‫⎜⎜‬
‫‪⎝ a 21‬‬
‫‪ z‬הפתרון‪ :‬קואורדינאטות הומוגניות‬
‫⎤‪⎡x‬‬
‫⎥‪⎢ y‬‬
‫⎥ ⎢‬
‫⎦⎥ ‪⎢⎣ 1‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎤‪⎡x‬‬
‫⎥‪⎢ y‬‬
‫⎦ ⎣‬
‫‪6‬‬
‫ומה עם הזזה?‬
‫‪ z‬והזזה פשוט מבוטאת על ידי‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎤ ‪d x ⎞⎡ x ⎤ ⎡ x + d x‬‬
‫⎢ ⎥ ⎢⎟‬
‫⎥⎥ ‪d y ⎟ ⎢ y ⎥ = ⎢ y + d y‬‬
‫⎦⎥ ‪1 ⎟⎠ ⎢⎣ 1 ⎥⎦ ⎢⎣ 1‬‬
‫‪⎛1 0‬‬
‫⎜‬
‫‪⎜0 1‬‬
‫‪⎜0 0‬‬
‫⎝‬
‫‪7‬‬
‫טרנספורמציה אפינית‬
‫‪ z‬מקרה פרטי של התמרה גיאומטרית ליניארית‬
‫‪ z‬מיוצגת על ידי מטריצה ‪3x3‬‬
‫‪ z‬איננה מאפשרת ליצור עיוות פרספקטיבה‬
‫‪ z‬לפני ההגדרה המתמטית המדויקת נראה ממה היא מורכבת‬
‫על ידי מספר דוגמאות‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪8‬‬
‫טרנספורמציית היחידה‬
‫‪ z‬התמונה נשארת זהה‪.‬‬
‫‪ z‬כל התכונות של התמונה נשמרות‪.‬‬
‫‪ z‬יש אפס דרגות חופש‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎤ ‪⎛ 1 0 0 ⎞⎡ x ⎤ ⎡ x‬‬
‫⎥ ⎢ ⎥ ⎢⎟‬
‫⎜‬
‫⎥ ‪⎜ 0 1 0 ⎟⎢ y ⎥ = ⎢ y‬‬
‫⎥ ‪⎜ 0 0 1 ⎟⎢1 ⎥ ⎢1‬‬
‫⎦ ⎣ ⎦ ⎣⎠‬
‫⎝‬
‫‪9‬‬
‫הזזה‬
‫‪ z‬התמונה נשארת זהה חוץ ממיקום הראשית‪.‬‬
‫‪ z‬כל התכונות של נשמרות ) אורכים‪ ,‬שטחים זוויות (‪.‬‬
‫‪ z‬יש שתי דרגות חופש‪.‬‬
‫⎤ ‪d x ⎞⎡ x ⎤ ⎡ x + d x‬‬
‫⎢ ⎥ ⎢⎟‬
‫⎥⎥ ‪d y ⎟ ⎢ y ⎥ = ⎢ y + d y‬‬
‫⎦⎥ ‪1 ⎟⎠ ⎢⎣ 1 ⎥⎦ ⎢⎣ 1‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪⎛1 0‬‬
‫⎜‬
‫‪⎜0 1‬‬
‫‪⎜0 0‬‬
‫⎝‬
‫‪10‬‬
‫טרנספורמציה קשיחה‪ -‬סיבוב והזזה‬
‫‪ z‬כל התכונות של נשמרות‬
‫) אורכים‪ ,‬שטחים זוויות (‪.‬‬
‫‪ z‬יש שלוש דרגות חופש‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎞ ‪dx‬‬
‫⎟‬
‫⎟ ‪dy‬‬
‫⎠⎟ ‪1‬‬
‫) ‪− sin(α‬‬
‫) ‪cos(α‬‬
‫‪0‬‬
‫) ‪⎛ cos(α‬‬
‫⎜‬
‫) ‪⎜ sin(α‬‬
‫‪⎜ 0‬‬
‫⎝‬
‫‪11‬‬
‫איזומטריה – סיבוב‪ ,‬הזזה ושיקוף‬
‫‪ z‬כל התכונות של נשמרות‬
‫) אורכים‪ ,‬שטחים זוויות (‪.‬‬
‫‪ z‬יש שלוש ו"חצי" דרגות חופש‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎞ ‪dx‬‬
‫⎟‬
‫⎟ ‪dy‬‬
‫⎠⎟ ‪1‬‬
‫) ‪− sin(α‬‬
‫) ‪cos(α‬‬
‫‪0‬‬
‫) ‪⎛ ε cos(α‬‬
‫⎜‬
‫) ‪⎜ ε sin(α‬‬
‫⎜‬
‫‪0‬‬
‫⎝‬
‫‪12‬‬
‫טרנספורמציה דמיון‬
‫‪ z‬יחסי אורכים נשמרים‪,‬‬
‫יחסי שטחים‪ ,‬זוויות (‪.‬‬
‫‪ z‬יש ארבע דרגות חופש‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎞ ‪dx‬‬
‫⎟‬
‫⎟ ‪dy‬‬
‫⎠⎟ ‪1‬‬
‫) ‪− z sin(α‬‬
‫) ‪z cos(α‬‬
‫‪0‬‬
‫) ‪⎛ z cos(α‬‬
‫⎜‬
‫) ‪⎜ z sin(α‬‬
‫⎜‬
‫‪0‬‬
‫⎝‬
‫‪13‬‬
‫הגדלה לא איזוטרופית‬
‫‪ z‬יחסי שטחים נשמרים‪ ,‬יחסי‬
‫אורכים בכל כיוון‪ ,‬מקבילות‪.‬‬
‫⎞ ‪⎛ 1 .5 0 0‬‬
‫⎜‬
‫⎟‬
‫⎟ ‪⎜ 0 0 .5 0‬‬
‫‪⎜ 0‬‬
‫⎠⎟ ‪0 1‬‬
‫⎝‬
‫‪ z‬יש שתי דרגות חופש‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪14‬‬
‫טרנס' לא אורתגונליות )‪(Skew‬‬
‫‪ z‬יחסי שטחים‪ ,‬מקבילות‪ ,‬יחס בין‬
‫אורכים‬
‫⎞‪⎛1 1 0‬‬
‫⎟‬
‫⎜‬
‫⎟‪⎜ 0 1 0‬‬
‫⎟‪⎜0 0 1‬‬
‫⎠‬
‫⎝‬
‫‪ z‬יש ארבע דרגות חופש‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪15‬‬
‫טרנספורמציה אפינית‬
‫‪ z‬יש שש דרגות חופש‬
‫‪ z‬הגדרה‪:‬‬
‫טרנספורמציה בה השורה‬
‫התחתונה היא ‪,0 0 1‬‬
‫ו ‪ A‬היא מטריצה הפיכה‬
‫‪ z‬השורה האחרונה דואגת שלא‬
‫תהיה פרספקטיבה‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎞ ‪dx‬‬
‫⎟‬
‫⎟ ‪dy‬‬
‫⎠⎟ ‪1‬‬
‫⎞‬
‫⎟⎟‬
‫⎠‬
‫‪a 12‬‬
‫‪a 22‬‬
‫‪a12‬‬
‫‪a 22‬‬
‫‪0‬‬
‫‪⎛ a11‬‬
‫⎜‬
‫‪⎜ a 21‬‬
‫‪⎜ 0‬‬
‫⎝‬
‫‪⎛ a 11‬‬
‫⎜⎜ = ‪A‬‬
‫‪⎝ a 21‬‬
‫‪16‬‬
‫טרנספורמציה אפינית‬
‫‪ z‬קווים מקבילים נשארים‬
‫מקבילים‪ ,‬יחסי שטחים‬
‫נשמרים וגם יחסי אורכים בין‬
‫קווים מקבילים‬
‫‪ z‬מה ההגיון מאחורי ששת דרגות‬
‫החופש?‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪17‬‬
‫דוגמא – טרנס' אפינית‬
‫‪ z‬הדגמת ‪,LenaKot‬‬
‫ פרמטרים‬
‫ בניית סיבוב על ידי ‪skew‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪18‬‬
‫הרכבת טרנספורמציות‬
‫‪ z‬הגדלה כפולה‪:‬‬
‫⎤ ‪⎛ 2 0 0 ⎞ ⎛ 3 0 0 ⎞⎡ x ⎤ ⎛ 6 0 0 ⎞⎡ x‬‬
‫⎥ ⎢⎟‬
‫⎜‬
‫⎜ ⎟‬
‫⎜ ⎥ ⎢⎟‬
‫⎥ ‪⎜ 0 2 0 ⎟ • ⎜ 0 3 0 ⎟⎢ y ⎥ = ⎜ 0 6 0 ⎟⎢ y‬‬
‫⎥ ‪⎜ 0 0 1 ⎟ ⎜ 0 0 1 ⎟⎢1 ⎥ ⎜ 0 0 1 ⎟⎢1‬‬
‫⎦ ⎣⎠‬
‫⎝‬
‫⎝ ⎠‬
‫⎝ ⎦ ⎣⎠‬
‫‪ z‬הזזה כפולה‪:‬‬
‫⎤ ‪2 px + d x ⎞⎡ x‬‬
‫⎥ ⎢⎟‬
‫⎥ ‪2 p y + d y ⎟⎢ y‬‬
‫⎥ ‪⎟⎢1‬‬
‫‪1‬‬
‫⎦ ⎣⎠‬
‫‪px ⎞⎡ x ⎤ ⎛ 2 0‬‬
‫⎜ ⎥ ⎢⎟‬
‫‪p y ⎟⎢ y ⎥ = ⎜ 0 2‬‬
‫‪1 ⎟⎠ ⎢⎣ 1 ⎥⎦ ⎜⎝ 0 0‬‬
‫‪dx ⎞ ⎛1 0‬‬
‫⎜ ⎟‬
‫‪dy ⎟•⎜0 1‬‬
‫‪1 ⎟⎠ ⎜⎝ 0 0‬‬
‫‪⎛2 0‬‬
‫⎜‬
‫‪⎜0 2‬‬
‫‪⎜0 0‬‬
‫⎝‬
‫‪ z‬נשים לב שההרכבה היא שמאלית!‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪19‬‬
‫פירוק האפיניות‬
‫‪ z‬הטרנספורמציה מסתכמת‬
‫בהפעלת ‪ A‬ולאחר מכן הזזה‬
‫ב‪.d-‬‬
‫‪ z‬כאשר ‪ A‬היא‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎞ ‪dx‬‬
‫⎟‬
‫⎟ ‪dy‬‬
‫⎠⎟ ‪1‬‬
‫⎞‬
‫) ‪⎟⎟ = R (ϕ ) ⋅ R ( − θ ) ⋅ Z ⋅ R (θ‬‬
‫⎠‬
‫‪A‬‬
‫‪a12‬‬
‫‪a22‬‬
‫‪0‬‬
‫‪a 12‬‬
‫‪a 22‬‬
‫‪⎛ a11‬‬
‫⎜‬
‫‪⎜ a21‬‬
‫‪⎜ 0‬‬
‫⎝‬
‫‪⎛ a 11‬‬
‫⎜⎜‬
‫‪⎝ a 21‬‬
‫‪20‬‬
‫פירוק האפיניות‬
⎛ a11
⎜⎜
⎝ a 21
a12 ⎞ ⎛ cos(ϕ )
⎟⎟ = ⎜⎜
a 22 ⎠ ⎝ sin(ϕ )
⎛ cos( −θ )
⎜⎜
⎝ sin( −θ )
− sin(ϕ ) ⎞
⎟⎟ •
cos(ϕ ) ⎠
− sin( −θ ) ⎞⎛ Z x 0 ⎞⎛ cos(θ )
⎟⎜⎜
⎟⎟⎜⎜
cos( −θ ) ⎠⎝ 0 Z y ⎟⎠⎝ sin(θ )
‫ היא‬A ‫ כאשר‬z
− sin(θ ) ⎞
⎟⎟
cos(θ ) ⎠
:‫ דוגמא‬z
A
21
© ‫ כל הזכויות שמורות‬,‫רז נוסק‬
‫פירוק האפיניות‬
‫‪A‬‬
‫‪ z‬לפי הפירוק‬
‫) ‪R(θ‬‬
‫‪Z‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪22‬‬
‫פירוק האפיניות‬
‫‪A‬‬
‫‪ z‬לפי הפירוק‬
‫) ‪R (−θ‬‬
‫) ‪R(ϕ‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪23‬‬
‫פירוק האפיניות‬
‫‪ z‬הגדרה נוספת לאפיניות‪:‬‬
‫ביצוע מתיחה לא אחידה בכיוונים ניצבים‪ ,‬לאחר מכן סיבוב‬
‫והזזה‪.‬‬
‫‪ z‬שש דרגות החופש הן‪:‬‬
‫‪ – 1‬זווית צירי המתיחה‪.‬‬
‫‪ – 1‬סיבוב‪.‬‬
‫‪ – 2‬הזזה בצירים ‪ X‬ו‪.Y-‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪ – 2‬מתיחה לא אחידה‪.‬‬
‫‪24‬‬
‫תכונות נוספות של האפיניות‬
‫‪ z‬שטח הצורות בתמונה גדל פי‪:‬‬
‫⎞ ‪a12‬‬
‫‪⎟⎟ = Z x ⋅ Z y‬‬
‫⎠ ‪a 22‬‬
‫⎞ ‪dx‬‬
‫⎟‬
‫⎟ ‪dy‬‬
‫⎠⎟ ‪1‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪⎛ a11‬‬
‫⎜⎜ ‪det‬‬
‫‪⎝ a 21‬‬
‫‪a12‬‬
‫‪a22‬‬
‫‪0‬‬
‫‪⎛ a11‬‬
‫⎜‬
‫‪⎜ a21‬‬
‫‪⎜ 0‬‬
‫⎝‬
‫‪25‬‬
‫תכונות נוספות של האפיניות‬
‫‪ z‬אינווריאנטיות‬
‫תחת הרכבה‪:‬‬
‫⎞* * * ⎛ ⎞* * * ⎛ ⎞* * * ⎛‬
‫⎜‬
‫⎜ ⎟‬
‫⎜ ⎟‬
‫⎟‬
‫⎟* * * ⎜ = ⎟* * * ⎜ • ⎟* * * ⎜‬
‫⎟‪⎜ 0 0 1⎟ ⎜ 0 0 1⎟ ⎜ 0 0 1‬‬
‫⎝‬
‫⎝ ⎠‬
‫⎝ ⎠‬
‫⎠‬
‫⎞‪7‬‬
‫⎟‬
‫⎟ ‪21 11‬‬
‫⎠⎟ ‪0 1‬‬
‫‪25‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪1⎞ ⎛ 5‬‬
‫⎜ ⎟‬
‫‪0 ⎟ = ⎜ 15‬‬
‫‪1 ⎟⎠ ⎜⎝ 0‬‬
‫‪7‬‬
‫‪9‬‬
‫‪0‬‬
‫‪6⎞ ⎛5‬‬
‫⎜ ⎟‬
‫‪8⎟ • ⎜0‬‬
‫‪1 ⎟⎠ ⎜⎝ 0‬‬
‫‪2‬‬
‫‪0‬‬
‫‪0‬‬
‫‪⎛1‬‬
‫⎜‬
‫‪⎜3‬‬
‫‪⎜0‬‬
‫⎝‬
‫‪26‬‬
Matlab ‫מימוש ב‬
T = maketform('affine',[-0.4 -0.8 20;
0.7 0.1 10;
0
0 1]');
im = imread(‘im.jpg');
res = imtransform(im,T);
27
© ‫ כל הזכויות שמורות‬,‫רז נוסק‬
Matlab ‫פירוק האפיניות ב‬
T = [ 1 2 3; 4 5 6; 0 0 1];
dXY = T(1:2,3);
[u s v] = svd(T(1:2,1:2));
Rφ = u*v’;
Rθ = v’;
Z = s;
:‫הסבר‬
A = U ⋅ S ⋅ V T = (U ⋅ V T ) ⋅ V ⋅ S ⋅ V T
28
© ‫ כל הזכויות שמורות‬,‫רז נוסק‬
‫איך הטרנספורמציה מתבצעת בפועל‬
‫‪ z‬במיפוי רגיל נוצרת בעיה‬
‫חמורה‪.‬‬
‫? ?‬
‫?‬
‫? ?‬
‫‪T‬‬
‫?‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪29‬‬
‫איך הטרנספורמציה מתבצעת בפועל‬
‫‪ z‬רואים בברור את המחסור‬
‫במידע‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪30‬‬
‫איך הטרנספורמציה מתבצעת בפועל‬
‫‪ z‬פתרון‪:‬‬
‫ חישוב הטרנספורמציה הפוכה ‪ ) .T-1‬איך? (‬
‫ הפעלת ‪ T-1‬על תמונת היעד‪ ) .‬מדוע ‪ T-1‬אפינית? (‬
‫ קבלת פיקסל תואם בתמונה המקורית‪.‬‬
‫ אם הקואורדינאטות לא שלמות אז מתבצעת אינטרפולציה‬
‫כלשהי‪.‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪31‬‬
‫איך הטרנספורמציה מתבצעת בפועל‬
‫‪ z‬פתרון נקרא ‪.Back Projection‬‬
‫‪T-1‬‬
‫‪T-1‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪32‬‬
‫שאלות?‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪33‬‬
‫טרנספורמציה‬
‫פרוייקטיבית‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪34‬‬
‫מבוא לפרספקטיבה‬
‫‪ z‬מה זאת פרספקטיבה?‬
‫‪ z‬ב‪ 3D-‬ככל שמתקדמים לעומק‪ ,‬כך האובייקטים קטנים‬
‫‪ z‬קטנים – היטל במישור רשתית העין )‪ (X,Y‬קטן‬
‫‪ z‬עקב דימיון משולשים‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪35‬‬
‫מבוא לפרספקטיבה‬
‫עין‬
‫‪ z‬גודל אובייקט נראה‪:‬‬
‫‪θ‬‬
‫‪W‬‬
‫) ‪W ' = ∝ tan(θ‬‬
‫‪Z‬‬
‫‪ z‬נדרש לחלק בעומק‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫רוחב‬
‫עומק‬
‫‪W‬‬
‫‪Z‬‬
‫רוחב‬
‫‪36‬‬
‫מבוא לפרספקטיבה‬
‫‪ z‬גרפיקה ממוחשבת לא מציאותית חודרת לחיינו‬
‫‪ z‬גם תמונה ללא‬
‫פרספקטיבה נראת‬
‫תקינה‬
‫‪ z‬בעולם הטבעי‬
‫תמיד יש פרספקטיבה‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪37‬‬
‫מבוא לפרספקטיבה‬
‫‪ z‬בדו מימד‪ ,‬קו העומק מוטל על מישור ‪X,Y‬‬
‫‪ z‬נקודת העלמות‬
‫יחידה‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪38‬‬
‫מבוא לפרספקטיבה‬
‫‪ z‬בדו מימד‪ ,‬קו העומק מוטל על מישור ‪X,Y‬‬
‫‪ z‬התקדמות בכיוון זה – מקטינה את האובייקטים‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪39‬‬
‫מבוא לפרספקטיבה‬
‫‪ z‬ככל ש ‪ X‬גדל כך הגובה קטן‬
‫‪ z‬ככל ש‪ Y-‬גדל כך הרוחב קטן‬
‫‪ z‬הצירים מדמים את העומק‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪40‬‬
‫מבוא לפרספקטיבה‬
‫‪ z‬בטרנספורמציה פרספקטיבית נחלק בערכי ‪ X‬ו‪Y-‬‬
‫‪ z‬קואורדינטות מוכללות‬
‫‪ z‬פעולה אפינית‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫⎤‪⎡x‬‬
‫⎥‪⎢y‬‬
‫⎥ ⎢‬
‫⎦⎥ ‪⎢⎣ 1‬‬
‫⎤ ‪c ⎞ ⎡ x ⎤ ⎡ ax + by + c‬‬
‫⎢ ⎥ ⎢⎟‬
‫⎥⎥ ‪f ⎟ ⎢ y ⎥ = ⎢dx + ey + f‬‬
‫⎦⎥‬
‫⎣⎢ ⎦⎥ ‪1 ⎟⎠ ⎢⎣ 1‬‬
‫‪1‬‬
‫⎤‪⎡x‬‬
‫⎥‪⎢y‬‬
‫⎦ ⎣‬
‫‪⎛a b‬‬
‫⎜‬
‫‪⎜d e‬‬
‫‪⎜0 0‬‬
‫⎝‬
‫‪41‬‬
‫מבוא לפרספקטיבה‬
‫‪ z‬הפעלת טרנספ'‬
‫⎤'‪c ⎞ ⎡ x ⎤ ⎡ ax + by + c ⎤ ⎡ x‬‬
‫⎢ ⎥ ⎢⎟‬
‫⎥⎥' ‪f ⎟ ⎢ y ⎥ = ⎢dx + ey + f ⎥⎥ = ⎢⎢ y‬‬
‫⎦⎥ ' ‪1 ⎟⎠ ⎢⎣ 1 ⎥⎦ ⎢⎣ gx + hy + 1 ⎥⎦ ⎢⎣ z‬‬
‫‪⎛a‬‬
‫⎜‬
‫‪⎜d‬‬
‫‪⎜g‬‬
‫⎝‬
‫‪b‬‬
‫‪e‬‬
‫‪h‬‬
‫‪ z‬על מנת לקבל חזרה ‪ 1‬במימד ’‪ ,Z‬נחלק ב‪:Z’-‬‬
‫⎤ ‪ax + by + c‬‬
‫⎡‬
‫‪x‬‬
‫'‬
‫⎤ ⎡‬
‫⎥⎥ ‪⎢ y '⎥ ⇒ ⎡ x'⎤ = ⎢⎢ gx + hy + 1‬‬
‫⎥ ‪⎢ ⎥ ⎢ y '⎥ ⎢ dx + ey + f‬‬
‫⎢ ⎦ ⎣ ⎦⎥ ' ‪⎢⎣ z‬‬
‫⎦⎥ ‪⎣ gx + hy + 1‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪42‬‬
‫מבוא לפרספקטיבה‬
‫‪ z‬חזרה לקואורדינטות הומוגניות‪:‬‬
‫ ‪ – Z1‬מישור הומוגני‬
‫ ‪ – Z2‬מישור הטרנספורמציה‬
‫ ‪ – V‬וקטור התוצאה‬
‫ ’‪ – V‬וקטור מנורמל ל ‪2D‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪43‬‬
‫טרנ' פרוייקטיבית‬
‫‪ z‬פרספקטיבה בציר ‪:X‬‬
‫‪⎛ 1 0 0 ⎞⎡ x ⎤ ⎡ x ⎤ ⎡ x‬‬
‫⎤‬
‫⎢ ⎥ ⎢⎟‬
‫⎜‬
‫⎥‪gx + 1‬‬
‫⎥‬
‫⎢‬
‫‪⎜ 0 1 0 ⎟⎢ y ⎥ = ⎢ y ⎥ ⇒ ⎢ y‬‬
‫⎥‬
‫⎥‪⎜ g 0 1 ⎟ ⎢ 1 ⎥ ⎢ gx + 1⎥ ⎢ gx + 1‬‬
‫⎦‬
‫⎣ ⎦‬
‫⎣ ⎦ ⎣⎠‬
‫⎝‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪44‬‬
‫טרנ' פרוייקטיבית‬
‫‪ z‬פרספקטיבה בציר ‪:X‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪45‬‬
‫טרנ' פרוייקטיבית‬
‫‪ z‬פרספקטיבה בציר ‪:Y‬‬
‫‪⎛ 1 0 0 ⎞⎡ x ⎤ ⎡ x ⎤ ⎡ x‬‬
‫⎤‬
‫⎢ ⎥ ⎢⎟‬
‫⎜‬
‫⎥‪hy + 1‬‬
‫⎥‬
‫⎢‬
‫‪⎜ 0 1 0 ⎟⎢ y ⎥ = ⎢ y ⎥ ⇒ ⎢ y‬‬
‫⎥‬
‫⎥‪⎜ 0 h 1 ⎟ ⎢ 1 ⎥ ⎢hy + 1⎥ ⎢ hy + 1‬‬
‫⎦‬
‫⎣ ⎦‬
‫⎣ ⎦ ⎣⎠‬
‫⎝‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪46‬‬
‫טרנ' פרוייקטיבית‬
‫‪ z‬פרספקטיבה בציר ‪:Y‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪47‬‬
‫פיצוי שגיאת הקטנה‬
‫‪ z‬פרספקטיבה נאיבית יוצרת שגיאה בגודל התמונה‪:‬‬
‫⎡ ⎤ ‪0 0 ⎞⎡ x‬‬
‫‪x‬‬
‫⎤‬
‫‪⎛ 1‬‬
‫⎢ ⎥ ⎢⎟‬
‫⎜‬
‫⎥‬
‫=‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪y‬‬
‫‪y‬‬
‫⎢ ⎥ ⎢⎟‬
‫⎜‬
‫⎥‬
‫⎥‪⎜ 0.2 0.3 1 ⎟ ⎢ 1 ⎥ ⎢0.2 x + 0.3 y + 1‬‬
‫⎦‬
‫⎣ ⎦ ⎣⎠‬
‫⎝‬
‫‪ z‬גודל התמונה יקטן פי‬
‫‪0.2 x + 0.3 y + 1‬‬
‫‪ z‬אם גודל התמונה הוא ‪ 300x300‬פיקסלים התמונה תקטן פי‬
‫‪ !150‬תוצאה‪ 2x2 :‬פיקסלים‪:‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪48‬‬
‫פיצוי שגיאת הקטנה‬
‫‪ z‬פרספקטיבה נאיבית יוצרת שגיאה בגודל התמונה‪:‬‬
‫‪ z‬מתי גודל התמונה ישמר?‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪49‬‬
‫פיצוי שגיאת הקטנה‬
‫‪ z‬מתי גודל התמונה ישמר?‬
‫‪ z‬כאשר פינות האלכסון המשני נשמרות‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪50‬‬
‫פיצוי שגיאת הקטנה‬
‫‪ z‬פינות האלכסון המשני הם וקטורים עצמיים של התמרה‬
‫⎤ ‪⎡ 0‬‬
‫⎥ ‪⎢ sizeY‬‬
‫⎢‬
‫⎥‬
‫⎦⎥ ‪⎢⎣ 1‬‬
‫⎤ ‪⎡ sizeX‬‬
‫⎥ ‪⎢ 0‬‬
‫⎢‬
‫⎥‬
‫⎦⎥ ‪⎢⎣ 1‬‬
‫⎟⎞ ‪0‬‬
‫⎟‪0‬‬
‫⎟‬
‫⎟‪1‬‬
‫⎠‬
‫‪0‬‬
‫‪1 + pY‬‬
‫‪pY‬‬
‫‪sizeY‬‬
‫‪⎛ 1 + pX‬‬
‫⎜‬
‫⎜‬
‫‪0‬‬
‫‪⎜ pX‬‬
‫⎜‬
‫‪sizeX‬‬
‫⎝‬
‫ פרספקטיבה‪pX, pY :‬‬
‫ גודל תמונה‪sizeX, sizeY :‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪51‬‬
‫פיצוי שגיאת הקטנה‬
:‫ הוכחה‬z
⎛ 1 + pX
⎜
⎜
0
⎜ pX
⎜
sizeX
⎝
⎛ 1 + pX
⎜
⎜
0
⎜ pX
⎜
sizeX
⎝
52
0
1 + pY
pY
sizeY
0
1 + pY
pY
sizeY
0 ⎞⎟ ⎡ sizeX ⎤ ⎡ sizeX (1 + pX )⎤ ⎡ sizeX ⎤
⎥=⎢ 0 ⎥
0
0 ⎟ ⎢⎢ 0 ⎥⎥ = ⎢⎢
⎥ ⎢
⎥
⎟
pX + 1 ⎥⎦ ⎢⎣ 1 ⎥⎦
1 ⎟ ⎢⎣ 1 ⎥⎦ ⎢⎣
⎠
0 ⎞⎟ ⎡ 0 ⎤ ⎡
0
⎤ ⎡ 0 ⎤
0 ⎟ ⎢⎢ sizeY ⎥⎥ = ⎢⎢ sizeY (1 + pY )⎥⎥ = ⎢⎢ sizeY ⎥⎥
⎟
pY + 1 ⎥⎦ ⎢⎣ 1 ⎥⎦
1 ⎟ ⎢⎣ 1 ⎥⎦ ⎢⎣
⎠
© ‫ כל הזכויות שמורות‬,‫רז נוסק‬
‫פרספקטיבה חזקה‬
‫‪ z‬ערכי פרספקטיבה טיפוסיים הם ‪.~0.1‬‬
‫דוגמא עם ערך ‪~10‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪53‬‬
‫דוגמא – טרנס' פרספקטיבה‬
‫‪ z‬הדגמת ‪,LenaKot‬‬
‫ הדגמת ‪autoScale‬‬
‫ שליטה ב ‪pY -‬‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪54‬‬
‫טרנספורמציה כללית‬
‫‪ z‬טרנס' כללית – ‪ 8‬נעלמים‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪55‬‬
Matlab ‫מימוש ב‬
T = maketform(‘projective',[-0.4 -0.8 20;
0.7 0.1 10;
0.001 0.002 1]');
im = imread(‘im.jpg');
res = imtransform(im,T);
56
© ‫ כל הזכויות שמורות‬,‫רז נוסק‬
‫רז נוסק‪ ,‬כל הזכויות שמורות ©‬
‫‪57‬‬