相机标定时,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计算的旋转向量暂不清楚,但是它们计算的旋转矩阵是正确的,我们可以放心使用它们所计算的旋转矩阵与位移向量

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