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.
First, I need to manually mark pairs of corresponding points on two portraits.
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.
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.
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.
Here are some caricatures of my face extrapolating from the population mean.
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