天天看點

Bundle Adjustment 光束法平差詳解

首先引述來自維基百科的定義:假設我們有一個3D空間中的點,他被位于不同位置的多個錄影機看到,那麼所謂的光束法平差(Bundle Adjustment),就是能夠從這些多視角資訊中提取出3D點的坐标以及各個錄影機的相對位置和光學資訊的過程。

可能這麼說有點不夠具體,我們用比較通俗的數學公式來描述這個過程:

問題提出:假設我們有一個3D空間中的一個點 Xj ,他可以被多個位于不同角度的錄影機看到,設第 i 個錄影機看到的第j個點坐标為 xij ,由3D點像二維相機平面轉換的矩陣為 Pi . 我們現在考慮這樣的問題,給出一系列的的坐标 xij ,找到相機轉換矩陣 Pi 使得 PiXj=xij .

Bundle Adjustment 光束法平差詳解

光束法:加入我們的圖像含有噪聲,那麼 PiXj=xij 可能不能夠準确的滿足,是以我們采用極大似然估計(Maximum Likelihood )的辦法,假設測量噪聲是高斯白噪聲,我們希望估計投射矩陣 P^i 和對應的3D空間中的點 X^j ,這兩個參量可以準确的滿足 P^iX^j=x^ij .這裡的 x^ij 是我們在圖像中觀測到的點。我們希望最小化所有的通過預測得到的3D空間中的點投影在在平面中的像點,與真實的平面中的像點之間的誤差,也就是:

minP^i,X^j∑ijcijd(P^iX^j,xij)2

這裡的 cij 代表訓示參量,如果計算的像素在平面裡面, cij=1 反之, cij=0 。 d(x,y) 表示點 x,y 之間的幾何距離。這種把所有的映射誤差最小化的過程被稱為光束法平差——就類似于調整位于相機中心和一系列的3D點之間的一串光束一樣。

(這裡我們要簡單回顧下相機矩陣的概念,相機都要進行校正,其中以小孔模型為例,把以小孔中心為原點的三維坐标系中的點轉化到同樣以小孔中心為原點的二維平面的矩陣,我們稱之為内部矩陣(intrinsic matrix),這個矩陣隻與 fx,fy,cx,cy 等相機的内部參數有關,把相機坐标系轉換到世界坐标系的矩陣稱之為外部矩陣,一般涉及相機的旋轉和平移(rotation and translation matrix))。\color{red}{(注意我們一般在變量上加一個折号來表示觀測量,如\hat{x},加波浪号表示預測量,如\tilde{x}),個人認為上面公式中出現的有關折号的參量表示應該改為波浪号}。