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 the second one)
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.
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 BRISK+FREAK and MORE IMPORTANT: which distance filter logic i've should implement?
I don't think it'a a problem that i can solve with homography (i don't have to find a specific object in scene, but just knows how similar images are). Could BOW be the BEST way to proceed? In this case, could you provide a link/tutorial to use BOW with these specific descriptor/extactor? I've alredy check differents links provided in this forum. For example:
https://github.com/shackenberg/Minimal-Bag-of-Visual-Words-Image-Classifier
http://answers.opencv.org/question/17460/how-to-use-bag-of-words-example-with-brief/
http://answers.opencv.org/question/8677/image-comparison-with-a-database/#8686
http://answers.opencv.org/question/4861/how-to-use-bag-of-words-to-predict-an-image/
http://answers.opencv.org/question/11922/how-can-i-use-keypoints-descriptors-andor-matches/
Thanks a lot for all your kind suggestions. Andrea