Project 2: Panorama Stitching
Cameron Lee
CSE 576
4/29/2008
This project used two methods for stitching photos. One was the traditional RANSAC and the other was and iterative search I call Window Reduction Method (WRM). In the process of developing the stitching algorithm it became apparent that the feature detection algorithms must be robust. WRM was created to help reduce avoid gross registrations errors from false global maxima counts in the RANSAC solution. These false maxima are often the product of repeating patterns such as brick and other periodic features. This problem is exacerbated when the feature detector performance is poor.
WRM is a recursive method of pruning your feature matches by reducing your match variation range. The process continues to reduce the match variation limits and until the desired range is obtained. Unlike RANSAC, WRM can accept an initial condition which can help reduce obvious false positive matches. This is helpful when the user knows basic information about how the images should align.
The algorithm steps are as follows:
The final center position of the feature range is the translation implied by the set of matches.
Results

Test Sequence (RANSAC)

Kalaidan (WRM)

Kalaidan (RANSAC)

Hand Held Series (WRM)

Hand Held Series (RANSAC)
Synopsis
In general the stitching software worked well when the feature set was good and the camera properties were well defined. The alignment, warping and blending were straight forward and created smooth panoramas. Conversly, operation on non-ideal feature sets and distorted images was quite poor.
The stitching operation was sensitive to poor feature detection and matching. In cases where feature sets were not ideal the alignment algorithms suffered. The blending operation designed to reduce the visibility of small errors did not alleviate these problems, instead the blending produced ghosts. Camera parameters were also more difficult to obtain than solicited. I used a Camera Calibration Toolbox for Matlab to find the field of view and radial distortion of my camera. The results were not outstanding, but neither, was the calibration target I printed.
The stitching algorithm was a thorough test of my feature detections software. I revisited the code several times in an attempt to improve feature detection. I found problems with my Harris functions that caused the funcion to detect false Harris maxima. After fixing this I found the stitching code performed worse. It appears that sometimes more features are a benefitial, regardless if their location corresponds with Harris maxima.