基於OpenCV的單目工業相機內外參標定

2021-10-06 17:18:14 字數 815 閱讀 6651

1. 工業相機內參和畸變係數標定;

2. 工業相機外參標定,用於座標系轉換;

標定板,最好採購精度較高的玻璃標定板,自己列印的a4紙質標定板坑死我了,光是卡尺測量誤差就在1mm,標定過程中還有變形;

d65光箱,有條件的話;

void cameracalibration::computeactualchessboardcornersposition(const cv::size &boardwidthheight, const float &boardsquarelength, std::vector&corners)}}

其中(0,0)點為座標系原點,為什麼z軸賦值為0,是為了優化計算,請參考《learning opencv》中文版 p421。

一般工業相機不需要魚眼這種的標定,這樣可以讓內參k3 = 0,在設定int flag |= calib_fix_k3, 輸出設定4個值,如cv::mat _distortioncoefficients(mat::zeros(4,1, cv_64f));

標定過程中要旋轉移動標定板,動作幅度不要太大,模糊或者光線明顯不均勻需要去除;

標定過程中,相同相機多次採集,重複標定的結果都會不太一樣,重投影誤差在0.2左右就可以認為標定結果可以使用了。

外參標定過程中,我最擔心是真實物理世界的object corners的座標原點和識別出來的image corners的座標原點不會總是能夠對應,這樣多次標定就不具備重複性。

參考1:

opencv相機標定 2 單目相機標定流程

常用的標定函式和流程,網上一大堆,這裡就不想詳細寫了 這裡說一下標定後常見的問題和我自己的一些做法。畸變校正後,邊緣處出現一些黑色畫素區域,其實也算是正常的,去畸變後補充的畫素 比例係數 newcameramatrix.at double 0 0 newcameramatrix.at double ...

單目相機標定

主要 執行前需要先準備標定和記錄標定列表的文字檔案,並放入程式所在目錄下 文字檔案的內容如下 calibdata.txt 裡面填寫好需要標定的名稱 for int ii 0 iiif 0 ii cornernum 24 是每幅的角點個數。此判斷語句是為了輸出 號,便於控制台 輸出所有的角點 cout...

單目相機標定

1 matlbe 單目標定步驟 常用術語 中文名 英文名 內參矩陣 intrinsic matrix 焦距 focal length 主點 principal point 徑向畸變 radial distortion 切向畸變 tangential distortion 旋轉矩陣 rotation ...