Project 5: Face Morphing
cs195-g: Computational Photography Patrick Doran
Spring 2010 pdoran
Directory
Algorithm
High level description of the algorithm.
1 Input: image A and image B that are the same size with (22) appropriately marked feature points
2 For each (warp ratio value and cross dissolve value, ie 0 to 1)
3 Linearly interpolate the points from A to B based on the warp ratio value. Subtract ptsA from ptsAB and subtract ptsB from ptsAB to get their offsets.
4 Perform a poisson 'image' fill using the known offsets as initial value. Add the resulting 'image' (its actually the offsets) to their original positions and truncate the output so it cannot go past the edges. This produces a smooth warping of the image.
5 Look up the pixel values in A and B based on the new indexes. Add them together based on the cross dissolve value. This prdouces a smooth dissolve.
General Comments

This algorithm works fairly well at morphing once face to another. It fails most egregiously the two faces are facing opposite directions or have entirely different scales. In my results, all images have been scaled to be 300x400, so most faces are distorted. Also, the images chosen represent the results of transition from color to black and white as well as from painting to photograph. The results for those are quite interesting.

Results
I chose to create a 60 frame transition for each of the particpants to the next participant and put them in a jpeg sequence (to be animated). The result is shown below.

The "Mean" Student
Data

Bells and Whistles

Caricatures are by performing face morphs to target caricature points. These points are: Image Pts + Scale*(Image Pts-Mean Pts) where scale in this case is 3.