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:
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.
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.
On a board-walk
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.