Matlab 双目标定

本文最后更新于:2026年8月29日 晚上

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

参考Matlab:Stereo Camera Calibrator StereoParameters

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

1 RotationOfCamera2

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

pPRSrcQ

2 TranslationOfCamera2

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

3 实验验证 + 推理解释

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

4 实验验证

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

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

pPRSsXj

pPRScBn

pPRSWNV

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

pPRSfhT

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

5 推理解释

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

其中

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

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

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