从旋转矩阵和OpenCV中的平移向量获取旋转轴

时间:2012-09-17 16:31:00

标签: opengl opencv rotation image-rotation

我有两个带有一定旋转角度的棋盘。让我们参考第一张图像找到第二张图像的旋转角度。

为此,我找到了这些对象的旋转矩阵(3x3)和平移矩阵(3x1)。

如何使用这些矩阵找到对象的旋转角度旋转轴

2 个答案:

答案 0 :(得分:9)

对于轮播表示之间的每种类型的转化,您都拥有此网站euclidean space

您将找到以下理论和代码示例:

  • 旋转矩阵到四元数:link

  • 四元数与轴角:link

  • 一般轮换和所有陈述:link

与您的问题相关您有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),如果您有参数的旋转矩阵,则计算旋转矢量,反之亦然。