在findHomography()中获得的矩阵的同形分解

时间:2014-02-05 05:31:32

标签: c++ opencv computer-vision homography rotational-matrices

我已使用此code作为检测场景中矩形目标的基础。我使用ORB和Flann Matcher。我已经能够使用findHomography()perspectiveTransform()函数成功绘制场景中检测到的目标的边界框。
参考图像(上述代码中的img_object)是仅矩形目标的直视图。现在,我的场景图像中的目标可能向前或向后倾斜。我想找出它倾斜的角度。我已阅读各种帖子并得出结论:findHomography()返回的单应性可以分解为旋转矩阵和平移向量。 我使用了https:/gist.github.com/inspirit/740979推荐的this link代码转换为C ++。这是从OpenCV的摄像机校准模块获得的Zhang SVD分解代码。我从O'Reilly的Learning OpenCV书中得到了这个分解代码的完整解释。
我的问题是:

  1. 我是否正确假设我得到的分解旋转矩阵会告诉我目标倾斜的角度?
  2. 其次,我可以使用从findHomography()获得的Homography作为此分解模块的输入并期望正确的输出吗?或者有什么我想念的东西?
  3. 还有其他方法可以实现同样的目标吗?
  4. 最后,我在移动平台上编码,所以我也关注性能。如果你能指出我正确的方向,我会很高兴的。

    提前感谢您的时间和回复。

1 个答案:

答案 0 :(得分:0)

张的校准程序将产生一个旋转矩阵。这可以表示为3(欧拉)角度,而不是一个。或者,等效地(通过罗德里格斯的公式),作为一个单位向量和关于该向量的旋转角度 - 即三个数字。

除非您的相机和目标相对于彼此非常小心地定位,否则没有理由期望只有一个非零旋转角度。