I extracted features from an image using SIFT and SURF. Then I applied few transforms on the image and again calculated the features. While matching the features, I noticed that there are some erroneous matches. For example, if using image of a face, some points on face are matched with points not on face in the transformed image.

Is there a way to detect those false positives ?


1 Answer 1


A simple way to reduce the number of erroneous matches is to tweak matching parameters, including trying different matching strategies. If you are using a simple distance threshold to determine what is a match, you can tighten that. Alternatively, you can use the ratio test (used in David Lowe's demo SIFT implementation) to eliminate ambiguous matches. There you can tightened both the distance threshold and the ratio threshold.

Unfortunately, the world is not perfect, so even if you tweak every parameter, you will still have some false matches. Then you need to use additional information and/or make additional assumptions about your problem. For example, you can assume that the images are related by a rigid transformation (e. g. affine). You can estimate the parameters of this transformation from your matches using an algorithm like RANSAC. Then you can reject the matches that do not fit this transformation as erroneous.

Here is an example of removing erroneous matches by assuming a similarity transformation, using the Computer Vision System Toolbox for MATLAB.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.