CS 143 / Project 2 / Local Feature Matching


Algorithms

  1. get_interest_points.m

    I first blurred the image with a Gaussian filter and implemented the Harris corner detector. Then I applied colfilt on Har to do non max suppression and returned points whose Har value is greater than some threshold.

  2. get_features.m

    Basic SIFT implementation. In addition, I raised each element of the final feature vector to some power that is less than one. Also after normalization, I clamped gradients that are greater than 0.2 and renormalized the vector.

  3. match_features.m

    Basic ratio test implemented with KNN - Euclidean distance.




Evaluation on Notre Dame

Final Results

87 total good matches, 16 total bad matches (good matches %: 0.844660) with NNDR = 0.79




39 total good matches, 2 total bad matches (good matches %: 0.951220) with NNDR = 0.7

With a lower ratio test threshold, the algorithm only returns highly confident matches.




Experiements

  1. Basic Implementation

    71 total good matches, 33 total bad matches (good matches %: 0.682692)

  2. Applied a Gaussian blur before applying the Harris corner detector.

    82 total good matches, 25 total bad matches (good matches %: 0.766355) -> (Improved)

  3. In addition, I raised each element of the final feature vector to some power that is less than one. Also after normalization, I clamped gradients that are greater than 0.2 and renormalized the vector.

    87 total good matches, 16 total bad matches (good matches %: 0.844660) -> (Improved)





Tests

Below are some test visualizations on several image sets. It might be more effective to tune parameters for each image pair, but I chose to stick with the parameters that I used on the Notre Dame pair since it worked out well. Overall, my model does a pretty decent job matching up the interest points.




Notre Dame





House





Capricho Gaudi





Pantheon Paris






Episcopal Gaudi