The goal of this project is to write a program that automatically stitches together a sequence of images into a seamless panorama. It depends on the feature detector from Project 1 to match key points in two images, and then runs these matches through a RANSAC algorithm to determine the alignment between each pair of images. Finally, these images are all smoothly blended together into the final result.
This was tested on several sets of panorama images. Each sequence exposed several weaknesses in the stitching software which had to be overcome. Below are the different test images used, along with a description of the challenges posed by each set and the way these were solved.
View Full-Sized ♦ View as Panorama
This was the test image sequence given as part of the assignment. It looks like it was meant to be stitched together with relatively few problems, and my panorama stitcher was quickly able to successfully stitch most of the panorama.
One image, however, was significantly brighter than its neighbors. While my feature detector was designed to be robust to illumination changes, it didn't handle this instance very well. The RANSAC algorithm was originally finding no inliers for any of the possible translations. To overcome this, I made the threshold less sensitive and hoped that the least-squares fit would compensate for sloppier matches. In general this seems to have worked pretty well, although there is some ghosting present in parts of the image.
The grass has also taken on a kind of swirly texture in places. This seems to be an artifact of the blending process. This could probably be addressed by using a better blending algorithm, such as pyramid blending.
View Full-Sized ♦ View as Panorama
This sequence proved more difficult than the first one. The main difficulty was that the ripples on the lake were moving. Since my feature matcher's ROC did at best slightly better than 50/50, the sheer volume of false matches compared to true matches caused problems for the RANSAC algorithm. Again, this was dealt with by allowing RANSAC to be a little bit more sloppy in accepting inliers. Even still, there are several places with some pretty significant ghosting artifacts.
View Full-Sized ♦ View as Panorama
I actually did two sequences of the same scene using the Kaidan head. While I was shooting the first one, I noticed I had forgotten to make sure the camera was correctly aligned. I decided to keep the sequence around, as it's a good example of how sensitive my panorama stitcher is to small amounts of translation. While the end result appears roughly the same as the previous one, it took some additional tweaks to successfully stitch this sequence. For this one I adjusted the feature match threshold to make it accept everything. I imagine that this added a lot more false matches, but there were enough positive matches that RANSAC was able to filter out the bad ones.
View Full-Sized ♦ View as Panorama
As would be expected, this sequence of images cause the most problems. In order to stitch these images together successfully, the feature matching had to be more sensitive than usual in order to throw away more matches. The end result still shows quite a bit of ghosting arising from incorrect alignment of the images and some rotation introduced by my not keeping the camera perfectly level.