BRISK+FREAK: Which Matcher and which "correct" filter logic to use
Hi Guys, I really need you help please.
Before i write this post, i've read many tutorials, mades different searches, and try to understand all the concepts involved in computer vision. I never heard about Computer Vision before, so i'm a newbie in this field.
Let's start from explain the specific problem. I would like to know how much similar two images are. I know there are a lot of posts/info/tutorials/sites about that, and i swear i've already read it all! For example i've started from these links (i think that somes of them, could be interesting for all of you):
http://answers.opencv.org/question/20400/switching-from-brisk-to-freak-descriptor-causes/
http://answers.opencv.org/question/18413/freak-or-brisk-neither-good-nor-faster-than/
http://answers.opencv.org/question/15760/object-detection-with-freak-hamming/
http://answers.opencv.org/question/11840/false-positive-in-object-detection/
http://answers.opencv.org/question/4829/how-to-filter-freakbruteforcematcher-result/
And some code Examples:
http://www.programering.com/a/MTNzAzMwATc.html
https://github.com/rghunter/BRISK/blob/master/src/demo.cpp
http://find-object.googlecode.com/svn/trunk/find_object/example/main.cpp
https://github.com/kikohs/freak/blob/master/demo/freak_demo.cpp
Specifically: I have a photo of a dog: first photo is only the face of the dog, the second one is the same dog but laied on a green field. For me, the images are similar (is the same dog).
Then i have a photo with another dog face. It's a different dog, and i would like to filter this photo like "no similar" (before answer "use BOW", please continues in reading).
The OpenCV release is the last (2.4.9)
I need help on SPECIFIC combinations of descriptor/extractor/matcher: I use BRISK as detector (because it's light and free) I use FREAK as descriptor (becuse it's light - more than BRISK descriptor, because it's free and because it's a float descriptor like BRISK).
I've read that other good combinations are: ORB+ORB & BRISK+BRISK (I've never tried the first combination, but the second it's slow than BRISK+FREAK)
Then i tried different kind of matchers: - BFMatcher (with CrossCheck = true (and no filter logic) & CrossCheck = false + filter logic) - Flann Matcher
For the first one (BF) i've try both match & knnMatch methods For the second one i've try only knnMatch method with different filter logic.
The problems is that different filter logics "sometimes" not works for all combinations of this photoset of two dogs. For example: one filter logic works good to find the same dog in photos, but doesen't works if i try to match the face of the first dog with the second one (there are two differen dogs!).
What i understand (or what i thik i've understand) is that for each detector there is a "better" matcher (BF/Flann). And for each matcher (used with previous combination) there is only ONE "good way" to detect the right match from the knnMatch method.
So the question: which matcher i should use with ...
First of all - well done! You've done a lot of research by yourself and searched the web thoroughly before asking for advice.
Second, in my opinion, for the dogs problem, you would need something much more powerful than matching keypoints. If you would upload some example images, it will be easier to help.
By the way, FREAK and BRISK are not floating point descriptors.
Hi Gil, i've wrote a long answer to explain better the problem and answer to you & Guanta both, but the forums doesen't allow to post an answer before 48h. A very long post loosed for two times! So i post a comment instead. You're right: just one image, are better that 1000 words. So in the next days, i will modify my code to produce the matched image (with drawMatches method) to explain better the problem i have. And i would like to thank you also, for your great blogs (i suppose it's yours i.e:http://gilscvblog.wordpress.com/2013/10/04/a-tutorial-on-binary-descriptors-part-3-the-orb-descriptor/) that help me to understand better some very important concepts. Your support is very important for people like me that try to learn and understand new concepts by their own. Thx again! Andrea
Those are indeed my posts, thank you for your kind words. Again, I would recommend uploading the input images, not just the drawMatches results, so we could better understand the problem.