旋转由Matlab立体相机校准器给出的世界坐标系

3
使用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]
1个回答

1
你可以选择任何世界坐标系,并创建相应的相机矩阵。按照你的符号表示,相机矩阵M可以分解如下:
M = K' * [R t]

其中K'是由立体相机校准器提供的内在矩阵的转置,R是旋转矩阵,t是列向量形式的平移向量。对于您立体系统中的相机1,R是单位矩阵,t是0向量,因为相机1位于原点,指向z轴向下。如果您想使用其他世界坐标系,只需适当调整R和t即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接