Project 5

Starting images

Part 1

Recovering homographies

I used the above setup to get a least squares problem of the form Ah=0, then used the SVD of A to reach an approximation for h.

Rectification

Mosaics

To create the mosaics, I warped the left image into the right's projection. I used a horizontal linear mask to blend the overlapping region, so that we gradually use more less information from the left image and more from the right image as we move left to right. The mosaics are ordered in terms of how much overlap exists between the images; we can see that with less in common, the mosaics degrade in quality.

The first two mosaics are cropped to improve their look.

Part 2

Harris detection

ANMS

Feature matching

After feature matching, the points of interest are concentrated on the right side of the image, as this is where the matches lie.

Automatic (top) vs manual stitching

The results end up being almost the same, which impressive considering that for manual matching I hardcoded up to 20 points for the homography.

Biggest takeaway

It's pretty cool to understand how things like iPhone panoramas or CamScanner work. Also, I think the project was a good opportunity to sharpen my NumPy skills and think about how to implement data-intensive methods in an efficient way, which is a relevant skill outside of image processing specifically.