**SIFT** algorithm creates **float descriptors** - that is a vector of floating-point values. In the same family is the **SURF** descriptor. There are some good reasons they work this way, but processors are lazy when crunching float numbers. This is why scientists developed binary descriptors, which describe points as a sequence of 0's and 1's.

**Binary descriptors** are fast - much faster to compare and match. So a new generation of image keypoint descriptors has grown using this technique: among them **BRIEF** and **FREAK**. They are in many ways similar to their float cousins, but it's clear that the internals cannot be compatible - an algorithm that compares strings of bits cannot compare vectors of floats.

The techniques involved in matching the two classes of descriptors and the math foundations differ. I do not know exactly how the `RobustMatcher`

works, but it's a good chance that adapting it is not as simple as replacing **float** with **bool**.

i don't think it's a problem of robustmatcher. I have tested FREAK and 90% of the time it can't detect the object. I have got much better results with ORB

Any solution for the problem?