CS194 Project 6: Image Mosaics and Autostitching

Jacky Tian

Overview

I started with some images, some from online, and some I took with my iPhone. With some images that were too high in quality, I reduced the quality or pixel density by taking every other pixel, which led to resulting images being slightly pixelated, but the runtime being significantly faster. With each image, I computed the transformation of self-chosen points on that image, into the dimensions of another. Then, I computed the homography, a 3x3 matrix that explains this transformation, using least squares. Then, I warped each point on the original image to the corresponding tranformed point in the homography. Essentially, images can be warped even after they are taken, giving off the perception of capturing that image at a different angle. Furthermore, by warping multiple images into one another, they can be stitched together into a panorama.

Warp

Taking each starting image, I chose 4 points and casted them to be where I would want on a resulting image. As a result, I was able to create images with the perception of being at a different angle. However, this does contort the other parts of the image, as seen below.

Mosaic

By warping multiple images in the same dimensions, using the corresponding points, its possible to actually create mosaics of images, essentially overlayed panoramas. The first step of choosing points and matching them across images can be done automatically through selecting harris corners, which are essentially prominent features/corners in the images, and then matching the points across the two images using feature matching. Then, with a set of matched points, the RANSAC algorithm of randomly selecting matches and iteratively estimate parameters in order to compute a homography. The homography is then applied to the image warping, and then blending it together. The harris points are shown, along with the resulting images side by side.

Apartments:
Rooftop:
City:
Summary

I learned that with image warping, its actually to contort anything into any dimension. Furthermore, if warping is possible in 2 dimensions, there is nothing stopping us from warping in 3 dimensions as well. Essentially, this could be extremely useful for things like modeling, where images of a building could be used in conjunction to actually create a building. Furthermore, with automatic stitching as a possibility, although it may take extremely long in terms of computation, this could take out the human error in selecting points associated with modeling and user design.