【问题标题】:Obtain Rotation Axis from Rotation Matrix and translation vector in OpenCV从 OpenCV 中的旋转矩阵和平移向量中获取旋转轴
【发布时间】:2012-09-09 22:03:12
【问题描述】:
我在两个图像中有一个棋盘,具有一定的旋转角度。让我们参考第一张图像找到第二张图像的旋转角度。
为此,我找到了这些对象的旋转矩阵 (3x3) 和平移矩阵 (3x1)。
如何使用这些矩阵找到对象的旋转角度和旋转轴?
【问题讨论】:
-
如果您只想要旋转矩阵的轴角表示,那么您根本不需要平移矩阵。您可以在互联网上的任何地方找到转换,例如 Wikipedia article 关于旋转矩阵的“2.3 从和到轴角的转换”部分。
标签:
opengl
opencv
rotation
image-rotation
【解决方案1】:
对于轮换表示之间的每种类型的转换,您都有这个网站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);