3

作为调用 findHomography() 的结果,我得到了一个 3x3 矩阵 mtx[3][3]。该矩阵包含 mtx[0][2] 和 mtx[1][2] 中的翻译部分。但是我怎样才能从这个 3x3 矩阵中得到旋转部分呢?

不幸的是,我的目标系统使用完全不同的计算,所以我不能直接重用 3x3 矩阵并且必须从中提取旋转,这就是我问这个问题的原因。

4

3 回答 3

1

一般来说,您不能将最终的变换矩阵分解为其组成部分。在某些特定情况下,这是可能的。例如,如果操作之前的唯一操作是平移,那么您可以执行 arccos(m[0][0]) 来获取旋转的 theta 值。

于 2012-11-13T21:34:17.530 回答
1

同时为我自己找到了它:有一个 OpenCV 函数 RQDecomp3x3() 可用于从矩阵中提取部分变换。

于 2012-11-28T09:40:57.183 回答
1

RQDecomp3x3 在除 Z 之外的其他轴上返回旋转时存在问题,因此通过这种方式,您只需在 z 轴上正确找到自旋,如果您找到投影矩阵并将其传递给“decomposeProjectionMatrix”,您会发现更好的结果,投影矩阵不同于单应矩阵你应该注意这一点。

于 2013-01-14T09:26:36.200 回答