当FAST算法设计时旨在更快,但实际上,在标准摄像头的实时应用中这些差异并不重要。顺便说一句,FAST检测器更快也更鲁棒。
我正在为手机上的实时增强现实进行编程,我们在应用程序执行期间使用SIFT(初始化)和FAST(金字塔FAST用于实时特征检测)的组合。FAST更快,并且它已经被实现在OpenCV中,所以如果你不想坚持使用SURF,可以试试FAST。我没有看到最近有关于SURF的实时论文,但我看到了修改版的SIFT,描述子中像素较少以及其他种类的修改,因此似乎SURF只是一个想法比实际应用价值高的算法。这仅仅是我的观点。
FastDescriptorExtractor
不存在。也许你在使用 OrbDescriptorExtractor()
?我也在使用ORB - dynamicOpenCV在SURF的速度和稳定性方面并不是最好的实现。如果计算两个写得很好的实现的FLOPS,那么SURF要比SIFT快得多。SIFT通过将图像多次与大型高斯核卷积来计算图像金字塔,而SURF使用积分图的近似方法来完成此操作。
要查看几种SURF实现的比较,请查看我的页面:
http://boofcv.org/index.php?title=Performance:SURF
很遗憾,由于跨平台问题,OpenCV拒绝了与四舍五入相关的补丁。也许这个补丁会被调整并重新提交。在我的工作中,我注意到通用round()函数非常慢,所以我替换成了自定义函数。
至于FAST检测器,Jav_Rock提到过,我只在最后一步使用它。它比其他任何探测器都不稳定,但确实很快。
SURF应该更快,而SIFT更加稳健。Astor在说600*400是按照今天的标准来看一个小图像,不过。
话虽如此,SURF应该比SIFT快几个数量级。