#視覺slam與三維重建#
1.虛圓點及其對偶
1.1 虛圓點
虛圓點的幾何來源:圓與l∞的交點
二次曲線為圓時有a=c且b=0,則
該二次曲線交l∞於理想點,因此x3=0,因此有:
方程的兩個解即為兩個虛圓點。在相似變換下,l∞上有兩個不動點,它們是虛圓點(也稱絕對點)I,J,其標準坐標(可由方程(1)解出)是
這一對虛圓點是復共軛理想點,它們在保向相似變換下不變:
類似地,可以給出J的證明,一個反射變換使I和J交換,逆命題也成立,即如果虛圓點在一個線性變換下不動,那麼該線性變換必是相似變換。
結論1:在射影變換H下,虛圓點I和J為不動點的充要條件是H是相似變換。
1.2 與虛圓點對偶的二次曲線
曲線表示形式:
C*∞與虛圓點對偶,是由這兩個虛圓點構成的退化二次曲線(秩為2),在歐氏坐標系下寫為:
類似於虛圓點的不動性質,二次曲線C*∞在相似變換下也不變,因為C*∞是對偶二次曲線,他的變換遵循結論(C*'=HC*HT),可以驗證在點相似變換x'=Hs*x的下:
其逆命題也正確。
結論2:對偶二次曲線C*∞在射影變換H下不變的充要條件是H是相似變換。
在任何射影框架下,C*∞所具有的一些性質:
(1)有4個自由度,因為其是3x3非齊次對稱矩陣,3x3對稱5個自由度,非齊次(detC*∞=0)又增加了一個約束,也就是少了一個自由度。
(2)l∞是C*∞的零矢量
2.射影平面上的夾角和長度比
2.1 夾角
在歐氏幾何中,兩直線的夾角由它們法線的點成來計算,直線l=(l1,l2,l3)T和m=(m1,m2,m3)T的法線分別平行於(l1,l2)T和(m1,m2)T,其夾角為:
平面經仿射和射影變換後,公式(5)不能被使用,問題出在l和m的頭兩個分量在射影變換下沒有良定的變換性質(它們不是張量),但類似於公式(5),在射影變換下不變的公式為
通俗的說,歐氏空間中的平面經過仿射或射影變換後直線l和m影像為l'和m',將l'和m'代入公式(5),求出的θ角不等於原來歐式空間的角度,而代入公式(6)則相等。
結論3:一但二次曲面C*∞在射影平面上被辨認,那麼歐式角可以用公式(6)來測量。
結論3的推論:
結論4:如果射影平面上l'TC*∞m' = 0,則直線l和m正交。
2.2 長度比
一旦C*∞被辨認,長度比同樣可以測量,考察圖1中頂點為a,b,c的三角形,由正弦定理,長度比d(b,c):d(a,b) = sinα:sinβ,由點與線的關係可以求得l'=a'xb',m'=c'xa'和n'=b'xc',得到了l',m'和n'角度α,β就可以由公式(6)求出了。
3.由圖像恢復相似度量性質
3.1 基本概念
對偶二次曲線C*∞幾乎包含了實現度量矯正所需的全部信息,它能確定射影變換中的仿射和射影成分,而只留下相似變換的失真,證明過程如下:
如果點變換是x=Hx',其中x'是場景中平面上的點,x'是x經過射影變換後的點。H的分解鏈如下:
按照C*'=HC*HT變換C*∞得:
顯然射影成分v和仿射成分K可以直接由C*∞的像C*∞'確定(先解K再解v),但相似成分(公式7中的s)不能確定。
結論5:在射影平面上,一旦C*∞被辨認,那麼射影失真可以矯正到相差一個相似變換。
實際上根據公式8中的第二行,可以先將C*∞'的SVD寫為:
SVD分解後求解得到的U就是相差一個相似變換的矯正映射,即HpHa=U
3.2 恢復相似的度量矯正方法
(1)分層法
這種方法的思路是先對影像進行仿射矯正(過程見),然後在仿射矯正後的影像上進行相似矯正。仿射矯正後我們還需要兩個約束來確定虛圓點進而進行相似矯正,這兩個約束可以是:
a.世界平面的兩個直角的影像
b.一個圓的影像(影像為橢圓,根據其與l∞的交點來確定虛圓點)
c.兩個已知線段的長度比
下面對的第一種情況(a)進行詳述:
假設已經仿射矯正的圖像中的直線l'和m'與世界平面上的一對垂直線l和m對應,根據結論4(l'TC*∞m' = 0)和公式8(其中v=0,因為已經進行了仿射矯正)得:
它是關於2x2矩陣S=KKT的線性約束,矩陣S是對稱矩陣並有三個獨立元素,去除無關緊要的全局尺度因子有2個自由度,因此公式10可以約簡為(l1',l2')S(m1',m2')=0,並可以重寫為:
(l1'm1',l1'm2',l2'm2')s=0,
其中s=(s11,s12,s22)是S的三維矢量形式,兩個這樣的正交直線對就能提供兩個約束,並可以聯合起來給出以s為零矢量的2x3矩陣,這樣在相差一個尺度的情況下獲得S,並進一步獲得K(利用Cholesky分解法)圖2給出一個例子
(2)直接求解法
不經過中間的仿射矯正,直接在原始影像上進行矯正,方法:通過5個世界平面的正交對求解,假定直線l和m是世界平面上的正交影像,其提供關於C*∞元素的一個約束,即:
其中c=(a,b,c,d,e,f)T是C*∞的二次曲線矩陣的6維矢量形式,五個這樣的約束連起來,便形成一個5x6矩陣,使得c和C*∞作為其零矢量而求得,一個例子見圖3。