The $\frac{d_1}{d_2}<0.6$ gives a large number of false matches and it assumes the nearest neighbour is a correct match.

Anybody knows any good method to reduce number of false matches or filter them ?

Can we use k-NN matches instead of $\frac{d_1}{d_2}<0.6$ ratio for matching the SIFT features and then choose the best of k points by:

  1. Changing the Euclidean distance by considering the spatial neighbourhood, or
  2. Spatial neighbourhood matching.

Anybody ever tried something like that? Or any paper related?


Generally, one wouldn't gain much from such parameter tuning or workarounds. The accuracy heavily depends on the image features that you are using, together with KNN algorithm. If you are using an approximate ANN, try using FLANN. In FLANN, increasing the number of trees and the iterations contribute to the accuracy.

To improve the matching accuracy, enhancements over descriptors are also possible. Zisserman proposes RootSift, which is very easy to implement and enhances SIFT with an intuitive modification:


There are also other good details in this paper.

Other than that, if you are already using BoW, you end up with sparse features. For a more meaningful representation, try VLAD (http://www.vlfeat.org/api/vlad.html). Yet, a quantization through a vocabulary tree as in Nister and Stewinius (http://citeseerx.ist.psu.edu/viewdoc/summary?doi= would help.

Imposing spatial neighborhoods isn't straightforward, but can be done. However, I recommend you to first try the aforementioned methods with post processing (geometric verification). A nice one is found here: http://web.stanford.edu/~sstsai/selected_papers/2010_GeometricReranking.pdf


  • $\begingroup$ I think we have already used the best features we can, i.e, SIFT... its difficult to get any other image feature which can further cross check matches by SIFT. So was thinking of using Spatial Neighborhood consistency and keypoints neighborhood to filter the matches. By KNN I just meant to trigger an idea as alternative to erroneous d1/d2<0.6 criteria. $\endgroup$ Mar 6 '14 at 15:07
  • $\begingroup$ RootSift is better and comes almost at no cost. Check out the paper. $\endgroup$ Mar 6 '14 at 15:07
  • $\begingroup$ I am already using ROOT SIFT. The matches are still faulty to a large extent and we need to filter. Even though we use BOW for classification, a large number of faulty matches can lead to poor accuracy. An example of spatial neighborhood would be the idea of using hough transform for pose detection as Lowe mentioned. $\endgroup$ Mar 6 '14 at 15:10
  • $\begingroup$ Check my updated answer. $\endgroup$ Oct 3 '14 at 11:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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