Face Morphing

Lucy Wang


1. Defining Correspondences & Computing the "Mid-way Face"

Before creating the full morphing series, let's try to find the "middle face" as our first step. The mid face contains 1/2 of color and shape from both images. The morphing steps are outlined below:

  1. Define correspondencies between images: I manually selected 44 points that can capture the face well from both images.
  2. Compute the average correspondencies between the two images by averaging the points. Then use Delaunay Triangulation method to find a triangulation from the averaged points.
  3. For each of the triangle, we compute an affine transformation matrix T from original points to mid points. Then use inverse morphing and bilinear interpolation to find the corresponding image pixel values from the original imagse and map then to the mid image. We repeat this procedure for both image, therefore creating a final mid image that's the average of the two original ones.

Here I show the defined correspondencies of my boyfriend's face and my face, as well as the mid-face.

Lucy
Yanchu
Mid-face
Lucy's correspondencies
Yanchu's correspondencies

2. The Morph Sequence

To make the morphing sequence dynamic, I created a total of 30 "mid-face" images with different dissolving fraction ranging from 0 (entirely image1) to 1 (entirely image 2). Each time, the pixel value of the "mid-face" image is (1 - fraction) * img1 + fraction * img2. Here's the gif image of my morph sequence.


3. The "Mean face" of a population

In this part, I created the mean face of the population of Danish Scientists from the pre-labeled dataset. It contains 37 face images each labeled with 58 points. To create the mean face, I averaged the shape and color of each face. Here's some sampled faces and the Mean face:

Sample Faces
Mean Population Face

Here we can see that, the mean face is a lot smoother than original faces, since each face's distinct features have been averaged out.

If we morph each of the faces into the mean population face, interesting results would happen. Here are some selected samples.


I also morphed my face into the mean face as well as mean face into my geometry. (The difference in size is due to alignment with the mean face.)

Morph My face into Mean Face
Morph Mean face into My Face

4. Caricatures

Since we have the mean face, we can also use it to make caricatures of our faces. Caricatures should capture and exaggerate the distinct features of our face. Therefore I calcualted dx = my_face - mean_face, then created caricatures with: caricature = mean_face + alpha * dx. (alpha > 1 or alpha < 0). I created two caricatures using differnet alpha:

alpha = 2
alpha = -1

We can clearly see that, since my face is round and my eyes are large, the caricature with alpha > 1 would enhance these features, while the caricature with alpha < 0 would make my face pointy and my eyes smaller.


5. Bells & Whistles

Check out our face-morphing music video of the students in our class! Here's my part of it. :D