在Matlab中创建stereoParameters类:摄像机相对旋转参数应使用什么坐标系?

在Matlab中创建stereoParameters类:摄像机相对旋转参数应使用什么坐标系?,matlab,computer-vision,coordinate-systems,camera-calibration,matlab-cvst,Matlab,Computer Vision,Coordinate Systems,Camera Calibration,Matlab Cvst,stereoParameters采用两个外部参数:RotationOfCamera2和TranslationOfCamera2 问题是,关于RotationOfCamera2的真正含义并不是很详细,它只是说:摄像机2相对于摄像机1的旋转,指定为3×3矩阵。 在这种情况下,坐标系是什么 可以在任何坐标系中指定旋转矩阵 “摄像机1的坐标系”到底是什么意思?它的x、y、z轴是什么 换句话说,如果我计算基本矩阵,我如何从基本矩阵中得到相应的RotationOfCamera2和TranslationOfC

stereoParameters
采用两个外部参数:
RotationOfCamera2
TranslationOfCamera2

问题是,关于
RotationOfCamera2
的真正含义并不是很详细,它只是说:
摄像机2相对于摄像机1的旋转,指定为3×3矩阵。

在这种情况下,坐标系是什么

可以在任何坐标系中指定旋转矩阵

“摄像机1的坐标系”到底是什么意思?它的x、y、z轴是什么


换句话说,如果我计算基本矩阵,我如何从基本矩阵中得到相应的
RotationOfCamera2
TranslationOfCamera2
RotationOfCamera2
TranslationOfCamera2
描述从camera1坐标到camera2坐标的转换。A的原点位于相机的光学中心。其X轴和Y轴位于图像平面内,其Z轴沿光轴指向

等价地,摄像机1的外部特征是身份旋转和零平移,而摄像机2的外部特征是
RotationOfCamera2
TranslationOfCamera2

如果你有基本矩阵,你可以。要记住两件事。首先,平移是按比例进行的,因此
t
将是一个单位向量。第二,由于向量矩阵乘法约定的不同,旋转矩阵将是从
estimateCameraParameters
获得的结果的转置


出于好奇,你想完成什么?你用的是一台移动的摄像机吗?否则,为什么不使用立体相机校准器应用程序校准您的相机,并免费获得旋转和平移?

假设左相机的第一个棋盘格(或任何世界参考)旋转为R1,平移为T1,右相机的第一个棋盘格旋转为R2,平移为T2,然后你可以计算如下:

RotationOfCamera2=R2*R1';
平移FCAMERA2=T2-旋转FCAMERA2*T1


但请注意,此计算仅用于一个相同的棋盘参考。在matlab中,这两个参数由所有给定的棋盘图像对进行计算,并计算中值作为初始猜测。之后,将通过非线性优化来细化这些参数。所以在中位数计算之后,他们可能会有很大的不同。但如果两个摄像机只有一个参考点变换,则应使用上述公式。请注意,Dima告诉我们,matlab的旋转矩阵是正常使用的转置。因此,我写这篇文章是因为文献告诉我们的不是matlab的风格

谢谢迪玛的回答,我正在按照齐斯曼的方法从两张照片中重建一个场景。Stereh Calibrator应用程序的问题在于,它只适用于立体相机,需要几个图像对进行校准。但是我只有一对图像,因为相对的相机位置是不固定的。主要目标是用同一台相机从不同角度拍摄两张照片,然后从中获得密集的点云。@Dima,“其次,由于矢量矩阵乘法惯例的不同,旋转矩阵将是从估计的CameraParameters中获得的结果的转置。”你能澄清一下这句话吗?这只是惯例问题。在大多数教科书中,它是矩阵乘以列向量。在Matlab中,在图像处理工具箱和计算机视觉系统工具箱中,约定为行向量乘以矩阵。这意味着矩阵必须按照矩阵乘法的规则进行转置。