第一
对于空间一点x,在坐标系1的坐标为x1,在坐标系2的坐标为x2,
x2=R21*x1+t21
这里R21为坐标系1到坐标系2的旋转矩阵,t21为坐标系2原点指向坐标系1原点的平移向量,即坐标系2下取的坐标
第二
变换矩阵T左上角三行三列为R,右上角第四列前三行为平移向量t,左下角第四行前三列为0 0 0,右下角第四行第四列为1
第三
如果已知坐标系1下坐标系2的坐标,求解坐标系2下坐标系1的坐标
先求坐标系2到坐标系1的旋转矩阵R12,再求坐标系1指向坐标系2的平移向量t12,即坐标系1下坐标系2的坐标,将平移矩阵和旋转矩阵合并为转换矩阵T12,即坐标系2到坐标系1的变换矩阵
然后求T12的逆矩阵,获得坐标系1到坐标系2的变换矩阵T21,取第四列前三行为坐标系2指向坐标系1的平移向量t21,即坐标系2下坐标系1的坐标
T = [R t] T^-1 = [R^-1 -R^-1 * t]
[0 1] [0 1 ]
第四
已知id为33的arcuo码,求相机识别到该aruco码时,二维码坐标系下的相机坐标
Mat T33 = MTracker[33].getRTMatrix();//二维码坐标系到相机坐标系的变换矩阵
Mat Tinv = T33.inv(); //相机坐标系到二维码坐标系的变换矩阵
Mat pose = Tinv(Rect(3,0,1,3)).clone();//其中变换矩阵的第四列的前三行为二维码坐标系下的相机坐标,这是方法1
Mat R = T33(Rect(0,0,3,3)).clone(); //也可以先求二维码坐标系到相机坐标系的旋转矩阵R_ca
Mat t = T33(Rect(3,0,1,3)).clone(); //接着求二维码坐标系到相机坐标系的平移矩阵t_ca,即相机坐标系下二维码坐标
Mat pose2 = R.inv()*(-t); //相机在二维码坐标系下坐标假设为x_a,在相机坐标系下坐标假设为x_c,则x_c=R_ca*x_a+t_ca,可得x_a=R_ca.inv()*(-t_ca),这是方法2