Opencv Freak - Can I use the Freak function descriptor with BOW?

I am trying to use Freak in opencv to detect functions and retrieve descriptors, and then to create a BOW dictionary and use a dictionary according to BOW for each image. You know everything. I know that BOW can be used with other descriptors, such as SIFT or SURF, it is not clear to me whether Freak descriptors, which are binary, can use BOW. More specifically, when opencv builds a BOW dictionary, it uses a k-means cluster. I don’t understand which distance function uses the k-means cluster algorithm. For binary descriptors such as Freak, the Hamming distance seems to be the only choice.

It seems to me that opencv k-mean uses only Euclidean distance when calculating distance, bummer. Looks like I have to create my own k-tools and my own dictionary. Any smart people out there know a workaround?

Thanks!

+4
source share
2 answers

I read on paper that Freak is not easy to use. Here is an excerpt from the article "... These algorithms cannot be easily used in many search algorithms, because they need to be compared with the Hamming distance, which is not easy to adapt to accelerated search structures, such as vocabulary trees or approximate nearest neighbors (for example, ANNA ) .... "(ORB, FREAK and BRISK)

+1
source

FREAK works with location-sensitive hashing. You can use it with the FLANN (fast close neighbors) included in OpenCV.

For BOW, only the first 5, 6, 7, 8 bytes of the descriptor may be enough to build a tree.

0
source

Source: https://habr.com/ru/post/1445530/


All Articles