2D-2D:对极约束
2D-2D:對極約束
- 1. 對極約束
- 1.1 物理意義
- 1.2 數學推導
- 2 尺度不確定性
- 3 三角測量
- 3.1 什么是三角測量?
- 3.2 三角測量的數學表達
上一篇博客記錄了3D-2D:PnP算法,本篇博客記錄一下2D-2D:對極約束算法,并簡單談一下自己理解。
1. 對極約束
首先我們要先搞清楚對極約束是用來干什么用的,然后在來搞清楚它的原理。
那么,對極約束是用來干什么用的呢?
答:在已知 2D 的像素坐標的前提下,根據兩幅圖像間多組2D像素點對來估計相機的運動。
搞清對極約束的用途之后,我們接著說它的原理。
1.1 物理意義
假設我們從兩張圖像中得到了一對配對好的特征點,那我們就來看看兩個圖像當中的匹配點有什么樣的幾何關系。
以上圖為例,我們希望求取兩幀圖像之間的運動,設第一幀到第二幀的運動為R, t。兩個相機中心分別為 O 1 , O 2 。現在,考慮第一幅圖像中有一個特征點 p1 ,它在第二幅圖像中對應著特征點 p2 。我們知道這對特征點是通過特征匹配得到的。如果匹配正確,說明它們確實是同一個空間點在兩個成像平面上的投影。
這里我們需要一些術語來描述它們之間的幾何關系。首先,連線 O1p1 和連線 O2p2 在三維空間中會相交于點 P 。這時候點O1 , O2 , P 三個點可以確定一個平面,稱為極平面(Epipolar plane)。O1O2 連線與像平面 I1 , I2 的交點分為 e1 , e2 。e1 , e2 ,稱為極點(Epipoles),O1O2 被稱為基線(Baseline)。稱極平面與兩個像平面 I1 , I2 之間的相交線 L1 , L2 為極線(Epipolar line)。
直觀上講,從第一幀的角度上看,射線 O1p1 是某個像素可能出現的空間位置——因為該射線上的所有點都會投影到同一個像素點。同時,如果不知道 P 的位置,那么當我們在第二個圖像上看時,連線 e2p2 (也就是第二個圖像中的極線)就是 P 可能出現的投影的位置,也就是射線 O1p1 在第二個相機中的投影。現在,由于我們通過特征點匹配,確定了 p2 的像素位置,所以能夠推斷 P 的空間位置,以及相機的運動。
對極約束之所以稱為約束,是因為我們在不知道P的真實空間位置的時候,通過幾何關系將P點在第二幀圖像上可能的投影位置約束在了一條直線上(即極線L2)。然后,通過特征匹配,我們確定p2與p1一樣,都是空間點P的投影。
1.2 數學推導
接下來從數學角度描述一下對極約束。
在第一幀的坐標系下,設 P 的空間位置為:
根據針孔相機模型,我們知道兩個像素點 p 1 , p 2 的像素位置為:
這里 K 為相機內參矩陣,R, t 為兩個坐標系的相機運動(如果我們愿意,也可以寫成李代數形式)。如果使用齊次坐標,我們也可以把上式寫成在乘以非零常數下成立的(up to a scale)等式:
現在,取:
這里的 x1 , x2 是兩個像素點的歸一化平面上的坐標。代入上式,得:
這兩個式子都稱為對極約束,它以形式簡潔著名。它的幾何意義是 O1 , P, O2 三者共面。
注:以上數學推導過程摘自《視覺SLAM14講》
對極約束的數學形式簡單明了,我們可以看出,只要我們能夠找出兩幅圖像之間的多組特征點關系,就可以根據對極約束求出兩幅圖像之間的運動關系。
我們把對極約束數學表達式中的中間部分記為兩個矩陣:基礎矩陣(Fun-damental Matrix)F 和本質矩陣(Essential Matrix)E,可以進一步簡化對極約束:
對極約束簡潔地給出了兩個匹配點的空間位置關系。于是,相機位姿估計問題變為以下兩步:
- 根據配對點的像素位置,求出 E 或者 F ;
- 根據 E 或者 F ,求出 R, t 。
本質矩陣和基礎矩陣的求解在此不再贅述,可以參考《視覺SLAM14講》的內容。
2 尺度不確定性
對于尺度不確定性,以前對它的理解總是不到位,經過查閱其他資料和自己的理解,我覺得現在我對它應該是理解透徹了。所以在此說一下。
《視覺SLAM14講》對尺度不確定性的描述是這樣的:
由于 E 本身具有尺度等價性,它分解得到的 t,R 也有一個尺度等價性。而 R ∈ SO(3) 自身具有約束,所以我們認為 t 具有一個尺度。換言之,在分解過程中,對 t 乘以任意非零常數,分解都是成立的。因此,我們通常把 t 進行歸一化,讓它的長度等于 1。
對 t 長度的歸一化,直接導致了單目視覺的尺度不確定性(Scale Ambiguity)。例如,程序中輸出的 t 第一維約 0.822。這個 0.822 究竟是指 0.822 米呢,還是 0.822 厘米呢,我們是沒法確定的。因為對 t 乘以任意比例常數后,對極約束依然是成立的。換言之,在單目 SLAM 中,對軌跡和地圖同時縮放任意倍數,我們得到的圖像依然是一樣的。這在第二講中就已經給讀者介紹過了。
**這段話是從數學的角度解釋尺度不確定性。**其實,也可以從直觀的看出單目視覺的尺度不確定性。
依舊看這幅圖,根據對極約束原理和p1p2的坐標,我們可以求出兩幅圖像之間的運動關系(即R,t)。但是可以從圖中看出,如果將第二幀圖像和相機中心O2沿著直線O1O2左右移動,仍然滿足對極約束。如下圖所示
這就意味著,兩個相機中心的距離O1O2是不確定的,也就是平移向量 t 的模值不確定,也就是尺度不確定。而尺度不確定的原因就在于P點空間位置不確定。
在單目視覺中,我們對兩張圖像的 t 歸一化,相當于固定了尺度。雖然我們不知道它的實際長度為多少,但我們以這時的 t 為單位 1,計算相機運動和特征點的 3D 位置。這被稱為單目 SLAM 的初始化。在初始化之后,就可以用 3D-2D 來計算相機運動了。初始化之后的軌跡和地圖的單位,就是初始化時固定的尺度。因此,單目 SLAM 有一步不可避免的初始化。初始化的兩張圖像必須有一定程度的平移,而后的軌跡和地圖都將以此步的平移為單位。
3 三角測量
3.1 什么是三角測量?
三角測量是指,通過在兩處觀察同一個點的夾角,確定該點的距離。
我們使用對極幾何約束估計了相機運動在得到運動之后,下一步我們需要用相機的運動估計特征點的空間位置。這就是三角測量需要做的事情。
考慮圖像 I1 和 I2 ,以左圖為參考,右圖的變換矩陣為 T 。相機光心為 O1 和 O2 。在 I1 中有特征點 p1 ,對應 I2 中有特征點 p2 。理論上直線 O1p1 與 O2p2 在場景中會相交于一點 P ,該點即是兩個特征點所對應的地圖點在三維場景中的位置。
其實,說的通俗一點,三角測量就是在已知兩幅圖像之間的變換關系和對應特征點的條件下構建一個三角形來確定兩個特征點所對應的空間點的位置。當然,由于尺度不確定性,計算出的空間點位置和真實位置之間也存在尺度差異。
3.2 三角測量的數學表達
按照對極幾何中的定義,設 x 1 , x 2 為兩個特征點的歸一化坐標,那么它們滿足:
現在我們已經知道了 R, t,想要求解的是兩個特征點的深度 s 1 , s 2 。當然這兩個深度是可以分開求的,比方說先來看 s 2 。如果我要算 s2 ,那么先對上式兩側左乘一個 x^1 ,得:
該式左側為零,右側可看成 s 2 的一個方程,可以根據它直接求得 s 2 。有了 s 2 ,s 1 也非常容易求出。于是,我們就得到了兩個幀下的點的深度,確定了它們的空間坐標。當然,由于噪聲的存在,我們估得的 R, t,不一定精確使式(7.24)為零,所以更常見的做法求最小二乘解而不是零解。
總結
以上是生活随笔為你收集整理的2D-2D:对极约束的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (亲测可行)ubuntu16.04+Op
- 下一篇: 3D-3D:ICP