Matching doesn't work for stored data depending on descriptor
Hi there!
I also started a discussion here: http://stackoverflow.com/questions/26657597/different-matching-results-for-opencvs-descriptor-extractor-matcher-when-loadin
I'm trying to match an image against a set of stored keypoints and descriptors. As described in the above link I get different results for these two cases:
./save: compute keypoints and descriptors for both images, store kp and desc. of image 1 to my disk as yml, load these data again and use it for matching against image 2.
./load: load the stored keypoints and descriptors of image 1, compute it for image two and do the matching
If I am using SIFT and SURF there is no difference between the two cases, what is basicly what I would have expected, as I'm using in both cases the stored data.
But if I use ORB, BRISK or other descriptors, I get different matching results! So using the descriptor_extractor_matcher.cpp sample (with some edits for reading and writing) it works well for
- ./save HARRIS SURF BruteForce CrossCheckFilter roof.png roof_sepia.png 3
- ./load HARRIS SURF BruteForce CrossCheckFilter roof.png roof_sepia.png 3
and it doesnt work for
- ./save HARRIS ORB BruteForce CrossCheckFilter roof.png roof_sepia.png 3
- ./load HARRIS ORB BruteForce CrossCheckFilter roof.png roof_sepia.png 3
I don't have a clue whats the difference between the two cases, and why there it is in addition working for some descriptors... ?!
Thanks for your help!