8

正如 OpenCV 2.4.9.0 中已知的这些特征检测器:SIFT, SURF, BRISK, FREAK, STAR, FAST, ORB.

所有这些都在 CPU 上实现,但仅FASTORBGPU 上实现。http://docs.opencv.org/genindex.html

众所周知,有些是尺度/旋转不变的,但有些不是:对于尺度不变的特征提取,是否有 SURF 和 SIFT 的快速替代方案?

这些是尺度不变和旋转不变的:

  • 冲浪
  • 轻快
  • 怪物
  • 星星

但这些不是尺度不变的,也不是旋转不变的:

  • 快速地
  • 宝珠

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

还是会在 GPU 或 OpenCL 上的 OpenCV 3.0 中添加?

4

2 回答 2

8

实际上,SURF 是 OpenCV 中唯一支持 GPU 的缩放/旋转不变特征检测器。

在 OpenCV 3.0中, FASTORB获得了 OCL 支持,而且这两个(FASTORB)已经获得了 CUDA 支持。

您的问题的评论中已经提到了SURF的 OCL/CUDA 支持,但这只是对 OpenCV 的贡献,这就是 OpenCV 的开发人员关于opencv_contrib的方式:

新模块通常没有稳定的 API,并且没有经过良好的测试。因此,它们不应该作为官方 OpenCV 发行版的一部分发布,因为该库保持二进制兼容性,并试图提供良好的性能和稳定性。

根据我之前的经验,OpenCV 对 SURF 功能的实现比OpenSURF弱得多。尝试一下,或者找到其他一些开源实现是合理的。

ps:据我所知,仍然没有KAZE/AKAZE的 GPU 加速版本。

于 2015-02-04T09:51:40.200 回答
4

我最近和几个同事使用 CUDA 实现了 AKAZE,如果您熟悉原始库,那么使用它应该没有问题,因为我们尊重 API。您可以在此处找到当前版本:

https://github.com/nbergst/akaze

于 2016-08-22T23:47:18.330 回答