Ответ 1
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:
- SIFT
- SURF
- дескрипторы uchar:
- ОРБ
- КРАТКИЙ
И соответствующие совпадения:
- для дескрипторов float:
-
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 возвращает неудовлетворительные результаты.