3

I have been searching quite a bit for some efficient, scale/rotation invariant and patent-free combination of keypoints detector + descriptors extractor, but all the ones that I have tested give me very poor results. I tried using Brisk and Freak as recommended here, but they gave me the same poor results for detecting an object. (i.e: More inliers or good matches for the wrong images than for the right ones.)

Has someone managed to get usable object detection with an open-source combination? I am very interested because I want to know if is me who is failing on filtering correctly the results or because the generated data is faulty.

Community
  • 1
  • 1
Str1101
  • 859
  • 2
  • 12
  • 22

1 Answers1

4

You mentioned that you've already tried FREAK and BRISK, which both report comparable results to SIFT and SURF. Another, newer, option is a descriptor called KAZE.

An open sourced implementation is available at that link, and it aims to be in an upcoming version of OpenCV.

Chris
  • 4,663
  • 5
  • 24
  • 33
  • Maybe is because I'm a newbie on the matter, but I didn't find the results comparable, possibly because of: 1. With Surf I am able to use a FlannBasedMatcher.knnMatch and then to apply an algorithm of comparison to separate the good_matches from the rest. Finally, with good_matches().size I get fairly good results on detecting a object. 2. I can not do this with Freak or Brisk (Problems with LSHindex on Flann, BruteforceMatcher.knnMatch results are different, etc..) Anyway, I'm not sure if my approach to the problem is the most appropriate... – Str1101 Jun 24 '13 at 20:21
  • And thanks for the link, I will give it a try once I clarify my ideas a bit :) – Str1101 Jun 24 '13 at 20:23
  • 1
    You're right that you can't use OpenCV's standard knn architecture for binary descriptors, since these rely purely on Euclidean distances with floating point values. That makes no sense in the context of comparing binary descriptors. k-nearest-neighbours is a well studied algorithm, and alternative implementations are available that will allow you to use Hamming distance as a distance measure. This will give you much better matching results with FREAK or BRISK. Good luck! – Chris Jun 24 '13 at 20:26
  • Thanks for the advice! I hadn't thought of using any alternative to OpenCV because of the complications that this could generate, but it's worth the effort and I will try to do it. (What I had already tried was this code [link](http://find-object.googlecode.com/svn/trunk/find_object/example/main.cpp) that tries to create a Flann LSH index, but I couldn't make it work) – Str1101 Jun 24 '13 at 20:40