1. 程式人生 > >Bouguet極線校正進一步理解

Bouguet極線校正進一步理解

在雙目視覺中,我們對相機進行標定和校正,最終目的是使得兩個相機的光軸完全平行,這樣才能夠繼續後續的深度計算,三維重建。這樣的校正在OPencv中採用的是Bouguet的極線校正的演算法。讀了一些文章,現在對bouguet極線校正做一下筆記。有一些還理解不透徹的地方,歡迎大家討論和指正。

校正前的左右相機的光心並不是平行的,兩個光心的連線就叫基線,像平面與基線的交點就是極點,像點與極點所在的直線就是極線,左右極線與基線構成的平面就是空間點對應的極平面。

校正後,極點在無窮遠處,兩個相機的光軸平行。像點在左右影象上的高度一致。這也就是極線校正的目標。校正後做後續的立體匹配時,只需在同一行上搜索左右像平面的匹配點即可,能使效率大大提高。

Bouguet的方法,是將OPencv求解出來的旋轉和平移矩陣分解成左右相機各旋轉一半的旋轉和平移矩陣R1,T1R2,T2。分解的原則是使得,左右影象重投影造成的畸變最小,左右檢視的共同面積最大。

Bouguet的方法的主要步驟如下:

1、將右影象平面相對於左影象平面的旋轉矩陣分解成兩個矩陣RlRr,叫做左右相機的合成旋轉矩陣。

             

2、將左右相機各旋轉一半,使得左右相機的光軸平行。此時左右相機的成像面達到平行,但是基線與成像平面不平行。

3、構造變換矩陣Rrect使得基線與成像平面平行。構造的方法是通過右相機相對於左相機的偏移矩陣T完成的。

1)構造e1。變換矩陣將左檢視的極點變換到無窮遠處,則使極線達到水平,可見,左右相機的投影中心之間的平移向量就是左極點方向:

                                                                            

2e2方向與主光軸方向正交,沿影象方向,與e1垂直,則知e2方向可通過e1與主光軸方向的叉積並歸一化獲得。

                                              

3)獲取了e1e2後,e3e1e2正交,e1自然就是他們兩個的叉積:

                                                          

   則可將左相機的極點轉換到無窮遠處的矩陣Rrect如下:

                                                                                    

4、通過合成旋轉矩陣與變換矩陣相乘獲得左右相機的整體旋轉矩陣。左右相機座標系乘以各自的整體旋轉矩陣就可使得左右相機的主光軸平行,且像平面與基線平行。

                                                                  

5、通過上述的兩個整體旋轉矩陣,就能夠得到理想的平行配置的雙目立體系影象。校正後根據需要對影象進行裁剪,需重新選擇一個影象中心,和影象邊緣從而讓左、右疊加部分最大。