對極幾何是研究兩幅圖像之間存在的幾何。它和場景結構無關,只依賴於攝像機的內外參數。研究這種幾何可以用在圖像匹配、三維重建方面。(因為參考多處來源,本文各個章節之間沒有統一約定符號)
- 基線:連接兩個攝像機光心$O(O^{'})$的直線
- 對極點:基線與像平面的交點
- 對極平面:過基線的平面
- 對極線:對極平面與圖像平面的交線
- 基本矩陣F:對應點對之間的約束$m^{'T}Fm=0$
極線約束
對於一個單一的攝像機觀測3D點$w$的情況。$w$必定位於一條穿過光心和攝像機平面中$x_{1}$的光線上。然而,從單獨的一個攝像機,我們無法獲知該點與光線間的距離。
現在我們考慮觀測同一個3D點的第二個攝像機。從第一個攝像機可得知,該點必定位於3D空間中的一條特定光線上。進而第二幅圖像中該點的投影位置$x_{2}$必定位於第二幅圖像中這條光線投影上的某個位置。三維空間中的光線在二維空間中的投影就是所謂的極線。
這種幾何關系告訴我們一些重要信息:對於第一幅圖像中的任意點,其在第二幅圖像中的對應點被限制在一條線上。這就是所謂的極線約束。而這條受約束的特定極線依賴於攝像機的內在參數和外在參數(也就是兩個攝像機間的相對平移和旋轉)。
極線約束有兩個重要的實際意義。
1)在已知攝像機的內在參數和外在參數的情況下,能夠相對容易地找到對應點:對於第一幅圖像中的某個點,只需要沿着第二幅圖像中的極線執行一維搜索,就可以得到該點在第二幅圖像中極線上對應點的位置。
2)對應點的約束是攝像機內在參數和外在參數的函數;在已知攝像機內在參數的情況下,可利用對應點的觀測模式來確定攝像機的外在參數,因而確定兩台攝像機間的幾何關系。
極點
現在考慮第一幅圖像中的點。每一個點都與三維空間中的一條光線相關聯,每一條光線都在第二幅圖像中投影而形成極線。由於所有的光線都匯聚於第一個攝像機的光心,所以極線必須匯聚於第二幅圖像平面上的一個點。這是第一個攝像機的光心在第二個攝像機中的圖像,稱為極點。
類似地,圖像2中的點引出圖像1中的極線,而這些極線匯聚於圖像1中的極點。該極點就是攝像機2的光心在攝像機1中的圖像。
極點並不一定位於觀測圖像內:極線也可能匯聚於可視范圍之外的某一點。當兩個攝像機都位於同一方向(即沒有相對旋轉)且垂直於光軸時,極線是相互平行的,因此由極線匯聚的極點就位於無窮遠處。當兩個攝像機位於同一方向且平行於光軸時,極點就位於圖像的中心且極線呈放射狀。這些例子說明極線的模式能夠提供攝像機間的相對位置和方向等信息。
本質矩陣(Essential Matrix)
對於世界坐標系中的點$M_{i}$,在攝像機1和攝像機2中的成像分別為$m_{i}$和$m'_{i}$。
$x_{i}m_{i}=K[R,t]M_{i}$
$x'_{i}m'_{i}=K'[R',t']M_{i}$
如果將世界坐標系取在第一個攝像機坐標系上,則:
$x_{i}m_{i}=K[I,0]M_{i}$ -> $x_{i}m_{i}=KM_{i}$
$x'_{i}m'_{i}=K'[R,t]M_{i}$ -> $x'_{i}m'_{i}=K'(RM_{i}+t)$
現在取:
$p_{i}=K^{-1}m_{i}$,$p'_{i}=K'^{-1}m'_{i}$
代入上式,得:
$p'_{i}=Rp_{i}+t$
兩邊同時左乘$tˆ$。ˆ相當於兩側同時與$t$做外積:
$tˆp'_{i}=tˆRp_{i}$
然后,兩側同時左乘$p'^{T}$:
$p'^{T}_{i}tˆp'_{i}=p'^{T}_{i}tˆRp_{i}$
觀察等式左側,$tˆp'_{i}$是一個與$t$和$p'_{i}$都垂直的向量。把它再和$x'$做內積時,將得到0。因此,我們就得到一個簡潔的式子:
$p'^{T}_{i}tˆRp_{i}=0$
重新代入$m,m'$,有:
$m'^{T}_{i}K'^{-T}tˆRK^{-1}m_{i}=0$
這兩個式子都稱為對極約束,它以形式簡潔著名。它的幾何意義是O,O',M三者共面。對極約束中同時包含了平移和旋轉。我們把中間部分記作兩個矩陣:基礎矩陣(Fundamental Matrix)$F$和本質矩陣(Essential Matrix)$E$,於是可以進一步簡化對極約束:
$E=tˆR,F=K'^{-T}EK^{-1},p'^{T}_{i}Ep_{i}=m'^{T}_{i}Fm_{i}=0$
對極約束簡潔地給出了兩個匹配點的空間位置關系。
基本矩陣F的估計方法
- 基於代數誤差的線性估計---8、7點算法
- 基於幾何誤差的非線性優化
- 基於RANSAC思想的自動估計算法
8點算法
一對對應點$m_{i}=[u_{i},v_{i},1]^{T},m'_{i}=[u'_{i},v'_{i},1]^T$之間滿足約束:$m'^{T}_{i}Fm_{i}=0$
$F=\left[\begin{matrix}F_{11} & F_{12} & F_{13} \\ F_{21} & F_{22} & F_{23} \\ F_{31} & F_{32} & F_{33} \end{matrix} \right]$
展開可以得到約束方程為:
$u'_{i}u_{i}F_{11}+u'_{i}v_{i}F_{12}+u'_{i}F_{13}+v'_{i}u_{i}F_{21}+v'_{i}v_{i}F_{22}+v'_{i}F_{23}+u_{i}F_{31}+v_{i}F_{32}+F_{33}=0$
對於n對對應的圖像點對$m_{i}$ <-> $m'_{i} i=1...n$
可得到n個這樣的方程
構造向量:$f=[F_{11},F_{12},F_{13},F_{21},F_{22},F_{23},F_{31},F_{32},F_{33}]^{T}$
構造矩陣:$A=\left[\begin{matrix}u'_{1}u_{1} & u'_{1}v_{1} & u'_{1} & v'_{1}u_{1} & v'_{1}v_{1} & v'_{1} & u_{1} & v_{1} & 1 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ u'_{n}u_{n} & u'_{n}v_{n} & u'_{n} & v'_{n}u_{n} & v'_{n}v_{n} & v'_{n} & u_{n} & v_{n} & 1\end{matrix}\right]$
從而:$Af=0$
當n>=8,可以線性求解f。
- 基於代數誤差的估計方法是滿足某些約束下使$||Af||$最小的算法
- 8點算法:$min||Af||$,約束條件$||f||=1$
- 步驟:1)由對應點(n>=8)集構造矩陣$A$;2)對$A$進行奇異值分解$A=UDV^{T}$,由向量$f=v_{9}$($V$的最后一列)構造矩陣F;3)對F進行SVD分解$F=Udiag(s_{1} \ s_{2} \ s_{3})V^T$得到基本矩陣的估計$\hat F=Udiag(s_{1} \ s_{2} \ 0)V^{T}$
- 8點算法估計基本矩陣$F$的結果與圖像點的坐標系有關。當圖像數據有噪聲,即對應點不精確時,由8點算法給出的基本矩陣F的解精度很低。
- 存在一種歸一化坐標系,在此坐標系下估計的基本矩陣優於其它坐標系。
- 歸一化變換:1)對圖像點做位移變換,使得圖像的原點位於圖像點集的質心;2)對圖像點做縮放變換,使得圖像點分布在以質心為圓心半徑為$\sqrt{2}$
歸一化8點算法:由對應點$m_{i}$ <-> $m'_{i}$,求F
1)對兩幅圖像分別做歸一化變換$H,H'_{i}$,得到新的對應點集;
2)有新的對應點集和8點算法估計$\hat F$;
3)基本矩陣$F=H'^{-1} \hat F H^{-1}$
參考文獻
【1】視覺SLAM十四講
【2】Computer Vision:Model,Learning,and Inference
【3】中科院自動化所機器視覺PPT