CS194-26 Project 3: Face Morphing

This project explores face morphing techniques. I will produce a morphing animation of my face into someone else's face, compute the mean of a population of faces, and extrapolate from a population mean to create a caricature of myself.

Defining Correspondences

First, I need to manually mark pairs of corresponding points on two portraits.

Computing the "Mid-way Face"

Then, I define the function: morph(im1, im2, im1_pts, im2_pts, warp_frac, dissolve_frac) 

I get the Delaunay triangulation of the weighted average of the two set of points: 
    (im1_pts * (1 - warp_frac) + pts2 * warp_frac). 

Then, images im1 and im2 are warped into this intermediate shape configuration, and cross-dissolved according to dissolve_frac.

To obtain the "mid-way face", just set both warp_frac and dissolve_frac to be 0.5.

The Morph Sequence

Now, by increasing both warp_frac and dissolve_frac from 0 to 1, I can create a morph sequence from my face to Liuwen's face.

https://youtu.be/U9Tg1VERcds

The "Mean face" of a population

I use the IMM Face Database[1] to compute the average face shape of some groups of the people. Here are some eamples of the average faces.
Here are some examples of individual faces morphyed to the average face shape.

Morph my face into average faces

Caricatures: Extrapolating from the mean

Here are some caricatures of my face extrapolating from the population mean.

Bells and Whistles

Change gender of Liuwen by morphying her face into the average Chinese man face.

References:

[1] M. B. Stegmann, B. K. Ersbøll, and R. Larsen. FAME – a flexible appearance modelling environment. IEEE Trans. on Medical Imaging, 22(10):1319–1331, 2003