# Binary Decriptors in Feature Matching

I just wanted to learn about the feature detectors, descriptors and matchers.

I was clear with the detectors and descriptors after my research work and came to know that descriptors are used to describe the detectors found in an image. The descriptors need be rotation, orientation and scale invariant. Every descriptors has a corresponding detector but not the vice versa as every feature can't be described using a descriptor. A clear explanation on this topic is described in opencv.org documents and I have read it.

Here is my doubt,

After reading this tutorial on Binary Descriptors

https://gilscvblog.com/2013/08/26/tut...

I got some idea on what it is. In short

1) 512 Pairs of a patch in Image A

2) Compare the intensity of each pair with the 1st value and with the 2nd value in the pair. If 1st value is higher place 1 or else place 0.

3) We will now have about 512 binary digits composing of 1's and 0's. Let it be

101010101010101010.....10101010


4) Same repeat the above 3 steps on a patch with different image 'B' and also we have 512 binary digits. Let's say it be

010101010101010101.....01010101


5) Now perform the hamming distance between those two binary strings (XOR operation)

6) The result after performing the hamming distance is

111111111111111111.....11111111


Here are my questions?

1) What happens after this step?

2) How the lines are drawn from one image to another image. I came to know that we are using some distance matching something like that.

I Just wanted to learn in practical what is applied in the image in order to draw the lines in between the descriptors (descriptors matchers - how it is worked).

Seeking for a help on this topic.

edit retag close merge delete

Sort by » oldest newest most voted

XOR, count the bits. The result is the distance. Lower is better.

XOR gives a 1 for the locations the vectors are different. Since every bit in the vector has the same importance, this is the same as doing (x1-x2)^2 for every bit individually.

The Brute Force Matcher checks every possible match and keeps the k best. Simple. The Flann based matcher is more complicated. More info is here.

more

1st Para: Yes, It is clear. XOR is used for finding the hamming distance (I hope this is right). The binary digits of length 512 with more '0's are better.

3rd Para: Regarding the BruteForce Matcher, I haven't found enough papers/links on how it practically works.

Let us consider that from an Image 'A' and Image 'B' after performing XOR operation on those two 512 binary digits, I got a single 512 binary bigit string as below

1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 ........... 0 0 0 0 1 1 0 1 0 1 1 0 0

What does BruteForce Matcher do with this string on drawing the matches from one Image to another Image ...(more)

( 2016-06-07 03:47:13 -0500 )edit

Brute Force Matcher tests every possible match. There's nothing else to say. For each point in the left image, calculate the distance to every point in the right image. It matches to the one with the shortest distance.

Unless you want to know how the cv::line function works to do the drawing, in which case I have no idea. That doesn't have anything to do with feature matching though.

( 2016-06-07 07:54:17 -0500 )edit

Official site

GitHub

Wiki

Documentation