Ask Your Question

Clarifying FREAK: Fast Retina Keypoint descriptor

asked 2012-09-18 05:29:01 -0600

jav_rock gravatar image

updated 2012-09-20 08:17:35 -0600

I have been reading information about FREAK descriptor and I understand it is a binary descriptor that claims to be more robust than previous descriptors.

Reading the publication I noticed that they use a scale-space FAST (that works in pyramids with the image scale) detector for evaluation of FREAK. That means that they detect keypoints with FAST and then compute descriptors with FREAK.


I don't understand then which is the aim of the OpenCV function

FREAK::selectPairs(images, keypoint, corrTresh, verbose);

Is this supossed to be a kind of detector for FREAK? Which are the input/output parameters of the function?

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2012-09-20 04:16:17 -0600

Michal Kottman gravatar image

The method you are referring to is explained in Section 4.2 in the publication. In short, not all ~900 pairs are used to create the descriptor, only the most discriminant pairs are used to construct the descriptor. Section 4.2 explains how these pairs are chosen.

To find out which pairs are the most relevant, what the researchers did is they constructed ~50000 descriptors (details of the dataset they used are unknown), and from that they calculated which pairs had mean value closest to 0.5 (the value of a pair is either 1 or 0). These are the pairs that discriminate different images the most. Essentially the pairs are sorted by their entropy.

The authors provide a pre-generated set of pairs that are compiled in OpenCV. However, if this does not suit you, or you have a very specific use-case (industrial applications with very little variation, etc.), you can use you own pairs used for comparisons. You need to provide a list of images the pairs will be selected on, a list of lists of keypoints (one list per image). The selectPairs method will then "customize" the FREAK descriptor for your dataset according to Section 4.2 of the publication.

Note that once you generate your own set of pairs, you will have to always use this for descriptor comparison - you cannot compare descriptors generated with different sets of pairs - their order matters. So either use the pre-generated set, or you can try training the FREAK on your dataset and then always use the selected pairs.

edit flag offensive delete link more

Question Tools


Asked: 2012-09-18 05:29:01 -0600

Seen: 1,936 times

Last updated: Sep 20 '12