Computational Photography, project 2

Severin Hacker, ETH/CMU

Problem description

The problem is to morph from one image to another by using special points given in both images (like eyes, mouth, nose, etc.). Sorry for the slow loading of the page, I started my work with full-sized images..

Algorithm

    Compute mean shape (mean of points)
    Compute triangulation of mean shape (delaunay-triangulation)
    Compute the affine image transformation matrices for each triangle and for both images
    for each point cross-dissolve the colors from the transformed images

Results

The algorithm is pretty fast, it takes only 8.4s for one morphed image (300x350). I used the MATLAB profiler for improving the performance.

the used triangulation

Here is a little movie:Face Morphing

Last year's mean image

This year's mean image (using only 5 pictures, those that I found in the right format)

From Severin to Mean

From Mean to Severin

Bells and Whistles (the fun stuff)

Caricatures

More Severin (frac=1.5)

Even More Severin (frac=2.0)

Less Severin (frac=-0.5)

(looks boring, doesn't it? ;-) )

Eigenfaces

Here are the first two eigenfaces, generated with SVD from the 5-sample space.

Reconstructing Severin with the top two eigenfaces (zeroing out the other 3 singular values) yields

This ugly picture shows that in the first two (singular values [426,50]) eigenfaces most of the information of a face is stored but not the individual characteristics.

Discussion

The discussion is left as an exercise to the interested reader.