Panoramas All Around

This project is designed to explore the vision concepts of motion estimation and projection.  Additional graphics skills were developed in using the digital camera (a Canon Powershot), and manipulating photos in Photoshop.

In order to make a panoramic picture, the following steps are taken:  1)  take a series of planar photographs, 2) project the photographs onto a 'panoramic cylinder', 3) blend the photographs into one cohesive picture, 4) project the photographs onto a plane for viewing.  
Knowledge of projection relationships is used to project the images onto different viewing surfaces. This requires knowledge of the camera's focal length and radial distortion coefficients.  In this work those parameters were estimated.
 The blending step uses the Lucas-Kanade motion detection algorithm to determine the shift between two succesive photographs.  The photographs are blended smoothly by using a weighting function in the overlapping region.  In this case, a simple hat function was used for weighting.

The code was tested first on a series of four images.  The resulting panorama was the following:
campus
The first panorama was made with picture taken while the camera was mounted on a tripod with a rotating head.  These pictures should mesh well together, although we still see some flaws with the final image.
trees panorama

The following two panoramas were taken with free-hand camera rotation.  You can see a much larger variation in the offsets of the image.  Also, there is more ghosting, and a poorer overall final image.

marsh panorama
            On a board-walk

water panorama
            Peace on a beach


For your additional entertainment, here is what happens when you forget to rotate your pictures before making the panorama.  Its not really a panorama, but its cool none-the-less.
mistake