Prokudin Gorskii Filters and Frequencies Face Morphing
CS194-26: Project 4

(Auto) Stitching and Photo Mosaics

Norman Karr | nkarr11@berkeley.edu

Photos

To create stitches and homographies, we want photo groups that have either one of two properties: the photographs in each group are all take from the same position or all the photographs are of a flat plane. With this in mind, I went out with my Panasonic Lumix Camera to capture some photographs to stitch.

Homography

Our primary goal will be to project each image onto the same plane. To do this, we need to find homographies between photos. The steps we will take will be to first define corresponding key points in the images and calculate the homography matrix relating the two key points. To identify a unique homography, we need at least 4 points but if we use more than 4, we can apply least squares to find a generally good homography.

Example Scenario where least squares would be applied because there are 8 corresponding points in the two images

Image Rectification

With the ability to recover a homography that warps one set of key points into another set of key points, we can perform a cool feature called image rectification. The feature is as follows: if we there is something square or rectangular object in a photo, we can warp the photo such that the object will be a square or rectangle in the warped image. This is done by recovering the homography matrix that maps the corners of the object to the corners of a square. To specifc square I compare the image to has side lengths equal to the average width and height of the bounding box created by the selected four corners. Shown below are two examples of rectification.

Original

Original Labels with Key Points

Rectified

Original

Original Labeled with Key Points

Rectified

Mosaics

With the powerful tool of warping at our fingertips, we can now begin to create image mosaics. The general idea is the same as in image rectification except instead of warping a square object to be a square, we warp objects in image to have the same oriention and perspective as the same object in a second image. The first method I tried was warping one image to the plane of the second image. Pictured below was the first result I got:

The first attempt mosaic is actually not bad; the images are actually pretty well aligned. Unfortunately, the color change is not totally smooth so there are some obvious edges. The result above simply averaged the color of the two images in the overlap region. As a result, I wanted to come up with a better blending method.

Blending

As we saw above, we need a more robust approach to blend to images together than just averaging the overlap region. I came up with a blending method that made a gradually decreasing mask in the overlap region. The masks I create are pictured below:

Overlap Region Mask

Left Image Mask

Right Image Mask

The resultant image is calculated as follows:
Blended_Image = left_image_mask * left_image + right_image_mask * right_image

Pictured above is the result of the new blending method. There are no more obvious edges but there are however some slightly unnatural shadows. In the future, I would like to try and implement 2-level blending where I blend the laplacian stacks of the two images independently. 

Alternate Mosaic

In the first mosaics, I warped one image into the plane of another image which resulted in a asymmetric mosaic. I wanted to create a more symmetric mosaic by warping the two images to a "mean" plane between the two images. I did this by calculating the mean key points of the two sets of key points and then warping both images into the plane of the mean key points. An example result is pictured below:

Image Collection