从 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 中的旋转矩阵和平移向量中获取旋转轴的主要内容,如果未能解决你的问题,请参考以下文章