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

Posted

技术标签:

【中文标题】从 OpenCV 中的旋转矩阵和平移向量中获取旋转轴【英文标题】:Obtain Rotation Axis from Rotation Matrix and translation vector in OpenCV 【发布时间】:2012-09-09 22:03:12 【问题描述】:

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

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

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

【问题讨论】:

如果您只想要旋转矩阵的轴角表示,那么您根本不需要平移矩阵。您可以在互联网上的任何地方找到转换,例如 Wikipedia article 关于旋转矩阵的“2.3 从和到轴角的转换”部分。 【参考方案1】:

对于轮换表示之间的每种类型的转换,您都有这个网站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);

【讨论】:

嗨..jav 我还有一个问题。我的对象平行于***放置。当***移动时,我的对象也使用旋转矩阵移动我计算了角度和旋转轴.现在的问题是,如何计算轮心或主轴的旋转角度。i47.tinypic.com/344vck6.jpg【参考方案2】:

已经使用 openCV 我会推荐使用 Rodrigues 方法: cv::Rodrigues(src, dst, jacobian),如果您有一个参数的旋转矩阵,则计算旋转向量,反之亦然。

【讨论】:

以上是关于从 OpenCV 中的旋转矩阵和平移向量中获取旋转轴的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV获取相机旋转矩阵和平移矩阵

OpenCV从仿射矩阵得到旋转量平移量缩放量

OpenCV从仿射矩阵得到旋转量平移量缩放量

我可以从旋转/平移向量创建变换矩阵吗?

应用OpenCV进行图像旋转和平移

矩阵的平移旋转与缩放