2021年11月30日 星期二

Structure Reconstruction from 2 camera views

本文為讀了 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}\)。