Face Morphing

by Marisa Liang

Objective

  The objective of this project was to get familiar with the process of face morphing, which uses the corresponding points of two photos to create a triangulation, which is then used to warp the faces into a midway-face. This warping is done by finding the affine transformation from each triangle of the original photo to its respective triangle in the target photo (or, if we are making a video, the next step's photo). We then use the inverse of this transformation matrix to map our result pixel to a pixel from the original photo. By using this algorithm on the whole picture, we are able to create a morphed face that resembles two people at once!

The "Mid-Way Face"

  The "Mid-Way Face" is computed by warping both faces into the average shape, and then averaging the colors by cross-dissolving. Warping is done through the affine transformation algorithm described above.

    Marisa (Original)

    Rags (Original)

     Mid-Way Face

The Morph Sequence

  We compute our morph video using the same algorithm as described above. However, to make each specific frame, we warp our photos by giving a weight to each point, thus being able to show the "steps" from one face to another. In this case, because we want 45 separate photos, our weights would increase by 1/45 for each step.

Final Morph (Fast)

Final Morth (Slow)

"Mean Face" of a Population

  To compute the mean face of a population, I used the images from the FEI Database, and only examined the female faces. I computed the average face by warping all the female photos into the average face shape, then cross-dissolving all of these modified photos. The resulting average face is shown below, along with examples of female subjects warped with the average face shape. (Points for triangulation were collected from FEI database and were unpacked using this code.)

   Average Face

Original

Warped

Original

Warped

My face warped with average geometry

Average face warped with my geometry

Caricatures

 A caricature of my face was achieved by finding the difference in facial points from my face and the average face, and then adding this difference (multiplied by some constant) to my original face. This exaggerates the differences between my face and an average face, thus creating a caricature of myself. The two multipliers I used were 0.5 and 0.8.

    Original

    Caricature (0.5)

     Caricature (0.8)

Bells and Whistles (Changing Age)

 I decided to try and change my age by morphing my face with the average baby face. The algorithm for this is the same as for computing the mid-way face

Marisa

Average Baby

Appearance morph only (cross-dissolve)

Structure morph only

   Full (creepy) Morph!