Monthly Archives: March 2012

Feature detector and descriptors bench marking information of OpenCV2.3.1

Recently there is a big change in OpenCV2.2 to OpenCV2.3.

The new version contains many interesting features including new feature detector, ORB.

One might wonder about performance of each feature detectors in terms of processing speed, accuracy etc.

Here you could find brief information about these:

About feature detectors:

Feature descriptors:

A little talk about OpenCV feature detectors and descriptors.

UPDATE: Now it is in the OpenCV documentation, here:

A detailed description of the algorithm is found here:

It is not mentioned in OpenCV documentation but actually OpenCV has:

Two types of descriptors:

  • float descriptors:
    • SIFT
    • SURF
  • uchar descriptors:
    • ORB
    • BRIEF

And corresponding matchers:

  • for float descriptors:
    • FlannBased
    • BruteForce<L2<float> >
    • BruteForce<SL2<float> > //since 2.3.1
    • BruteForce<L1<float> >
  • for uchar descriptors:
    • BruteForce<Hamming>
    • BruteForce<HammingLUT>

So 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.