1

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

  1. 我是否正确假设我得到的分解旋转矩阵会告诉我目标倾斜的角度?
  2. 其次,我可以使用从findHomography()in 获得的 Homography 作为该分解模块的输入并期望正确的输出吗?还是我缺少什么?
  3. 有没有其他方法可以达到同样的效果?

最后,我在移动平台上编码,所以我也关心性能。如果你能指出我正确的方向,我会很高兴。

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

4

1 回答 1

0

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

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

于 2014-02-06T15:38:10.353 回答