关于算法:SURF与SIFT,SURF真的更快吗? 您所在的位置:网站首页 rapid和fast哪个更快 关于算法:SURF与SIFT,SURF真的更快吗?

关于算法:SURF与SIFT,SURF真的更快吗?

2023-09-15 19:18| 来源: 网络整理| 查看: 265

我正在使用SURF和SIFT测试一些对象检测。

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

难道我做错了什么?

[编辑]

请注意,有一篇文章介绍了如何通过对opencv代码进行一些更改来使SURF更快。

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

相关讨论 600 * 400的图像对于现代计算机而言算不了什么。 尝试测试视频或巨大(比您大100倍)的图像。 请尝试使用新发布的SURF开源版本github.com/herbertbay/SURF

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

相关讨论 感谢您的贡献,无论如何,关于SURF都有一些优化可以提高性能。 它在这里描述:computer-vision-talks.com/2011/06/a-few-thoughts-about-cvround我试图联系一个没有运气的opencv开发人员:( 无论如何,您正在使用哪个Extractor? 因为FastDescriptorExtractor不存在。 也许您正在使用OrbDescriptorExtractor()? 我也在用ORB mm,我们使用改良的SIFT描述符,以便能够将FAST(实时)中的特征与SIFT(离线初始化)中的特征进行比较。 它类似于本文中描述的内容:ieeexplore.ieee.org/xpl/ 这根本无法回答问题。

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

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

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

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

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

相关讨论 出于好奇,如果您在线提交了补丁,可以获取补丁的链接吗?

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

也就是说,SURF应该比SIFT快许多个数量级。

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

SIFT:0.0983946(s)

表面:0.183372(s)

但是,关键点的数量有很大的不同, SIFT:kpsize = 671 d行= 671 d-col = 128

SURF:kpsize = 1156 d行= 1156 d-col = 64

SURF的返回值几乎是SIFT关键点的两倍,因此不能说SIFT比SURF更快。

当我们使用Fast作为检测器时,然后应用SIFT,SURF:

SIFT:0.199448(s) 表面:0.0613682(s)

SIFT:kpsize = 2362 d行= 2362 d-col = 64

SURF:kpsize = 2362 d行= 2362 d-col = 64

SURF比SIFT快三倍。

请使用SURF的原始实现进行测试。打开简历速度较慢。

比较SIFT和SURF的原始实现时,使用SURF可以获得更快的结果。通过调整参数,您甚至可以快一个数量级。但是,健壮性可能会受到影响。这一切都取决于您的用例。

通常,SURF与SIFT一样强大。根据数据集,您可能会得到不同的结果,但是,就鲁棒性而言,它们是相同的。

还有一些SURF的GPU实现,其速度比我最初的实现快得多。

相关讨论 请阅读原始SURF论文,比较不同算法。 vision.ee.ethz.ch/~surf/eccv06.pdf 顺便说一句,原始的SURF实现现在是开源的github.com/herbertbay/SURF

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有