Ask Your Question
1

BRISK doesn't work properly?

asked 2012-11-06 04:05:33 -0600

Davide gravatar image

Hi, I'm building a matlab application to compare descriptors. I've put in the original version of BRISK from the paper site and the OpenCV version. It seems that on the same images the original version of BRISK finds lots of keypoints and correctly match them while in the opencv version it fails on every image. I've run the BRISK code without change anything and the code is the same for all the others descriptors, e.g. SIFT it works. Does anyone know why?

P.S. This is a link with images of matches with original BRISK and with opencv version (with and without RANSAC refinement) http://imageshack.us/g/542/briskoriginal.png/

edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted
2

answered 2014-06-30 04:33:51 -0600

FiXeR gravatar image

I also use mexOpenCV in matlab. I noticed that binary descriptors return 32 uchars (integers up to 255). Since binary descriptors are binary (!!), you should convert each integer value to 8 binary values, resulting in a larger vector (initial_size*8). Then you can use the hamming matcher to get your matches. That should do the trick!

edit flag offensive delete link more
1

answered 2012-11-06 17:25:22 -0600

SR gravatar image

I don't know the OpenCV version of BRISK, but in the original code AFAIR the image had to be converted to gray-scale before running BRISK on that image. Otherwise I had weird results. Maybe you should convert your image to gray-scale with OpenCV as well.

edit flag offensive delete link more

Comments

Thanks for the answer but this solution doesn't work. I've tried with bw images and the results are the same as with RGB images. Maybe a matcher problem. I've noticed that I get weird results with all the binary descriptors (Bruteforce-Hamming matcher) e.g. FREAK ORB and BRISK. I've been using opencv in matlab with mexopencv library and below I post the code for the matching (very simple and intuitive) is the right way to do the matching?

matcher = cv.DescriptorMatcher('Bruteforce-Hamming'); matches = matcher.match(descriptors1, descriptors2);

Davide gravatar imageDavide ( 2012-11-08 04:17:26 -0600 )edit

I haven't use the bruteforce-hamming matcher yet, but the code seems OK.

SR gravatar imageSR ( 2012-11-08 08:00:14 -0600 )edit

Question Tools

Stats

Asked: 2012-11-06 04:05:33 -0600

Seen: 853 times

Last updated: Jun 30 '14