在此处询问并尝试了 SURF 和 SIFT 之后,它们都没有足够有效地产生足够快的兴趣点来跟踪来自相机的流。
例如,SURF 需要大约 3 秒来为图像生成兴趣点,这对于跟踪来自网络摄像头的视频来说太慢了,而且在手机上使用时会更糟。
我只需要一种算法来跟踪某个区域、它的规模、倾斜度等。我可以在此基础上进行构建。
谢谢
在此处询问并尝试了 SURF 和 SIFT 之后,它们都没有足够有效地产生足够快的兴趣点来跟踪来自相机的流。
例如,SURF 需要大约 3 秒来为图像生成兴趣点,这对于跟踪来自网络摄像头的视频来说太慢了,而且在手机上使用时会更糟。
我只需要一种算法来跟踪某个区域、它的规模、倾斜度等。我可以在此基础上进行构建。
谢谢
我怀疑你的 SURF 使用可能需要一些改变?
这是一篇关于在移动设备上使用 SURF 进行增强现实应用程序的 MIT 论文的链接。
摘抄:
在本节中,我们介绍了 SURF 算法的实现及其对手机的适应。接下来,我们讨论精度对最近邻搜索速度的影响,并表明我们可以在对匹配精度影响最小的情况下实现一个数量级的加速。最后,我们讨论了图像匹配管道的电话实现的细节。我们研究手机的性能、内存使用和带宽消耗。
您可能还想研究 OpenCV 的算法,因为它们已经过试验和测试。
根据您的应用程序的限制,您可以减少这些算法的通用性以在图像中查找已知的 POI 和标记。
跟踪POI 的一部分是估计其从 2D 图像中的一个点到另一个点的矢量,然后选择性地确认它仍然存在于那里(通过像素特征)。相同的方法可用于跟踪(而不是重新扫描整个图像)POI 和 POI 组/对象透视和旋转变化。
网上有大量论文用于跟踪 2D 投影上的对象(在许多情况下达到了 servere skew)。
祝你好运!
你应该试试 FAST 检测器
我们正在将 SURF 用于一个项目,我们发现OpenSURF在原始速度和性能方面优于 OpenCV 的 SURF 实现。我们还没有测试可重复性和准确性,但它更快。
更新:我只是想指出您不需要在每一帧中执行 SURF 匹配步骤,您可以简单地每隔一帧执行一次,并在您不执行 SURF 的帧中插入对象的位置。
如果您要对要跟踪的区域进行更严格的限制,则可以使用更简单的算法。你肯定知道,ARToolKit 非常快,但只跟踪具有非常明显框架的黑白标记。
如果您想要一个(有点)通用跟踪器,您可能需要检查 PTAM。该网站 ( http://www.robots.ox.ac.uk/~gk/PTAM/ ) 目前已关闭,但这是一个在 iPhone 上运行的时髦视频 ( http://www.youtube.com/watch ?v=pBI5HwitBX4 )
As others have mentioned, three seconds seems unusually long. While testing the SURF implementation in the Mahotas library, I found that it took on average 0.36sec, even with some fairly large images (e.g. 1024x768). And that's with a mix of Python and C, so I'd imagine some other pure-C implementations would be even faster.
我在受限嵌入式系统中使用的一个选项是使用更简单的兴趣点检测器:例如 FAST 或 Shi-Tomasi。我使用了 Shi-Tomasi,因为我以 FPGA 为目标,并且可以轻松地以像素速率运行它,而无需大量缓冲。
然后使用 SURF 为已识别特征周围的图像补丁生成描述符,并将其用于匹配和跟踪目的。
我在http://computer-vision-talks.com/2011/01/comparison-of-the-opencvs-feature-detection-algorithms-2/找到了每个特征检测算法的很好的比较
看一看。可能有用!
根据该比较,正如 mirror2image 所建议的那样,FAST 是最佳选择。但这取决于您真正想要实现的目标。