CS194-26 Project 4 - Yin Deng

Part 1: Image Warping and Mosaicing

Part 1.1: Shoot and digitize pictures

door_1
door_2
window_1
window_2
desk_1
desk_2
desk_3
hallway
bathroom

Part 1.2: Recover homographies

We first define correspondence between two images manually as shown by the red dots.

door_1_marked
door_2_marked

We then follow instruction in this link and solve the following system of equations using least squares:

equation

Part 1.3: Warp the images

We show the original images on the left and the rectified images on the right.

hallway
hallway_rectified
bathroom
bathroom

Part 1.4: Blend images into a mosaic

We show original images on the first row and blended image on the second row.

Example 1: Door

door_1
door_2
door

Example 2: Window

window_1
window_2
window

Example 3: Desk

desk_1
desk_2
desk_3
window

Part 1.5: Tell us what you've learned

It was very interesting to learn how panorama are made!

Part 2: Feature Matching and Autostitching

Original image without black padding:

interest_point

Part 2.1: Interest Point Detection

By running the Harris corner detector, we detect corners almost all over the image.

interest_point

Part 2.2: Adaptive Non-Maximal Suppression

By running ANMS, we significantly reduce the number of corners detected, and these corners are distributed evenly across the image.

anms

Part 2.3: Feature Descriptor

Around each detected corner, find a 40x40 patch around it, apply a Gaussian filter, and downsample it to an 8x8 feature descriptor.

Part 2.4: Feature Matching

Using the ratio between the error of nearest neighbor and the error of second nearest neighbor to match features across two images. We choose 0.2 as our threshold.

door_1_feature_match
door_2_feature_match

Part 2.5: RANSAC

Apply RANSAC to compute a robust homography estimate.

Part 2.6: Examples

We show manual mosaic on the left and automatic mosaic on the right. As well can see, automatic mosaic is more accurate for the first and third scene, but it is a bit off for the second scene.

door_blended
door_blended_auto
window_blended
window_blended_auto
desk_blended
desk_blended_auto

Part 2.7: What have you learned?

It's really cool to implement autostitching!