我有两个带有一定旋转角度的棋盘。让我们参考第一张图像找到第二张图像的旋转角度。
为此,我找到了这些对象的旋转矩阵(3x3)和平移矩阵(3x1)。
如何使用这些矩阵找到对象的旋转角度和旋转轴?
答案 0 :(得分:9)
对于轮播表示之间的每种类型的转化,您都拥有此网站euclidean space。
您将找到以下理论和代码示例:
与您的问题相关您有Axis Angle.如果您有旋转矩阵R(3x3),您可以通过这种方式获得角度和轴(请参阅Matrix to Axis Angle ):
angle = acos(( R00 + R11 + R22 - 1)/2);
轴x,y,x:
x =(R21-R12)/ sqrt((R21-R12)^ 2 +(R02-R20)^ 2 +(R10-R01)^ 2);
y =(R02-R20)/ sqrt((R21-R12)^ 2 +(R02-R20)^ 2 +(R10-R01)^ 2);
z =(R10-R01)/ sqrt((R21-R12)^ 2 +(R02-R20)^ 2 +(R10-R01)^ 2);
答案 1 :(得分:0)
已经可以在openCV上运行了,我建议使用Rodrigues方法: cv::Rodrigues(src, dst, jacobian),如果您有参数的旋转矩阵,则计算旋转矢量,反之亦然。