【问题标题】:Visual Odometry (aka. Egomotion estimation) with OpenCV使用 OpenCV 的视觉里程计(又名自我运动估计)
【发布时间】:2012-12-21 10:11:39
【问题描述】:

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

所以我搜索并阅读了很多内容,偶然发现了OpenCV。维基百科明确指出it could be used for egomotion。但我找不到任何关于它的文档。

  1. 我需要自己用OpenCV的物体检测方法实现自我运动算法吗? (我认为这会非常复杂,因为物体会根据它们与相机的距离以不同的速度移动。而且我还需要考虑旋转。)
  2. 如果是这样,我应该从哪里开始? Kanade–Lucas–Tomasi feature tracker with support for scaling and rotation 有没有好的代码示例?

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

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

【问题讨论】:

    标签: opencv augmented-reality motion-detection


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢,我已经阅读了那篇论文,它是实现的基础,但它没有包含足够的信息让我自己实现它。所以这个链接对我很有帮助,特别是因为它包含一个指向论文作者源代码的更新链接。
    【解决方案2】:

    Egomotion(或视觉里程计)通常基于光流,OpenCv 有一些motion analysis and object tracking functions 用于计算光流(与cvGoodFeaturesToTrack() 等特征检测器结合使用)。

    This example 可能有用。

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

    【讨论】:

    • 我担心我必须自己实现算法。 :-/
    • @ChristianStrempfer 嗨。我想知道你是如何解决你的问题的。可以发一下代码吗?
    • @Clive:我实现了一个简单的 Android 应用程序,它可以跟踪视觉特征。我得出的结论是,手机对于里程计来说还不够好,因为我无法分析每秒足够多的帧数来支持即使是缓慢的运动,而且电池很快就会耗尽。因此我没有实现里程计算法。
    • @ChristianStrempfer 感谢您提供信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多