是否有任何在 GPU 上实现并且是缩放/旋转不变的检测器



在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上实现,但只有FASTORB在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

最新更新