旋转Matlab Stereo Camera Calibrator给定的世界坐标系
Rotate the world coordinate system given by Matlab Stereo Camera Calibrator
使用 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 立体相机校准器时的默认坐标系是让 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。