使用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]
答案 0 :(得分:1)
您当然可以选择任何您喜欢的世界坐标系,并可以创建相应的相机矩阵。在你的表示法中,相机矩阵M可以按如下方式分解:
M = K' * [R t]
其中K'是由立体相机校准器给出的内在矩阵的转置,R是旋转矩阵,t是作为列向量的平移。对于立体声系统的摄像机1,R是单位矩阵,t是0向量,因为摄像机1位于指向z轴的原点。如果你想使用其他世界坐标系,你只需要适当调整R和t。