本文為讀了 An Invitation to 3-D Vision 書中 Chapter 5.2.2 的筆記。相關的前文為:
Structure reconstruction 要解決的問題是在給定兩個 calibrated camera views 時,在算出 essential matrix、相機的位置旋轉以後,要怎麼求出每一個點的深度?
這裡要注意的是由於只有兩個相機,我們只能求出相對深度,無法求出絕對深度。舉個例子來說,假設真實世界中的物體變成原本的兩倍大,而我們又將相機移動至兩倍遠,所得到的成像會是完全一樣的,因此無法求得絕對深度值。
首先利用相機的轉換式:\[\lambda_2^j\mathbf{x}_2^j=\lambda_1^jR\mathbf{x}_1^j+\gamma T\]上式的未知數有三個:\(\lambda_1^j\)、\(\lambda_2^j\)、\(\gamma\)。\(\gamma\) 為一個相對的 scale 參數。
利用 hat operator 我們可以消掉一個未知數:\[\lambda_1^j\widehat{\mathbf{x}_2^j}R\mathbf{x}_1^j+\gamma\widehat{\mathbf{x}_2^j}T=0\]在有很多點以後我們可以寫成 \(M\mathbf{\lambda}=0\) 的形式:\[
\mathbf{\lambda}=[\lambda_1^1, \lambda_1^2, \cdots \lambda_1^n, \gamma]^T
\\
M
\doteq
\begin{bmatrix}
\widehat{\mathbf{x}_2^1}R\mathbf{x}_1^1 & 0 & 0 & \widehat{\mathbf{x_2^1}}T \\
0 & \ddots & 0 & \vdots \\
0 & 0 & \widehat{\mathbf{x}_2^n}R\mathbf{x}_1^n & \widehat{\mathbf{x_2^n}}T
\end{bmatrix}
\]只要求 \(M^TM\) 的對應最小特徵值的特徵向量就能解出 \(\mathbf{\lambda}\)。