在OpenCV 2.4.9.0中已知的是这些特征检测器:SIFT, SURF, BRISK, FREAK, STAR, FAST, ORB
.
- http://docs.opencv.org/modules/features2d/doc/feature_detection_and_description.html
- http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html
所有这些都在CPU上实现,但只有FAST
和ORB
在GPU上实现 http://docs.opencv.org/genindex.html。
是尺度/旋转不变的,但有些不是:是否有任何快速的替代方案可以替代SURF和SIFT进行尺度不变的特征提取?
这些是尺度不变和旋转不变的:
- 筛选
- 冲浪
- 轻快
- 怪物
- 星
但这些不是尺度不变的,也不是旋转不变的:
- 快
- 球
是否有任何在 GPU 上实现并且缩放/旋转不变的检测器?
还是会添加到GPU或OpenCL上的OpenCV 3.0中?
实际上,SURF 是 OpenCV 中唯一支持 GPU 的缩放/旋转不变特征检测器。
在OpenCV 3.0中,FAST和ORB已经获得了OCL支持,此外,这两个(FAST和ORB)已经获得了CUDA支持。
OCL/CUDA对SURF的支持已经在您的问题的评论中提到过,但它只是对OpenCV的贡献,这就是OpenCV的开发人员对opencv_contrib:
新模块通常没有稳定的 API,而且它们不是 久经考验。因此,它们不应该作为官方的一部分发布 OpenCV 发行版,因为库保持二进制兼容性, 并试图提供体面的性能和稳定性。
根据我以前的经验,OpenCV对SURF功能的实现比OpenSURF弱得多。尝试一下,或者找到一些其他的开源实现是合理的。
附言:据我所知,仍然没有 KAZE/AKAZE 的 GPU 加速版本。
我最近和几个同事一起使用 CUDA 实现了 AKAZE,如果您熟悉原始库,使用它应该没有问题,因为我们尊重 API。您可以在此处找到当前版本:
https://github.com/nbergst/akaze