多视图几何总结——从本质矩阵恢复摄像机矩阵
多視圖幾何總結——等距變換、相似變換、仿射變換和射影變換
- 多視圖幾何總結——從本質矩陣恢復攝像機矩陣
- (1)本質矩陣性質
- (2)從本質矩陣恢復攝像機矩陣
多視圖幾何總結——從本質矩陣恢復攝像機矩陣
本質矩陣是歸一化坐標下基本矩陣的特殊形式,具有五個自由度,我們通過八點法或者五點法可以求出本質矩陣,那么我們如何從中恢復出我們實際想要的RRR和ttt呢?我們得從性質入手。
(1)本質矩陣性質
多視圖幾何上定義:一個3×3的矩陣是本質矩陣的充要條件是它的奇異值中有兩個相等而第三個是0,為什么呢?
首先我們知道E=[t]×R=SRE=[t]_{ \times} R=S RE=[t]×?R=SR其中S為反對稱矩陣,反對稱矩陣有什么性質呢?
結論1:如果SSS是實的反對稱矩陣,那么S=UBUTS=UBU^TS=UBUT,其中BBB為形如diag(a1Z,a2Z...amZ,0,0...0)diag(a_1Z,a_2Z...a_mZ,0,0...0)diag(a1?Z,a2?Z...am?Z,0,0...0)的分塊對角陣,其中Z=[01?10]Z=\begin{bmatrix}0 & 1 \\ -1 & 0\end{bmatrix}Z=[0?1?10?],反對稱矩陣的特征矢量都是純虛數并且奇數階的反對稱矩陣必是奇異的
那么根據這個結論我們可以將SSS矩陣寫成S=kUZU?\mathrm{S}=k \mathrm{UZU}^{\top}S=kUZU?,而Z\mathrm{Z}Z為Z=[010?100000]\mathrm{Z}=\left[ \begin{array}{ccc}{0} & {1} & {0} \\ {-1} & {0} & {0} \\ {0} & {0} & {0}\end{array}\right] Z=???0?10?100?000????而ZZZ由可以寫成Z=diag?(1,1,0)W\mathrm{Z}=\operatorname{diag}(1,1,0) \mathrm{W}Z=diag(1,1,0)W,其中W\mathrm{W}W為W=[0?10100001]\mathrm{W}=\left[ \begin{array}{ccc}{0} & {-1} & {0} \\ {1} & {0} & {0} \\ {0} & {0} & {1}\end{array}\right] W=???010??100?001????因此這個EEE矩陣可以分解為E=SR=Udiag?(1,1,0)(WU?R)\mathrm{E}=\mathrm{SR}=\mathrm{U} \operatorname{diag}(1,1,0)\left(\mathrm{WU}^{\top} \mathrm{R}\right) E=SR=Udiag(1,1,0)(WU?R)這樣就證明了EEE擁有兩個相等的奇異值
(2)從本質矩陣恢復攝像機矩陣
假定第一個攝像機矩陣是P=[I∣0]\mathrm{P}=[\mathrm{I} | 0]P=[I∣0],為了計算第二個攝像機矩陣P′\mathrm{P}^{\prime}P′,必須把EEE矩陣分解為反對成舉著和旋轉矩陣的乘積SR\mathrm{SR}SR。
還是根據上面的結論一,我們在相差一個常數因子的前提下有S=UZUT\mathrm{S}=\mathrm{U} \mathrm{ZU}^{\mathrm{T}}S=UZUT,我們假設旋轉矩陣分解為UXVT\mathrm{UXV}^{\mathrm{T}}UXVT,則有Udiag?(1,1,0)VT=E=SR=(UZUT)(UXV?)=U(ZX)VT\mathrm{U} \operatorname{diag}(1,1,0) \mathrm{V}^{\mathrm{T}}=\mathrm{E}=\mathrm{SR}=\left(\mathrm{UZU}^{\mathrm{T}}\right)\left(\mathrm{UXV}^{\top}\right)=\mathrm{U}(\mathrm{ZX}) \mathrm{V}^{\mathrm{T}} Udiag(1,1,0)VT=E=SR=(UZUT)(UXV?)=U(ZX)VT則有ZX=diag?(1,1,0)\mathrm{ZX}=\operatorname{diag}(1,1,0)ZX=diag(1,1,0),因此x=W\mathrm{x}=\mathrm{W}x=W或者X=WT\mathrm{X}=\mathrm{W}^{\mathrm{T}}X=WT
結論:如果EEE的SVD分解為Udiag?(1,1,0)V?\mathrm{U} \operatorname{diag}(1,1,0) \mathrm{V}^{\top}Udiag(1,1,0)V?,E=SR\mathrm{E}=\mathrm{SR}E=SR有兩種分解形式,分別是:S=UZU?R=UWVTor?UW?TV?\mathrm{S}=\mathrm{UZU}^{\top} \quad \mathrm{R}=\mathrm{UWV}^{\mathrm{T}} \text {or UW }^{\mathrm{T}} \mathrm{V}^{\top} S=UZU?R=UWVTor?UW?TV?
接著分析,又因為St=0\mathrm{St}=0St=0(自己和自己叉乘肯定為0嘛)以及∥t∥=1\|\mathbf{t}\|=1∥t∥=1(對兩個攝像機矩陣的基線的一種常用歸一化),因此t=U(0,0,1)T=u3\mathbf{t}=\mathrm{U}(0,0,1)^{\mathrm{T}}=\mathbf{u}_{3}t=U(0,0,1)T=u3?,即矩陣UUU的最后一列,這樣的好處是不用再去求SSS了,應為t\mathbf{t}t的符號不確定,RRR矩陣有兩種可能,因此其分解有如下四種情況:P′=[UWVT∣+u3]or?[UWVT∣?u3]or[UWTVT∣+u3]or?[UWTVT∣?u3]\mathrm{P}^{\prime}=\left[\mathrm{UWV}^{\mathrm{T}} |+\mathbf{u}_{3}\right] \text { or }\left[\mathrm{UWV}^{\mathrm{T}} |-\mathbf{u}_{3}\right] or \left[\mathrm{UW}^{\mathrm{T}} \mathrm{V}^{\mathrm{T}} |+\mathbf{u}_{3}\right] \text { or }\left[\mathrm{UW}^{\mathrm{T}} \mathrm{V}^{\mathrm{T}} |-\mathbf{u}_{3}\right] P′=[UWVT∣+u3?]?or?[UWVT∣?u3?]or[UWTVT∣+u3?]?or?[UWTVT∣?u3?]
就是下面這張圖展示的
然后用空間中的一個點作測試,驗證它是否在兩個攝像機前面就可以從兩個不同解中確定一個作為攝像機矩陣
到這里就OK啦,有問題歡迎交流~
此外,對SLAM算法感興趣的同學可以看考我的博客SLAM算法總結——經典SLAM算法框架總結
總結
以上是生活随笔為你收集整理的多视图几何总结——从本质矩阵恢复摄像机矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多视图几何总结——等距变换、相似变换、仿
- 下一篇: 概率机器人总结——(扩展)卡尔曼滤波先实