SURF OpenCV - дескрипторы SURF для предопределенных точек - PullRequest
2 голосов
/ 03 апреля 2012

Я прочитал руководство OpenCV SURF "ExtractSURF" на http://opencv.willowgarage.com/documentation/python/feature_detection.html

Как я понимаю, эта функция автоматически ищет SURF-функции на изображении.

Во многих случаях пользователь хочет передать эти функции (обнаруженные другими алгоритмами) в эту функцию, чтобы получить дескрипторы SURF для этих точек. Но я думаю, что функция (ExtractSURF) не поддерживает это. Я прав?? это исправлено с функциями SURF, которые он обнаружил

Есть ли разрешение для этого ??

Спасибо

Ответы [ 4 ]

1 голос
/ 03 апреля 2012

Вам нужен пример, который поставляется с opencv 2.3 и называется find_obj.py. Он находится в каталоге с примерами opencv \ samples \ python2.

Это отличный пример использования SURF в cv2 и python.

Док по детекторам функций здесь: http://opencv.itseez.com/modules/features2d/doc/common_interfaces_of_feature_detectors.html#surffeaturedetector

0 голосов
/ 06 апреля 2016

Из документа OpenCV алгоритмы обнаружения функций SIFT и SURF поддерживают эту функцию:

 C++: void SURF::operator()(InputArray img, InputArray mask, vector<KeyPoint>& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false)

 C++: void SIFT::operator()(InputArray img, InputArray mask, vector<KeyPoint>& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false)

Параметр «useProvidedKeypoints», где

Логический флаг. Если это правда, детектор ключевой точки не работает. Вместо этого используется предоставленный вектор ключевых точек и алгоритм просто вычисляет их дескрипторы. "

Итак, в этом случае, если у вас уже есть некоторые точки, которые вас интересуют, вы можете вставить их в функцию, и она будет возвращать рассчитанные дескрипторы для этих точек соответственно (детектор ключевых точек в этом случае не запускается)

0 голосов
/ 06 апреля 2016

Согласно руководству OPENCV, функция «extractSURF» имеет следующий формат:
cv.ExtractSURF ( изображение , маска , хранилище , params ) -> ( keypoints , дескрипторы )

  • ключевые точки: массив ключевых точек, содержащий координаты ключевой точки (x, y) и масштаб, и т. Д.
  • дескрипторы: дескриптор SURF, основанный на координате ключевой точки и масштабе, на котором SURF обнаруживает эту ключевую точку.

    Как вы можете видеть, функция extractSURF используется для вычисления всего процесса SURF от обнаружения до описания, поэтому вы не можете использовать ваши собственные функции для функции для вычисления дескрипторов SURF.
    Более того - связь между масштабом ключевых точек в процессе обнаружения и масштабом построения областей вокруг ключевых точек для извлечения дескриптора. Это не подходит для использования других функций для процесса извлечения дескриптора SURF.
    Таким образом, в Opencv 3.0 на данный момент есть только две функции обнаружения и обнаружения и вычисления для SURF. не позволяет разделять функцию SURF.
0 голосов
/ 03 апреля 2012

Да , но не с OpenCV Python API. Использование SurfDescriptorExtractor в C ++.

...