In this project I implemented a local feature matching algorithm which uses harris corener derector to find interest points and SIFT descriptor to describe local features. Except from the baseline implementation, I detected interest points at different scales and used laplacian of gaussian to find scale-invariant points.I also added a simple verification step to filter out outliers.
The detection accuracy on the Notre Dame picture is 99% percent when test ratio is 0.7. We can see that the only mistake point is actually a very close match.
I used harris coner detector as the base corner detector. As expirimented in the prject, for notre dame picture, if number of corners detected is less than 500, the result is poor because most strong corners are symmetric parts of the building. So there will be many similar points in the image.
To make detected interest points scale-invariant, I used a simplified version of harris-lapalcian detector, which searches for scale space extrema of a scale-normalized Laplacian-of-Gaussian. I used 8 scale levels, each is increased by 1.4 and 8 local scale levels, each is increased by 0.7.
My implementation of SIFT descriptor mostly follows David Lowe's paper Distinctive image features from scale-invariant keypoints.The following is my steps of computing SIFT feature.
I used ratio test to find the match between two images. This method works fine but will allow many outliers exist. Setting the threshold higher will have move matches but also more wrong matches. Setting the threshold lower will allow less wrong matches, but the total number of matches is also reduced. I used an extra verification step to filter out most of the outliers.
In the simple verification step, for every matched points, I calculated the averge pixel distance between two matched points near this pixel. If the distance of this point is 1.5 greater than the averge distance, consider this point as a wrong match.
The algorithm works fine with object scaling and rotation. But often has a poor result on images with multiple similar objects or with strong symmetric. Another shortcoming is that in order to have a optimal result, we have to change parameters like feature width, corner threshold and ratio test threshold. This work is time consuming and is not easy to do for people with limited knowledge about the algorithm.