運動恢復結構
通過三維場景的多張圖片,恢復出該場景的三維結構信息以及每張圖片對應的攝像機參數。
已知:n個3D點\(X_j\)在m張圖像中的對應點的像素坐標\(x_{ij}\)\((i = 1, …, m, j = 1, …, n)\),且\(x_{ij} = M_iX_j\) \((i = 1,...,m,j=1,...,n)\)
其中,\(M_i\)是第i張圖片對應的攝像機的投影矩陣

求解:
- m個攝像機投影矩陣\(M_i\)\((i = 1, … , m)\) \(\longrightarrow\) 運動(motion)
- n個三維點\(X_j(j=1,...,n)\)的坐標 \(\longrightarrow\) 結構(structure)
三種典型的運動恢復結構問題
- 歐式結構恢復(攝像機內參數已知,外參數未知)
- 仿射結構恢復(攝像機為仿射相機,內、外參數均未知)
- 透視結構恢復(攝像機為透視相機,內、外參數均未知)
歐式結構恢復
已知:
-
n個三維點\(X_j(j = 1, ..., n)\)在\(m\)張圖像中的對應點的像素坐標\(x_{ij}\)
-
m張圖像對應的攝像機內參數矩陣\(K_i(i=1,...,m)\)
且 \(x_{ij} = M_iX_j = K_i[R_i\quad T_i]X_j \qquad i = 1,..., m; j = 1, ..., n\)
其中\(m\)為圖像個數,\(n\)為3D點個數,\(M_i,K_i,[R_i\quad T_i]\)為第\(i\)張照片對應的攝像機的投影矩陣、內參數及外參數矩陣
求解
- n個三維點\(X_j(j = 1,...,n)\)的坐標
- m個攝像機外參數\(R_i\)以及\(T_i\)\((i=1,...,m)\)

問題:(2視圖)
求解:
-
求解基礎矩陣F
歸一化八點法
點的對應關系:左圖和右圖進行sift特征提取,對每一個特征點進行描述,建立兩張圖的特征點的對應關系。用RANSAC的方法去估計正確的變換矩陣從而剔除錯誤點。
1、SIFT 2、匹配 3、RANSAC
如果正好8對點,則只有唯一解,多於8對點則使用最小二乘求解
-
利用F與攝像機內參數求解本質矩陣E
\(E = K_2^TFK_1\)
-
分解本質矩陣獲得R與T
\(E \longrightarrow R、T \longrightarrow M_2\)
-
三角化求解三維點\(X_j\)坐標
\(X_j^* = \mathop{argmin}\limits_{X_j}(d(x_{1j},M_1X_j) + d(x_{2j},M_2X_j))\)
本質矩陣分解
找到一個策略把E因式分解成兩部分
重要說明:

定義兩個矩陣:
重要性質:
在相差一個正負號的情況下
\([T_{\times}]\)可以寫成:\([T_{\times}] = kUZU^T\),其中\(U\)是單位正交陣,k是常數
不考慮符號、尺度,則
所以
同時,對E進行奇異值分解
與上面的進行比較,發現可以把R表示出來
注意:E的這個因式分解只保證了矩陣\(UWV^T\)或\(UW^TV^T\)是正交的。其為旋轉矩陣還需確保行列式的值為正:
這樣R就為正,即為真正的旋轉矩陣
而怎么求解T呢?
由前面的\([T_{\times}] = UZU^T\)可以得到\(T \times T = [T_{\times}]T = UZU^TT = 0\),從而\(T = \pm u_3\)(U的第三列)
這里其實是相當於\(AT = 0\),即\(T\)為\(A\)最小特征值對應的特征向量,而\(A\)本質上是SVD分解得到的\(UZU^T\),所以T就是\(U^T\)的最小特征值的特征向量,即為U的第三列

- 選擇一個點三角化,正確的一組解能保證該點在兩個攝像機的z坐標均為正
- 對多個點進行三角化,選擇在兩個攝像機系下z坐標均為正的個數最多的那組R、T。(更魯棒)
做一個總結:

歐式結構恢復出的解沒有尺度概念,需要其他先驗信息!
- 僅靠圖像去重建的三維場景與真實場景相差一個相似變換(旋轉、平移、縮放)
- 恢復的場景與真實場景之間僅存在相似變換的重構稱為度量重構
仿射結構恢復

問題:已知n個三維點\(X_j\)在m張圖像中的對應點的像素坐標\(x_{ij}\)\((i = 1, …, m, j = 1, …, n)\),且\(x_{ij} = A_iX_j+b_i\) \((i = 1,...,m,j=1,...,n)\)
其中,\(A_i,b_i\)組成了第i張圖片對應的仿射攝像機的投影矩陣$M_i = \left[\begin{matrix}A_i & b_i \ 0 & 1\end{matrix}\right] $
求解:
- n個三維點\(X_j(j = 1,...,n)的坐標\)
- m個仿射攝像機的投影矩陣\(A_i\)與\(b_i(i=1,...,m)\)

