Programming Project #4 (proj4)
15-463: Computational Photography

Photo Mosaics

Part I  Bell and Whistles I

Part II  Bell and Whistles II

By Ekapol Chuangsuwanich


PART I

Image Rectification

Starting with some basic stuff.


It's hard to hang a picture straight.

Easier done in MATLAB.

 

I wonder what he felt when he spilled that.


Don't forget to


Looking along the lines

Mosaics

Image blending.

I tried several image blending methods. Here are some examples.

Blending these 2 pictures to a mosaic.

Method 1: Average the overlapping part (Note the sky)

Method 2: Blend using distance transform (Note the trees are blurred)

Method 3: 2 level Laplacian blending (Sharper trees, but the some of the sky does not agree)

Complete Mosaics using 2 level Laplacian

Set 1. Horizontal. My Apartment rooftop


Big version here.

Set 2. Vertical. Once upon a tree (Incredibly hard to mark correspondences)


Big version here.

Set 3. Horizontal and Vertical. Roberts Engineering Hall



Big version here.


Bell and Whistles I

Fun with blending and mosaics

Matlab Advertisement

Being grateful of numerous Matlab's Out of Memory Error (of death) that popped up during the course of this project, I decided to paint a floor advertisement for them.


The high frequency component are added together without blending to makes lines and the cement textiles appear.

Space Paradox

Q: 3 Tests tomorrow what should I do?

A: Study 3 times as fast

Using a larger smoothing window, I got this pretty neat effect.

Time Paradox


Big version here.

Cylindrical Projection

Big version here. Note that the trash box on the right is no longer strangely long.




PART II

Picture A and B to be matched

Find ALL corners. Throw away the ones in the 20 pixel border of the pictures. 4391 points found.

Use the Adaptive Non-Maximal Suppression with c_robust = 0.9 to select 500 points. The suppression radius is found to be around 16 pixels.

Use the 500 points to for Harris descriptors. A 40x40 window sub sample to 8x8 is selected around each point. Here is an example of a descriptor.

The red point correspond to the corner detected. The yellow dots are the sampled points for that descriptor.

Find matches between descriptors. If the ratio between the 1st nearest/ 2nd nearest is larger than 0.6, discard those points.

Points before matching (red and blue): 500. Points after matching (blue): 210

RANSAC is performed on the remaining matches, throwing away outliers. The tolerance ratio is 1 pixel disagreement.

Points after RANSAC (green): 75

Use the remaining points to create a mosaic.

 A new mosaics using this automate algorithm.

Big version here.


Bell and Whistles II

Rotation Invariant descriptor

Use the direction of the corner to change the orientation of the sampling square for the descriptor.

An example of the rotation invariant descriptor. Red is the corner. Blue is the orientation. Yellow are the sample points. Notice how the square is now tilted

This new descriptor overcomes the problem when the input image is rotated.

For example

Picture A. Picture B (rotated by 30 degrees)

Using the original descriptor, RANSAC does not converge.

Using the new descriptor, RANSAC is able to find 27 matches.

Output

 

This project was fun, but it takes a lot of time as well. Time for me to work on my other courses.