《計算機視覺算法:基于OpenCV的計算機應用開發》(基于opencv的計算機視覺技術實現)
1000
2022-05-29
準備雙目攝像頭:
準備標定板
標定的開始階段最需要用到的標定板,可以直接從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.????? 畸變參數
RadialDistortion 和TangentialDistortion 中存放的是畸變參數,
RadialDistortion 為 徑向畸變,攝像頭由于光學透鏡的特性使得成像存在著徑向畸變,可由K1,K2,K3確定。
TangentialDistortion 為 切向畸變,由于裝配方面的誤差,傳感器與光學鏡頭之間并非完全平行,因此成像存在切向畸變,可由兩個參數P1,P2確定。
不過在使用時,需要注意參數的排放順序,即K1,K2,P1,P2,K3。切記不可弄錯,否則后續的立體匹配會出現很大的偏差。
例如, 左相機為例:
RadialDistortion :0.016004928431323 , 0.041062484186359? 對應 K1,K2? ; K3默認為0
TangentialDistortion :0.005480700176874 , 0.003979285309815 ? 對應 ?P1,P2
所以在opencv中使用時,K1,K2,P1,P2,K3順序 :
0.016004928431323 , 0.041062484186359 ,?0.005480700176874 , 0.003979285309815? ,0
希望對你有幫助。
MATLAB 機器視覺
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。