Intereting Posts
Как установить layout_alignParentRight = "false" программно? Android + Arduino Bluetooth Передача данных Разрешить все ссылки «market: //» изнутри веб-браузера, чтобы открыть магазин Google Play Изменить профиль качества на SonarQube.com Скрытие панели инструментов с помощью вкладок, сворачивание панели инструментов только тогда, когда вкладки достигают панели инструментов в андроиде ArrayList нельзя отнести к Parcelable Android и SQLite – получить максимальный идентификатор таблицы Синхронизация в реальном времени с Android-приложением и Google Диском Android Power Profiler Изменение ориентации экрана во время обезьяны Получить имя вида программно в Android GetView не вызван? Фотогалерея на Android Проблема на устройствах Android при циклических звуках с использованием метода playBackgroundMusic в Cocos2d-x CocosDenshion Почему браузер эмулятора Android просто выходит на главный экран при вводе URL-адреса и нажмите клавишу ввода?

Как работает детектор функций ORCV ORB?

Я хочу реализовать алгоритм выравнивания на основе функций, используя детектор функции ORB и экстрактор.
До сих пор я извлекал функции, используя ORB- класс из 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)?

PS Это мой первый вопрос. И я не могу разместить более двух ссылок. Для документации opencv используйте это .

    UPDATE: теперь он находится в документации 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 имеет:

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

    • Дескрипторы float:
      • ПРОСЕЯТЬ
      • SURF
    • Учхарские дескрипторы:
      • ORB
      • КРАТКАЯ

    И соответствующие совпадения:

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

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