Matching doesn't work for stored data depending on descriptor

asked 2014-11-04 05:19:08 -0500

alti gravatar image

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:

  1. ./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.

  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... ?!

image description

Thanks for your help!

edit retag flag offensive close merge delete