SURF vs SIFT,SURF真的更快吗?

问题描述 投票:28回答:6

我正在使用SURFSIFT测试某种对象检测。

SURF声称比SIFT更快,更强大,但我在测试中发现这不是真的。具有中等图像(600 * 400)的SIFT与SURF的速度相同,并且可以很好地识别对象(甚至可能比SURF更好)。

我做错什么了吗?

[编辑]

[请注意,an article解释了如何通过稍微更改opencv代码来使SURF更快。

如果您认识一些活跃的opencv开发人员,请让他看到。

algorithm opencv sift surf
6个回答
29
投票

[设计时原本打算更快,但实际上,差异与使用标准相机的实时应用无关。顺便说一句,FAST检测器更快,更坚固。我正在为手机上的实时增强现实编程,在应用程序执行期间,我们将SIFT(初始化)和FAST(用于实时特征检测的金字塔形FAST)结合使用。 FAST更快,并且在OpenCV中实现,因此,如果您不想坚持SURF,请尝试一下。我没有看过最近使用SURF进行实时处理的论文,但是我看到了SIFT的修改版本,描述符和其他类型的修改用的像素更少,所以SURF似乎是个不错的主意,但是没有得到据认为。无论如何,这只是我的意见。


16
投票

OpenCV对于速度或稳定性没有最佳的SURF实现。如果要计算两个编写良好的实现的FLOPS,SURF从根本上要比SIFT快得多。 SIFT通过将图像与大型高斯核卷积几次来计算图像金字塔,而SURF使用积分图像来完成图像金字塔的近似计算。]

[要比较SURF的几种实现,请在这里查看我的页面:

http://boofcv.org/index.php?title=Performance:SURF

不幸的是,由于跨平台问题,OpenCV拒绝了与取整有关的补丁。也许补丁将被调整并重新提交。在我自己的工作中,我注意到通用的round()非常慢,并用自定义函数替换了它。

关于Jav_Rock提到的FAST检测器,我仅将其作为最后的手段。它的检测器稳定性远不及其他任何检测器,但确实非常快。


5
投票

SURF应该更快,而SIFT更强大。阿斯特说600 * 400是今天的标准,是正确的。不过。


3
投票

没有任何更改,如果在OPENCV中应用SIFT和SURF,SIFT似乎比SURF快,但事实并非如此。为了证明我已经在393 * 387像素的图像上进行了测试。运行相同的特征提取100次并获得其平均时间后,结果为


2
投票

请使用the original implementation of SURF进行测试。打开简历速度较慢。

[比较SIFT和SURF的原始实现时,you will get much faster results with SURF。通过调整参数,您甚至可以快一个数量级。但是,健壮性可能会受到影响。这完全取决于您的用例。

通常,SURF与SIFT一样强大。根据数据集,您可能会得到不同的结果,但是en gros


1
投票

通过不将其应用在每帧上但每6帧应用一次,我提高了Surf特征检测器的速度,这对于我的应用来说是可以的。我做个柜台进行if语句if(i%6 == 0),将您的代码放在此if语句下,速度会提高

© www.soinside.com 2019 - 2024. All rights reserved.