雙目視覺 定標+矯正 (基於MATLAB)

 

準備雙目攝像頭:

 

準備標定板

標定的開始階段最需要用到的標定板,可以直接從opencv官網上能下載到: 
http://docs.opencv.org/2.4/_downloads/pattern.png

具體如下:

然後,建議固定到盒子上,方便等下拍照。

 

採集圖片

建議左右攝像頭,同時拍照,分別保存起來,可以參考  opencv 雙目攝像頭拍照

保存大約20到30張圖片,MATLAB2016的這個工具十分挑剔,如果角度不好的話,將使用不了,因此在採集圖像時,最好多的採集一些,拍的時候要拍到全部;注意事項:是測量好屏幕上每個方格的大小,這個標定的時候會用到,比如20mm。

 

 

一、 標定步驟

1.  調出標定工具箱

在命令行輸入stereoCameraCalibrator,出現如下界面:

 

2.      勾選相應的選項

然後將上面的“Skew”、“Tangential Distortion”以及“2 Coefficients”等選項選上,將“3 Coefficients”選項去掉,如下:

 

3.      載入圖像

然後點擊 Add images(添加圖像),出現如下界面:

 

Camera 1 代表左攝像頭,Camera 2 代表右攝像頭,分別選擇存放着左右圖像的文件夾,需要特別注意的是棋盤格的邊長應該根據打印的實際大小填寫 (例如20mm),單位可以選擇

然後點擊OK,程序會自動檢測採集的圖像到底有多少可以使用,可以說MATLAB2016的這個工具十分挑剔,如果角度不好的話,將使用不了,因此在採集圖像時,最好多的採集一些。(此處只是爲了說明標定步驟,所以使用的圖像較少)。

 

                                    

 

4.      標定

點擊技術分享按鈕,開始標定:

 

 

5.      校準

從下圖可以看到,平均的標定誤差以及 標定過程中誤差較大的的圖像對。

 

 

 

 

點擊選擇不想接受的誤差直方圖,可以直接在左邊的圖像對中找到對應的圖像,右鍵選擇“Remove and Recalibrate”:

 

       可以重複上述步驟,直到認爲誤差滿足標定需求爲止。

 

 

6.      導出參數

點擊技術分享選擇Export camera parameters, 並點擊“OK”。

技術分享

 

 

二、      參數讀取

標定結束後,會得到如下標定參數:

 

CameraParameters1與CameraParameters2爲左右攝像頭的內部參數,RotationOfCamera2與TranslationOfCamera2爲兩個攝像頭的旋轉、平移參數。

 

1.    兩個攝像頭的平移和旋轉參數

平移參數可直接使用;但旋轉參數需進行轉置才能使用。

 

2.   攝像機內參矩陣

雙擊框框這裏:

 

CameraParameters1與CameraParameters2中包含如下文件: 

 

IntrinsicMatrix存放的是攝像頭的內參,只與攝像機的內部結構有關,需要先轉置再使用。

例如:左相機的參數,點擊CameraParameters1

 

IntrinsicMatrix 存放的是攝像頭的內參

RadialDistortion TangentialDistortion 中存放的是畸變參數

先看一下 IntrinsicMatrix 參數,雙擊一下 IntrinsicMatrix 

 

這個和OpenCV中是轉置的關係,注意不要搞錯。 

對應 

 

即:

 420.758142829981      -0.457820850080972     344.440839504749
     0                               423.157176819330          242.870587685168    
     0                                    0                                              1  

 

 

 

3.      畸變參數

RadialDistortionTangentialDistortion 中存放的是畸變參數,

RadialDistortion 爲 徑向畸變,攝像頭由於光學透鏡的特性使得成像存在着徑向畸變,可由K1,K2,K3確定。

TangentialDistortion 切向畸變,由於裝配方面的誤差,傳感器與光學鏡頭之間並非完全平行,因此成像存在切向畸變,可由兩個參數P1,P2確定。

不過在使用時,需要注意參數的排放順序,即K1K2P1P2K3。切記不可弄錯,否則後續的立體匹配會出現很大的偏差。

例如, 左相機爲例:

 

                                    

 

RadialDistortion :0.016004928431323 , 0.041062484186359  對應 K1,K2  ; K3默認爲0

 TangentialDistortion :0.005480700176874 , 0.003979285309815   對應  P1P2

所以在opencv中使用時,K1K2P1P2K3順序 :

0.016004928431323 , 0.041062484186359 , 0.005480700176874 , 0.003979285309815  ,0

 

希望對你有幫助。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章