Best Approach to key point /descriptor comparison
I have over 200,000 images and have written some code to find one image (which can be different in scale, color, etc) in the group of 200,000. I generate SURF key points and descriptors. I then save these to a file. When I want to find an image in this group, I generate the SURF key points and descriptors for the target image and scan through all 20000 key point/descriptor files and do a comparison of the target against each file looking for the best match. Assuming multithreading, etc. I can reduce this process down to about 5-8 per target image. Would anyone recommend a better strategy for doing this? Would bag of words approach work? As I understand BOW, you have categories which you train. I don't think this would be applicable in this case.
IMHO BOW is used for saying of a image is containing an object or not. I have tried to do something similar here: detecting an object (not a specific one, so a generic one) that may be rotated in the whole 3d space. What I have done is a filtering on keypoints based on the number of matches, but matching each image, you will get some best matches in that image and that may not be the real one, so I am thinking to add some constraint on the distance, too...
Ok, that matches my understanding as well.