TL;DR: I don't understand how invariant FFT-based image-registration techniques are to object alterations (scratches, marks etc.) in comparison to SIFT-features.
I want to build kind of a feature-matching-like system to detect and compare objects from the same production line. The objects have a granular surface structure, therefore matching surface-features already yields good results.
Here are two sample images of objects I would try to identify:
The extracted features should be invariant against translation, rotation, illumination and partial object-alterations, because one use-case could be failure analysis.
Until now I have realized the matching-process by using SIFT or ORB and matching the descriptors of a query-image against a Database of previously extracted descriptors. If I then iterate over the whole database and count the number of good features (using ratio-test, RANSAC or alike) I can find the matching object by searching for the maximum number of good features.
However this process takes a long time due to the high count of descriptors. That's why I looked into techniques that would generate a hash-string or some comparable vector. I found this paper which seems to accomplish a very similar goal to mine. It's based on this paper, which seems to be kind of reference-paper in the field of image registration. There are some implementations available for the latter, however they always solve the problem of rotated/translated template matching (and here).
Finding out how to do feature extraction with these libraries (as in [1]) would be possible (I guess), but I don't understand whether these processes are also invariant to object-alterations! How would the extracted fft-features look, if I alter the object (scratches, marks, dents etc.)? Would I still be able to match them properly?
Another idea would be to extend the existing feature-matching with Bag of Features to speed up the matching process. Would this be more suitable? Is there another, "better" approach that I haven't considered yet?