我计划实现一个具有增强现实功能的应用程序。对于其中一个特征,我需要一个自我运动估计。在一个有固定物体的空间中,只有相机在移动(没有物体或只有一小部分会移动,因此它们可能被忽略)。
所以我搜索和阅读了很多,偶然发现了OpenCV。维基百科明确指出,它可以用于自我情感。但是我找不到任何关于它的文档。
- 我需要用OpenCV的对象检测方法自己实现自我运动算法吗?(我认为这将是非常复杂的,因为物体会以不同的速度移动,这取决于它们与相机的距离。我还需要考虑旋转)
- 如果是,我应该从哪里开始?是否有一个支持缩放和旋转的Kanade-Lucas-Tomasi特性跟踪器的好代码示例?
注::我也知道基于标记的框架,如vuforia,但使用标记是我想阻止的,因为它限制了可能的观点。
更新2013-01-08:我了解到自我运动估计更广为人知的是视觉里程计。所以我更新了标题
您可以在这里找到基于光流的单目视觉里程计的良好实现。
它是用emgucv (c# opencv包装器)编码的,但你会发现转换回纯opencv没有问题。
Egomotion(或visual odometry)通常基于光流,OpenCv有一些运动分析和对象跟踪功能用于计算光流(与cvGoodFeaturesToTrack()
等特征检测器一起)。
这个例子可能有用。
不是一个完整的解决方案,但至少可以让你朝着正确的方向前进。