OpenCV FREAK: Fast Retina KeyPoint descriptor

Jav_Rock picture Jav_Rock · Sep 19, 2012 · Viewed 12k times · Source

I am developing an application which involves the use of Freak descriptors, just released in the OpenCV2.4.2 version.

In the documentation only two functions appear:

  • The class constructor

  • A confusing method selectPairs()

I want to use my own detector and then call the FREAK descriptor passing the keypoints detected but I don't understand clearly how the class works.

Question:

Do I strictly need to use selectPairs()? Is it enough just by calling FREAK.compute()? I don't really understand which is the use of selectPairs.

Answer

remi picture remi · Sep 20, 2012

Just flicked through the paper and saw in paragraph 4.2 that the authors set up a method to select the pairs of receptive fields to evaluate in their descriptor, as taking all possible pairs would be too much burden. The selectPairs() function let you recompute this set of pairs.

Read afterwards the documentation where they point exactly to this paragraph in the original article. Also, a few comments in the documentation tells you that there is an already available, offline learned set of pairs that is ready to use with the FREAK descriptor. So I guess at least for a start you could just use the precomputed pairs, and pass as an argument the list of KeyPoints that you obtained from your method to FREAK.compute.

If your results are disapointing, you could try the keypoint selection method used in the original paper (paragraph 2.1), then ultimately learning your own set of pairs.