相機標定 二

2021-10-25 12:36:32 字數 2694 閱讀 3932

單目相機標定參考鏈結

主要參考一下鏈結。

singlecameracalibrator 專案 此專案用於對 相機進行標定,寫入模型

定義錯誤結構體

err模型檔案結構體

主函式:

輸入引數

引數檔案,初始化檔案,資料列表檔案,寫入的模型檔案,x偏移量,y偏移量

singlecameracalibration(intrinsicsfile, inifile, datalistfile, modelfile, dx_offset, dy_offset);

從引數檔案讀取 內參矩陣, 模型

readcameraparameters(intrinsicsfile, cameram, distcoefficients, model);

內外參矩陣cameramatrix 33,cv_64fc1 ,64位浮點數,通道為1

畸變係數distcoefficients 15 cv_64fc1 ,64位浮點數,通道為1,k1 k2 p1 p2 k3

將下面的值讀取到model結構體中

內外參矩陣

1.675675467281303e+03 0 1.283523418943789e+03 0 1.684175875308985e+03 1.005861159085279e+03 0 0 1

畸變係數

-0.084261396889388 0.094000220253870 0.002534040690027 -0.004307360185249 0.029818290884515

再次將 內外參,畸變係數讀取到cameram, distcoefficients,中

從初始化檔案中讀取配置,讀取配置的id 與roi矩形區域,(x,y,長,寬)

readfile_ini(inifile, id, roi_rect);

將id賦給上述的modle變數。

讀取標定影象資料檔案

read_datalist(datalistfile, roi_rect, dx_offset, dy_offset, vecimgtotal, vecpwtotal);

讀取影象的座標 影象的x 等於讀入的點加上roi的x點,影象的y等於讀入點的y加上roi的y值。補償偏移量。

讀取對應的世界座標,世界座標的x 等於讀入的值加上偏移量offsetx,世界座標的y等於讀入的值加上偏移量offsety, 此處設定z軸為0;

開始標定:

由相機內參獲取某一平面的旋轉向量,平移向量

mat rvec, tvec;

這個函式需要查一下

bool b = solvepnpransac(vecpw, vecimg, cameram, distcoefficients, rvec, tvec);

由旋轉向量獲取旋轉矩陣(旋轉矩陣是3*3的,是世界座標與相機座標的變換)

參考:mat rotation_matrix = cv::mat(3, 3, cv_32fc1, cv::scalar::all(0));//旋轉矩陣

rodrigues(rvec, rotation_matrix);

列印旋轉矩陣與平移矩陣,並將矩陣寫入上述的結構體model中

驗證標定結果

將旋轉矩陣 和平移矩陣組合,上述讀取座標時,將世界座標的z軸設為0;

所以此處 重新構建乙個矩陣m, m包含旋轉矩陣前兩列,和平移矩陣

將 內參矩陣 與 旋轉矩陣相乘,即為上圖的m1*m2, 再求逆矩陣作為invh。

畸變校正

這個函式需要查一下

undistortpoints(vecimg, vecdst, cameram, distcoefficients, noarray(), cameram);//校正後點為同為畫素座標,校正後的座標放在vecdst,

將矯正後的點取出,放在 新矩陣p(3*3)中,前兩個值為x.y ,第三個值為補入的1,相當於上圖最左側的

計算世界座標系 即是 invh *p

統計錯誤率 差的平方和 與 平均誤差。是否需要再次標定。

這裡沒懂。 齊次座標還原

模型檔案結構體 st_model

模型檔案結構體mat型別 st_value_info

主函式讀取模型, 模型路徑,模型內參矩陣,模型係數的逆矩陣

readmodel(modelpath, m_info.mat_carmera, m_info.mat_coefficients, m_info.mat_invh);

得到世界座標系

getlaserworldpoint(mat img, st_value_info m_info, int offsetx, int offsety)

首先閾值化, 在進行33的腐蝕操作。在進行55的膨脹操作。

再求出每列的灰度重心,

此處參考:大意就是 越亮的位置,權重越大,越靠近重心。

求完之後,在將偏移量進行補償。

張正友相機標定** 參考:

深度學習 相機標定 相機標定

術語 內參矩陣 intrinsic matrix 焦距 focal length 主點 principal point 徑向畸變 radial distortion 切向畸變 tangential distortion 旋轉矩陣 rotation matrices 平移向量 translation ...

相機標定之棋盤標定

該文章主要學習如何進行相機標定,原理部分只是比較多,不多贅述。首先,相機標定主要是去求解內參k和外參 r t 以下為相機標定過程中常用的opencv自帶的幾個重要函式。1.opencv 提供的函式projectpoints2 投影三維點到影象二維點。函式引數如下 void cvprojectpoin...

相機畸變以及相機標定

相機畸變的種類 徑向畸變 產生原因 由透鏡形狀引起的畸變稱為徑向畸變,徑向畸變主要分為桶形畸變和枕型畸變。在針孔模型中,一條直線投影到畫素平面上還是一條直線。但在實際中,相機的透鏡往往使得真實環境中的一條直線在中變成了曲線。越靠近影象的邊緣現象越明顯。由於透鏡往往是中心對稱的,這使得不規則畸變通常徑...