用于增强现实的 SURF 和 SIFT 替代对象跟踪算法
Posted
技术标签:
【中文标题】用于增强现实的 SURF 和 SIFT 替代对象跟踪算法【英文标题】:SURF and SIFT Alternative Object Tracking Algorithm for Augmented Reality 【发布时间】:2010-11-22 01:35:32 【问题描述】:在询问here 并尝试了 SURF 和 SIFT 之后,它们都没有足够高效地生成足够快的兴趣点来跟踪来自相机的流。
例如,SURF 大约需要 3 秒才能为图像生成兴趣点,这对于跟踪来自网络摄像头的视频来说太慢了,而且在手机上使用时会更糟。
我只需要一个算法来跟踪某个区域、它的比例、倾斜度等。我可以在此基础上进行构建。
谢谢
【问题讨论】:
【参考方案1】:我怀疑您的 SURF 使用可能需要一些改变?
Here is a link 提交一篇关于在移动设备上使用 SURF 进行增强现实应用的 MIT 论文。
摘录:
在本节中,我们将介绍我们的 SURF 算法的实现 及其对移动设备的适应 电话。接下来,我们讨论影响 该精度对速度 最近邻搜索并显示 我们可以达到一个数量级 以最小的影响加速 匹配精度。最后,我们揭示—— 骂电话的细节 图像匹配的实现 管道。我们研究性能, 内存使用和带宽消耗 在电话里。
您可能还想研究 OpenCV 的算法,因为它们已经过试验和测试。
根据您的应用程序的约束,您可以减少这些算法的通用性,以在图像中查找已知的 POI 和标记。
跟踪 POI 的一部分是估计其从 2D 图像中的一个点到另一个点的矢量,然后选择性地确认它仍然存在于那里(通过像素特征)。可以使用相同的方法来跟踪(而不是重新扫描整个图像)POI 和 POI 组/对象的透视和旋转变化。
网上有大量论文用于跟踪 2D 投影上的对象(在许多情况下达到了 servere 偏斜)。
祝你好运!
【讨论】:
我能想到的唯一可能减慢它的是它在 Java 中的事实。除此之外,很明显,产生兴趣点需要很长时间。【参考方案2】:您应该尝试 FAST 检测器
http://svr-www.eng.cam.ac.uk/~er258/work/fast.html
【讨论】:
【参考方案3】:我们正在将 SURF 用于一个项目,我们发现 OpenSURF 在原始速度和性能方面优于 OpenCV 的 SURF 实现。我们还没有测试可重复性和准确性,但速度要快得多。
更新: 我只是想指出,您不需要在每一帧中执行 SURF 匹配步骤,您可以简单地每隔一帧执行一次,并在您不执行 SURF 的帧中插入对象的位置。
【讨论】:
只是想评论一下,在最新版本的 OpenCV 中,SURF 实现已被重写以利用英特尔线程块。如果你的执行设备有多个内核,那么加速是不可思议的(比 OpenSurf 快得多)【参考方案4】:如果您想对要跟踪的区域进行更严格的限制,您可以使用更简单的算法。您肯定知道,ARToolKit 非常快,但只跟踪具有非常明显框架的黑白标记。
如果您想要一个(有点)通用的跟踪器,您可能需要检查 PTAM。该网站 (http://www.robots.ox.ac.uk/~gk/PTAM/) 目前已关闭,但这是一段在 iPhone (http://www.youtube.com/watch?v=pBI5HwitBX4) 上运行的精彩视频
【讨论】:
我不知道 PTAM,但从视频来看,它看起来确实不错。我想我只能等到它再次出现。我尝试搜索 Google 代码搜索,但.. 没有。【参考方案5】:正如其他人所提到的,三秒似乎异常长。在Mahotas 库中测试 SURF 实现时,我发现它平均需要 0.36 秒,即使是一些相当大的图像(例如 1024x768)。这是 Python 和 C 的混合,所以我想其他一些纯 C 实现会更快。
【讨论】:
这里mahotas的作者:其实Python层很薄。我不希望纯 C 的速度大幅提高。【参考方案6】:我在http://computer-vision-talks.com/2011/01/comparison-of-the-opencvs-feature-detection-algorithms-2/ 找到了每个特征检测算法的很好的比较
看看。可能有用!
根据该比较,并且正如 mirror2image 所建议的那样,FAST 是最佳选择。但这取决于您真正想要实现的目标。
【讨论】:
【参考方案7】:我在受限嵌入式系统中使用的一个选项是使用更简单的兴趣点检测器:例如 FAST 或 Shi-Tomasi。我使用了 Shi-Tomasi,因为我的目标是 FPGA,并且可以轻松地以像素速率运行它,而无需大量缓冲。
然后使用 SURF 为已识别特征周围的图像补丁生成描述符,并将其用于匹配和跟踪目的。
【讨论】:
以上是关于用于增强现实的 SURF 和 SIFT 替代对象跟踪算法的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV+Python特征提取算法与图像描述符之SIFT / SURF / ORB