I want to implement a feature-based alignment algorithm using the ORB feature detector and extractor.
So far, I extracted the features using ORB class from OpenCV
UPDATE: Now it is in the OpenCV documentation, here:
http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb
A detailed description of the algorithm is found here: http://www.willowgarage.com/sites/default/files/orb_final.pdf
It is not mentioned in OpenCV documentation but actually OpenCV has:
Two types of descriptors:
And corresponding matchers:
FlannBased
BruteForce<L2<float> >
BruteForce<SL2<float> >
//since 2.3.1BruteForce<L1<float> >
BruteForce<Hamming>
BruteForce<HammingLUT>
FlannBased
with LSH index //since 2.4.0So you need to modify your code to use for example BruteForce<Hamming>
matcher for ORB descriptors. It is possible to use L2 or L1 distance for matching uchar descriptors but results will be incorrect and findHomography returns unsatisfactory results.