Matlab双目标定

本文最后更新于:2023年9月13日 下午

Matlab双目标定

  Matlab的工具箱中已包含有Stereo Camera Calibrator(立体相机标定)工具,具有良好的交互性,易于对双目相机的内参和外参进行标定,但是Matlab的文档中对RotationOfCamera2TranslationOfCamera2的解释让人不明所以,故在此文章中对其进行合理解释。

参考Matlab:Stereo Camera Calibrator StereoParameters

参考CSDN:matlab 双目标定及参数说明

一、RotationOfCamera2

  此参数在Matlab文档中的所解释的含义是:相机2的相对位姿,R和Translation可以将相机2坐标系变换回相机1坐标系。难道说RotationOfCamera2代表Camera1相对于Camera2的姿态?

PoseCamera2

二、TranslationOfCamera2

  鉴于上述对RotationOfCamera2的解释,并且结合它与RotationOfCamera2为同一组参数,所以也应将其理解为与RotationOfCamera2相对关系相同的平移变换,例如RotationOfCamera2为Camera1相对于Camera2的姿态,则TranslationOfCamera2也应为Camera1相对于Camera2的平移。

三、实验验证+推理解释

  作者在利用Matlab进行双目标定时,发现标定得出的参数RotationOfCamera2TranslationOfCamera2并不符合变换逻辑,所以进行此项探究,以合理解释Matlab标定所得出的参数,方便参数的理解使用。

(1)实验验证

  首先按照Matlab双目标定基本步骤,输入左右相机拍摄的图片,勾选Radial Distortion: 3 Coeffients,勾选compute: Tangential Distortion,即设置3个径向畸变系数,2个切向畸变系数,最后点击Calibrate进行标定。

  在Reprojection Errors选中误差较大的图片,右键Data Browser中的图片将其剔除,提高标定效果,最终标定完的效果如下:

标定效果

相机坐标系

两相机侧视图

  标定结果中的图形展示界面没有什么矛盾的地方,两相机的相对位姿符合实际摆放位姿,但是输出的参数结构体中的RotationOfCamera2TranslationOfCamera2却有”矛盾“的地方,两参数内容如下所示:

RT

  若依照前述理解RotationOfCamera2和TranslationOfCamera2代表的是相机1相对于相机2的位姿,也就是从相机2变换到相机1的变换矩阵,则TranslationOfCamera2中的的X轴负值可以解释:从相机2沿自身坐标系进行移动。但将RotationOfCamera2欧拉角顺序进行计算得,此时Z轴负值无法解释,也不符合相机2绕自身坐标系Z轴逆时针旋转的逻辑。

(2)推理解释

  经查阅相关资料博客知,Matlab中向量是按行表示,所以TranslationOfCamera2为行向量。故下述公式进行转置变换: 其中

代表相机1相对于相机2的旋转矩阵,即从相机2变换到相机1的旋转矩阵

代表相机1相对于相机2的旋转矩阵,即从相机2变换到相机1的平移矩阵

所以,Matlab标定结果中的RotationOfCamera2TranslationOfCamera2参数均需要进行转置使用,在对上述标定出的结果进行转置后同样计算顺序欧拉角得,符合从相机2变换到相机1的逻辑,同样平移矩阵也符合。