【发布时间】:2014-03-01 10:01:48
【问题描述】:
我已使用此code 作为基础来检测场景中的矩形目标。我使用 ORB 和 Flann Matcher。我已经能够使用findHomography() 和perspectiveTransform() 函数成功地在我的场景中绘制检测到的目标的边界框。
参考图像(上述代码中的img_object)是仅矩形目标的直视图。现在我的场景图像中的目标可能会向前或向后倾斜。我想找出它倾斜的角度。我阅读了各种帖子并得出结论,findHomography() 返回的单应性可以分解为旋转矩阵和平移向量。
我使用了this link 推荐的https:/gist.github.com/inspirit/740979 中的代码翻译成C++。这是从OpenCV的相机标定模块得到的张SVD分解代码。我从 O'Reilly 的 Learning OpenCV 书中得到了这个分解代码的完整解释。
我的问题是:
- 我是否正确假设我得到的分解旋转矩阵会告诉我目标倾斜的角度?
- 其次,我可以使用从
findHomography()获得的 Homography 作为此分解模块的输入并期望得到正确的输出吗?还是我缺少什么? - 还有其他方法可以达到同样的效果吗?
最后,我在移动平台上编码,所以我也关心性能。如果您能指出正确的方向,我会很高兴。
提前感谢您的时间和回复。
【问题讨论】:
-
为什么不使用已知参数(比例、平移和旋转以及透视参数)创建自己的单应性并尝试在这样的矩阵上进行分解?您将看到是否会提取正确的参数。
-
问题不在于单应性分解..我很确定它工作正常。我想知道的是在我的情况下,我可以在应用 ORB 后给出 findHomography() 返回的单应性检测到这个模块?旋转矩阵会给我目标旋转的角度吗?
标签: c++ opencv computer-vision homography rotational-matrices