Как работает детектор функций OpenCV ORB? - PullRequest
27 голосов
/ 29 августа 2011

Я хочу реализовать алгоритм выравнивания на основе объектов, используя детектор и экстрактор ORB.
До сих пор я извлекал функции, используя класс ORB из OpenCV ORB orb;
orb(gray_image,Mat(),features.keypoints,features.descriptors);
и сопоставил их, используя функцию knnMatch из openCV matcher.knnMatch(features1.descriptors, features2.descriptors, pair_matches,2); После этого я пытаюсь найти гомографию с помощью функции findHomography, но для этой функции требуется как минимум 4 совпадения между функциями изображения, и на большинстве протестированных изображений я получил менее 4.

Кто-нибудь использовал эту функцию? Есть ли какая-либо документация об этом или о классе ORB из OpenCV (значение параметров конструктора ORB)?

P.S. Это мой первый вопрос. и я не могу опубликовать более 2 ссылок. Для документации opencv используйте this .

1 Ответ

48 голосов
/ 29 августа 2011

ОБНОВЛЕНИЕ: теперь оно равно в документации OpenCV, здесь: http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb

Подробное описание алгоритма находится здесь: http://www.willowgarage.com/sites/default/files/orb_final.pdf


Это не упоминается в документации OpenCV, но на самом деле OpenCV имеет:

Два типа дескрипторов:

  • дескрипторы с плавающей запятой:
    • SIFT
    • SURF
  • дескрипторы uchar:
    • ORB
    • КРАТКОЕ

И соответствующие соответствия:

  • для дескрипторов с плавающей запятой:
    • FlannBased
    • BruteForce<L2<float> >
    • BruteForce<SL2<float> > // начиная с 2.3.1
    • BruteForce<L1<float> >
  • для дескрипторов uchar:
    • BruteForce<Hamming>
    • BruteForce<HammingLUT>
    • FlannBased с индексом LSH // начиная с 2.4.0

Поэтому вам нужно изменить код, чтобы использовать, например, BruteForce<Hamming> matcher для дескрипторов ORB.Можно использовать расстояние L2 или L1 для сопоставления дескрипторов uchar, но результаты будут неверными, а findHomography выдаст неудовлетворительные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...