8

Как известно в OpenCV 2.4.9.0, эти функции-детекторы: SIFT, SURF, BRISK, FREAK, STAR, FAST, ORB.Существуют ли какие-либо детекторы, реализованные на графическом процессоре и имеющие масштаб/поворот-инвариант?

Все они имеют реализацию на CPU, но только FAST и ORB на GPU. http://docs.opencv.org/genindex.html

И, как известно, некоторые из них масштаб/повернуть-инвариантно, но некоторые из них: не Are there any fast alternatives to SURF and SIFT for scale-invariant feature extraction?

Это масштабно-инвариантными и вращать-инвариант:

  • SIFT
  • SURF
  • BRISK
  • ИГРА
  • СТАР

Но это не масштабно-инвариантными и не вращался-инвариантным:

  • БЫСТРО
  • ОРБ

Существуют ли какие-либо датчики, которые реализованы на GPU и являются масштаб/повернуть-инвариантным ?

Или будет добавлен в OpenCV 3.0 на GPU или OpenCL?

+1

Вы его видели (это уже есть OCL версия)? http://docs.opencv.org/modules/nonfree/doc/feature_detection.html#gpu-surf-gpu – Kornel

+0

@Kornel Спасибо U! Я этого не видел, пропустил. Жаль, что FREAK/BRISK нет. – Alex

+1

Возможно, вы тоже можете попробовать AKAZE. Также в версии 3.0 вам не нужно использовать ocl версию серфинга. Он по умолчанию - см. Эту ссылку https://github.com/Itseez/opencv_contrib/blob/master/modules/xfeatures2d/src/surf.cpp#L895. Используйте 'UMat'. – Kiran

ответ

8

На самом деле, SURF является единственным детектором признаков с функцией масштабирования/поворота с поддержкой GPU в OpenCV.

В OpenCV 3.0 FAST и ORB получили OCL поддержку и, кроме того, эти два (FAST и ORB) уже получили поддержку CUDA.

Поддержка OCL/CUDA от SURF уже упоминалось в комментариях вашего вопроса, но это только вклад в OpenCV и это, как разработчики OpenCV в о opencv_contrib:

Новые модули довольно часто не имеют стабильного API, и они не хорошо протестированы. Таким образом, они не должны выпускаться в составе официального дистрибутива OpenCV, поскольку библиотека поддерживает двоичную совместимость, и пытается обеспечить достойную производительность и стабильность.

Основываясь на моих предыдущих опытах, реализация функций SURF в OpenCV была значительно слабее, чем OpenSURF. Было бы разумно попробовать его или найти другие реализации с открытым исходным кодом.

p.s .: Насколько мне известно, нет ускоренной версии GPU KAZE/AKAZE.

3

Недавно я реализовал AKAZE с помощью CUDA с несколькими коллегами, если вы знакомы с оригинальной библиотекой, у вас не должно возникнуть проблемы с ее использованием, так как мы уважали API. Вы можете найти текущую версию здесь:

https://github.com/nbergst/akaze