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.