相机标定时,opencv与MATLAB的区别与联系

3 篇文章 0 订阅
3 篇文章 0 订阅

采用同一组照片分别使用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计算的旋转向量暂不清楚,但是它们计算的旋转矩阵是正确的,我们可以放心使用它们所计算的旋转矩阵与位移向量

OPENCV与MATLAB里旋转矩阵与旋转向量的关系是:两者之间可以通过罗德里格斯(Rodrigues)变换来进行转换。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值