使用Matlab立体摄像头校准器时,默认坐标系是使Z远离摄像头(请参见本页底部图像http://www.mathworks.com/help/vision/gs/coordinate-systems.html)

我想旋转我的坐标系,以便它仍然是惯用右手的,但是在校准目标处z = 0且+ z指向相机。我可以构造一个旋转矩阵R,它将绕x轴将任何坐标旋转180度:

RotMatrix= [1    0    0;
            0   -1    0;     % 0  cos(pi)  -sin(pi)
            0    0   -1];    % 0  sin(pi)  cos(pi)

我可以看到它如何旋转任何世界点的坐标,例如
P_new_coordinates= R*[Px; Py; Pz];

但是我不确定在从像素坐标到世界坐标的转换中如何解释坐标系的这种旋转,反之亦然。有什么方法可以将其直接合并到我的相机矩阵中吗?我正在使用3x4相机矩阵约定:
[su; sv; s]= M*[X; Y; Z; 1]

最佳答案

当然,您可以选择任何喜欢的世界坐标系,并且可以创建相应的相机矩阵。用您的表示法,可以将摄像机矩阵M分解为以下形式:

M = K' * [R t]

其中,K'是立体声相机校准器给出的本征矩阵的转置,R是旋转矩阵,t是作为列向量的平移。对于您的立体声系统的摄像机1,R是单位矩阵,t是0向量,因为摄像机1位于指向z轴的原点。如果要使用其他世界坐标系,则只需要适当地调整R和t。

关于matlab - 旋转Matlab立体相机校准器提供的世界坐标系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30386329/

10-17 00:38