Ask Your Question

Binary Decriptors in Feature Matching

asked 2016-06-05 13:28:05 -0500

John7777 gravatar image

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 documents and I have read it.

Here is my doubt,

After reading this tutorial on Binary Descriptors

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


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


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

6) The result after performing the hamming distance is


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.

Feature Marching

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 flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2016-06-05 21:16:49 -0500

Tetragramm gravatar image

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.

edit flag offensive delete link more


Can you just elaborate your answer. From your

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)

John7777 gravatar imageJohn7777 ( 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.

Tetragramm gravatar imageTetragramm ( 2016-06-07 07:54:17 -0500 )edit

Question Tools

1 follower


Asked: 2016-06-05 13:28:05 -0500

Seen: 378 times

Last updated: Jun 05 '16