相機標定時,opencv與MATLAB的區別與聯繫

採用同一組照片分別使用OPENCV和MATLAB進行相機標定

OPENCV相機標定下載鏈接:

MATlAB相機標定步驟:APP->camera calibration->導入圖片,設置棋盤格的尺寸,在圖片導入完成後,點擊計算,計算結束後可以看到標定板上的XYZ座標系和相機的XYZ座標系

僅以我選的標定板爲例,內角點爲10*7

1、OPENCV裏,標定板的座標系,Z軸垂直表面朝外,Y軸沿長邊,X軸沿短邊

      MATLAB裏,標定板的座標系,Z軸垂直表面朝內,Y軸沿短邊,X軸沿長邊

2、在OPENCV和MATLAB裏相機的座標系是一致的,Z軸是鏡頭方向朝前,X軸爲水平向右,Y軸爲豎直向下

3、MATLAB和OPENCV的標定結果中,位移向量translation vector 基本相等,但是由於標定板的座標系選擇不同,導致旋轉向量rotation vector 不同。

4、旋轉向量(alfa,beta,y)分別表示將參考座標系即相機座標系(XC,YC,ZC)先繞XC軸旋轉alfa度(順逆時針方向有待確定),再繞YC軸旋轉beta度,最後繞ZC軸旋轉y度,可以得到標定板的座標系(XB,YB,ZB)。根據測試OPENCV和MATLAB計算出的旋轉向量與在特殊角度下推導的旋轉向量不一致,比如我推導的(實際測試時確實如此)旋轉向量是(0,-pi/4,-pi/2),而OPENCV和MATLAB的計算結果是(0.6139,-0.6147,-1.4819),這令我疑惑,但若OPENCV和MATLAB的計算結果是(0,pi/2,0)此類的值時將與推導結果一致。

我們知道通過XYZ旋轉向量求解Rxyz旋轉矩陣的公式是,可參考機器人學導論第二章

將OPENCV和MATLAB的旋轉向量代入此公式,所得結果與OPENCV和MATLAB計算的旋轉矩陣不符,而將自己推導的旋轉向量代入此公式,所得結果與OPENCV和MATLAB計算的旋轉矩陣一致。所以雖然OPENCV和MATLAB計算的旋轉向量暫不清楚,但是它們計算的旋轉矩陣是正確的,我們可以放心使用它們所計算的旋轉矩陣與位移向量

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