In part 1 of this project, I created homographies to projectively warp images taken from the same location (but at different viewpoints) to align and create multi-image panoramas. In part 2, I automatically detected and matched important feature points from 1 image to another so one doesn't have to pick those points by hand.
Shoot and Digitize Images
Originals
Rectified Image
Panorama Images
What I learned
I learned how to warp images so it looks like they were part of the same projective plane. I also learned that aligning and blending these warped images is really hard.
Harris Interest Point Detector and Adaptive Non-Maximal Suppresion
Below are the pre and post suppresion possible corners detected using the Harris Interest Point Detector with a min distance of 5. Many points lie along edges or corners of objects, but many are also seemingly in the middle of a blank patch (possibly because the gradient of the sky looks like it could be a corner to the algorithm). I chose to keep many points after the suppresion and filter them out later with feature matching.
Before ANMS: 760 || After ANMS: 500
Before ANMS: 630 || After ANMS: 500
Before ANMS: 509 || After ANMS: 500
Feature Descriptor Extraction and Feature Matching
After feature matching and thresholding with Lowe's 1NN/2NN ratio, we get a set of possible feature matches. Most of these are correct, but there are a few that are wrong. The algorithm also picked out a lot of matches that are surprisingly difficult for a human to select (not the most obvious corners).
RANSAC Pairs
Above are the sets of 6 correspondence points that RANSAC chose. As you can see, most of the incorrect matches have been filtered out (though they occasionally show up).
Panorama Images
Below are the comparisons of the panoramas made from hand-picked points (left) and automatic feature point selection (right). Though there are sometimes some weird artifacts from poor blending, the automatic features overall do a better job at aligning the two images (especially of objects along the edges).
What I Learned
I learned about how, mathematically, one can detect corners in an image! I also learned a lot of simple tips that helped us determine the matching points in a relatively easy way. Sometimes you don't need a very complicated algorithm to achieve a really good result.