In this project we warp and stich together sets of images to create a panorama or mosaic. In part A we select correspondence points by hand. In part B we find these correspondence points automatically. We use the following steps:
Before creating the full mosaic, we test our homography recovery and image warping by rectifying images. For this we pick 4 points in our image (need 4 correspondences for a projective transformation) and map them to a rectangular shape such that we get a frontal-parallel view.
Hut Art
Hut Art Rectified
Mural
Mural Rectified
Turtle Art
Turtle Art Rectified
City Painting
City Painting Rectified
Now we stich together image sets. Each picture in the set is taken from the same point of view, but with different viewing directions and overalapping fields of view. Because they have the same center of projection, we can recover the homography that encodes a projective transformation. This allows us to map all images to the same plane, so we can then align and blend to get a final image. I used laplacian blending to blend the images together. Using this technique we get the following results:
Left
Middle
Right
Left
Middle
Right
Blended Mosaic
Cropped (By Hand)
Left
Middle
Right
Left
Middle
Right
Blended Mosaic
Cropped (By Hand)
Left
Middle
Right
Left
Middle
Right
Blended Mosaic
Cropped (By Hand)
In this section we create mosaics automatically as described above. We go through one example photo to demonstrate the steps:
Left Garden
Middle Garden
Left Garden Harris Corners
Middle Garden Harris Corners
Left Garden ANMS points
Middle Garden ANMS points
Left Garden points with matching features
Middle Garden points with matching features
Left Garden RANSAC points
Middle Garden RANSAC points
Hand Selected Garden Pano
Fully Automatic Garden Pano
Hand Selected Church Pano
Fully Automatic Church Pano
Hand Selected Living Room Pano
Fully Automatic Living Room Pano
In order to detect corners at different scales I create an image pyramid of each photo. I then run the corner detection through feature mapping steps separately on each pyramid level. I then take the set of all points found at all levels and run RANSAC on the full-size image to get only valid correspondences.
This allowed us to find more valid correspondences, and therefore get slightly better homographies. I demonstrate the difference below:
Edge of Grass Not Aligned with Single-Scale
Aligned with Multi-Scale