雙目標定與三維計算:從理論到OpenCV實踐

查志強發表於2018-08-26

(轉載請註明出處:http://blog.csdn.net/zhazhiqiang/ 未經允許請勿用於商業用途)

 

一、雙目立體成像主要步驟    2

二、三角測量    3

2.1 主光線在無窮遠處相交    3

2.2 主光線在有限距離內相交    3

2.3 深度與視差    4

2.4 雙目立體座標系    5

2.5 實際情況的雙目    5

三、對級幾何    6

3.1 對極幾何的定義    6

3.2 極點極線極面的定義    6

3.3 對極幾何的一些結論    7

四、本徵矩陣E和基礎矩陣F    8

4.1 基本資訊    8

4.2 兩者區別    8

4.3 本徵矩陣E的表示式    9

4.4 基礎矩陣F的表示式    9

4.5 基礎矩陣F的求解    10

五、極線的計算    10

六、立體標定    10

6.1 立體標定目的    11

6.2 R和T理論到OpenCV求解    11

6.2.1 OpenCV處理函式    11

6.2.2 雙目標定與單目標定的區別    11

6.2.3 R和T的理論推導    11

6.2.4 結合單目標定和雙目標定求解    11

七、立體校正    12

7.1 立體校正目的    13

7.2 八個校正項    13

7.3 兩種校正演算法    13

7.3.1 Hartley校正演算法:非標定立體校正    13

7.3.2 Bouguet校正演算法:標定立體校正    13

7.4 校正對映    15

八、立體匹配    16

九、計算3D座標    17

十、OpenCV主要相關函式    18

 

一、雙目立體成像主要步驟

 

二、三角測量

2.1 主光線在無窮遠處相交

2.2 主光線在有限距離內相交

2.3 深度與視差

2.4 雙目立體座標系

2.5 實際情況的雙目

 

三、對級幾何

3.1 對極幾何的定義

立體成像的基本幾何學就是對極幾何。

對極幾何就是將兩個針孔模型和極點結合起來。

3.2 極點極線極面的定義

3.3 對極幾何的一些結論

 

四、本徵矩陣E和基礎矩陣F

4.1 基本資訊

本徵矩陣E包含在物理空間中兩個攝像機相關的旋轉與平移資訊;

基礎矩陣F除了包含E的資訊外還包括兩個攝像機的內引數。

4.2 兩者區別

4.3 本徵矩陣E的表示式

本徵矩陣E包含旋轉引數、平移引數。

4.4 基礎矩陣F的表示式

基礎矩陣F包含本徵矩陣E和左右相機的內參。

4.5 基礎矩陣F的求解演算法

在沒有攝像機標定的情況下,可以通過匹配點來求解基礎矩陣F,基礎矩陣F包含本徵矩陣E,

(1)7點演算法

缺點對異常點非常敏感。

(2)8點演算法

缺點對異常點非常敏感。

(3)RANSAC演算法和LmedS演算法

五、極線的計算

 

六、立體標定

6.1 立體標定目的

立體標定是計算空間上兩臺攝像機幾何關係的過程。

立體標定依賴於查詢兩臺攝像機之間的旋轉矩陣R和平移向量T。

6.2 R和T理論到OpenCV求解

6.2.1 OpenCV處理函式

R和T都是通過函式cvStereoCalibate()來計算的。

6.2.2 雙目標定與單目標定的區別

6.2.3 R和T的理論推導

(來自[文獻3])

6.2.4 結合單目標定和雙目標定求解

七、立體校正

7.1 立體校正目的

立體校正的目的主要是讓左右相機的影象完全行對準。

7.2 八個校正項

7.3 兩種校正演算法

7.3.1 Hartley校正演算法:非標定立體校正

Hartley校正演算法只使用基礎矩陣來生成非標定立體視覺;Hartley演算法可以通過單個攝像機記錄的運動推匯出立體結構,雖然單個攝像機會比Bouguet標定演算法產生更多的畸變影象。

7.3.2 Bouguet校正演算法:標定立體校正

7.4 校正對映

 

八、立體匹配

立體匹配的目的是通過匹配得到視差。

 

九、計算3D座標

通過視差,可以得出影象點對應的3D座標。

結果:

十、OpenCV1.1主要相關函式

10.1 雙目標定流程與對應主要函式

(1)查詢棋盤角點:cvFindChessboardCorners;

(2)顯示角點結果:cvDrawChessboardCorners;

(3)亞畫素角點:cvFindCornerSubPix;

(4)立體標定:cvStereoCalibrate;

(5)雙目點畸變矯正:cvUndistortPoints

(6)統計雙目標定誤差:

計算極線(需要基礎矩陣F):cvComputeCorrespondEpilines;

注意:基礎矩陣F有兩種求解方式:

i.通過立體標定cvStereoCalibrate求解;

ii.通過匹配點求解cvFindFundamentalMat;

(7)立體校正(行對準)

[A]方式一:非標定立體校正

a.求基礎矩陣F:cvFindFundamentalMat;

b.非標定立體校正(需要基礎矩陣F):cvStereoRectifyUncalibrated;

注意:其實可以有兩種使用方式:

i.未標定:cvFindFundamentalMat+cvStereoRectifyUncalibrated;

ii.標定:cvStereoCalibrate+cvStereoRectifyUncalibrated;

c.校正對映:cvInitUndistortRectifyMap+cvRemap;

[B]方式二:標定立體校正

a.標定立體校正:cvStereoRectify(注意:可獲得重投影矩陣Q);

b.校正對映:cvInitUndistortRectifyMap+cvRemap;

(8)立體匹配(輸出視差)

[A]方式一:BM演算法

結構體:CvStereoBMState

函式:

cvCreateStereoBMState;

cvFindStereoCorrespondenceBM;

cvReleaseStereoBMState;

[B]方式二:GC演算法

結構體:CvStereoGCState

函式:

cvCreateStereoGCState;

cvFindStereoCorrespondenceGC;

cvReleaseStereoGCState;

(9)根據視差d和重投影矩陣Q計算3D座標(注意:輸入項重投影矩陣Q可以從cvStereoRectify獲取)

[A]方式一:獲取序列點的3D座標

cvPerspectiveTransform;

[B]方式二:獲取整幅影象的3D座標

cvReprojectImageTo3D。

10.2 主要相關函式詳解

 

10.3 雙目標定示例程式碼

 

十一、OpenCV2.1新增功能與效能提升

11.1 2.1版增強了Stereo Vision方面的功能

(1) 新增了 SGBM 立體匹配演算法(源自Heiko Hirschmuller的《Stereo Processing by Semi-global Matching and Mutual Information

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.8897&rep=rep1&type=pdf),可以獲得比 BM 演算法物體輪廓更清晰的視差圖(但低紋理區域容易出現橫/斜紋路,在 GCstate->fullDP 選項使能時可消減這種異常紋路,但對應區域視差變為0,且執行速度會有所下降),速度比 BM 稍慢, 352*288的幀處理速度大約是 5 幀/秒;

(2) 視差效果:BM < SGBM < GC;處理速度:BM > SGBM > GC ;

(3) BM 演算法比2.0版效能有所提升,其狀態引數新增了對左右檢視感興趣區域 ROI 的支援(roi1 和 roi2,由stereoRectify函式產生);

(4) BM 演算法和 GC 演算法的核心程式碼改動不大,主要是面向多執行緒運算方面的(由 OpenMP 轉向 Intel TBB);

(5) cvFindStereoCorrespondenceBM 函式的disparity引數的資料格式新增了 CV_32F 的支援,這種格式的資料給出實際視差,而 2.0 版只支援 CV_16S,需要除以 16.0 才能得到實際的視差數值。

11.2

 

十二、雙目標定效果不好的原因分析

(1)OpenCV雙目標定的內參結果稍差於Matlab(來自[文獻3])

 

(2)提高標定結果的精度和穩定性的方法(來自[文獻3]):

  • 在抓取影象時,要儘量讓標定板佔滿整個影象畫面;

    • 標定板拍攝圖片不能太少,以20幅左右為宜,且拍攝每幅圖片時標定板所在平面與成像平面要有夾角和距離上的變化;

    • 先對左右攝像機單獨標定,再利用單獨標定結果進行雙目標定,標定結果要好於直接利用標定影象進行雙目標定。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

參考文獻

  1. [書籍]學習OpenCV:第十二章 投影與三維視覺

  2. [書籍]基於OpenCV的計算機視覺技術實現

  3. [期刊]基於OpenCV的雙目攝像機標定

http://www.doc88.com/p-7502068257943.html

相關文章