方法:
- 代數方法
- 因式分解法
- 數據中心化
- 因式分解
中心化:減去圖像點的質心
i表示第i個攝像機,\(x_{ij}\)表示第i個攝像機的第j個點
於是
如果3D點的質心 = 世界坐標系的中心,則\(\hat{x}_{ij} = A_i\hat{X}_j = A_iX_j\)
因式分解
把取均值后的\(m \times n\)個測量值寫成矩陣的形式:

\(\left[\begin{matrix}x_{11} & x_{12} & \dots & x_{1n}\end{matrix}\right]^T\)是第一個相機下的點,每個\(x_{ij}\)是一個\(2 \times 1\)的向量,為\([u\quad v]^T\),所以\(\hat{x}_{11} = [\overline{u}\quad \overline{v}]^T\)

怎么分解D呢?

通過計算D的奇異值分解

由於\(rank(D) = 3\),理想情況下這里只有三個非零的奇異值\(\sigma_1,\sigma_2,\sigma_3\)


總結:

問題:這樣分解可以嗎?\(\longrightarrow\)可以。因此,解不是唯一的

仿射結構恢復歧義:

-
分解不唯一。通過以下變換可以得到相同的D:
\[M^* = MH\\ S^* = H^{-1}S \]其中\(H\)是任意可逆的\(3\times 3\)矩陣
-
必須利用其他約束條件來解決歧義


問題:給定m個相機,n個三維點,可以有多少個等式\((2mn)\),多少個未知量\((3n+8m - 8)\)?
由於求不出真實解,與真實解總相差一個H矩陣\((3 \times 3)\),這個矩陣有8個自由度,所以真正有解的是\(3n + 8m - 8\),要把8減去
即需要約束 \(2 m n \ge 3n + 8m - 8\)
透視結構恢復
問題:已知n個三維點\(X_j(j = 1,...,n)\)在m張圖像中的對應點的像素坐標\(x_{ij}\),且\(x_{ij} = M_iX_j,(i = 1,...,m;j = 1,...,n)\)
其中,\(M_i\)為第\(i\)張圖片對應的攝像機的投影矩陣
求解:
- n個三維點\(X_j(j=1,...,n)\)的坐標
- m個攝像機投影矩陣\(M_i(i = 1,...,m)\)

以兩視圖為例:
式子乘一個\(H\)和\(H^{-1}\)得

因此\(M、X\) 和 \(M^*、X^*\)都是\(x_{ij}=M_iX_j\)的解(透視結構也有歧義性)
恢復方法:
在相差一個\(4\times 4\)的可逆變換的情況下恢復攝像機運動與場景結構
- 代數方法(通過基礎矩陣)
- 因式分解法(通過SVD)
- 捆綁調整
代數方法
-
求解基礎矩陣F
歸一化八點法
-
利用F估計攝像機矩陣
\(F \longrightarrow M_1,M_2\)
-
三角化計算三維點坐標
\(x_j^* = \mathop{argmin}\limits_{X_j}(d(x_{1j},M_1X_j) + d(x_{2j},M_2X_j))\)
利用F估計攝像機矩陣:
由於透視歧義的存在,我們總是可以找到一個可逆矩陣H,使得:

已知:\(x'Fx = 0 \qquad \qquad F = [b_{\times}]A\)
-
計算b :
-
考慮乘積\(F^T b\) \(F^{T}·b = ([b_{\times}]A)^T·b = A^T[b_{\times}]^T·b = -A^T[b_{\times}]·b = 0\) \(F^T b = 0\)
-
b為\(F^T\)矩陣最小奇異值的右奇異向量,且\(||b|| = 1\)
-
-
計算A:
-
定義:\(A' = -[b_{\times}]F\)
-
驗證\([b_{\times}]A' = F\)
\[[b_{\times}]A' = -[b_{\times}][b_{\times}]F = - (bb^T-|b|^2I)F = -bb^TF + |b|^2F = 0 + 1·F = F \] -
因此,\(A = A' = -[b_{\times}]F\)
-
攝像機矩陣
那么,這里的b是什么呢?在極幾何約束中,有\(F^Te = 0\)這條性質,所以b是一個極點!

N視圖情況:
分別對每一個圖像對\(I_k\)和\(I_h\)計算運動與結構

問題:
但是通過兩兩的方法(從第三個轉到第二個再轉到第一個)會有累計誤差!
捆綁調整(BA)
代數法與分解法的局限性:
-
因式分解法假定所有的點都是可見的,所有下述場合不可用:
- 存在遮擋
- 建立對應點關系失敗
-
代數法應用於2視圖重建
- 容易出現誤差累計
恢復結構和運動的非線性方法
最小化重投影誤差:\(E(M,X) = \frac{1}{mn} \sum\limits_{i=1}^m \sum\limits_{j=1}^nD(X_{ij}, M_iX_j)^2\)

非線性最小化問題:
牛頓法 與 L-M方法 求解
優勢:
- 同時處理大量視圖
- 處理丟失的數據
局限性:
- 大量參數的最小化問題
- 需要良好的初始條件
實際操作:
- 常用於SFM的最后一步,分解或代數方法可作為優化問題的初始解