9

我计划实现一个具有增强现实功能的应用程序。对于其中一个功能,我需要一个自我运动估计。在具有固定物体的空间中,只有相机在移动(没有或只有小部分会移动,因此它们可能会被忽略)。

所以我搜索并阅读了很多内容并偶然发现了OpenCV。维基百科明确指出它可以用于自我运动。但我找不到任何关于它的文档。

  1. 我是否需要使用 OpenCV 的对象检测方法自己实现自我运动算法?(我认为这会非常复杂,因为物体会根据它们与相机的距离以不同的速度移动。而且我还需要考虑旋转。)
  2. 如果是这样,我应该从哪里开始?是否有支持缩放和旋转的 Kanade–Lucas–Tomasi 特征跟踪器的良好代码示例?

PS:我也知道像vuforia这样的基于标记的框架,但是我想防止使用标记,因为它限制了可能的观点。

2013-01-08 更新:我了解到 Egomotion Estimation 更好地称为 Visual Odometry。所以我更新了标题。

4

2 回答 2

4

您可以在此处找到基于光流的单目视觉里程计的良好实现。

它是使用 emgucv(C# opencv 包装器)编码的,但您不会发现将其转换回纯 opencv 时没有任何问题。

于 2013-01-11T07:54:23.567 回答
2

Egomotion(或视觉里程计)通常基于光流,OpenCv 具有一些用于计算光流的运动分析和对象跟踪功能(与类似的特征检测器结合使用cvGoodFeaturesToTrack())。

这个例子可能有用。

不是一个完整的解决方案,但至少可以让你朝着正确的方向前进。

于 2013-01-08T18:04:40.020 回答