Project 3: Face Morphing

Alex Yang



Part 1: Defining Correspondences

For this project, I decided to morph my face on to George Clooney's. I choose 44 correspondence points outlining basic facial features and 4 correspondence points for the four corners of the image.

Alex (original)
Ordered correspondence points
Correspondences on face
Delaunay Triangulation
George (original)
Ordered correspondence points
Correspondences on face
Delaunay Triangulation

Part 2: Computing the "Mid-way Face"

To compute the mid-way face, I first found the average shape of our faces by averaging the two sets of correspondence points. Then, I warped both faces to the average shape and cross-dissolved the colors of both images together. To get appropriate pixels from the original images into the morphed image, I use inverse warping with the affine transformation matrices of each original shape to the average shape.

Alex
Mid-way face
George
Mid-way shape
Mid-way face
Mid-way face with triangulation

Part 3: The Morph Sequence

To create a morph sequence, a sliding parameter alpha from [0, 1] is used to create the intermediate faces. Alpha is a proportion of how much the original images' shapes and colors are weighted in the intermediate face. Specifically, imm_face = (1 - alpha) * im1 + alpha * im2. For example, the mid-way face above is an intermediate face with alpha=0.5. The sequence has 45 frames, and each frame is 1/30 seconds.

Morph sequence (ping-ponged)

Part 4: The "Mean Face" of a Population

I choose the neutral expression faces of the IMM Face Database from the Technical University of Denmark as my population. From the pre-annotated images, I computed the average face shape of the population, morphed each image in the population into the average (a few are shown below), and computed the average face of the population.

Average shape
Average face

Below are examples of warping the faces into the average shape of the population. The top row are the original images and the bottom row are the face warped into the average shape.

01-1m
08-1f
29-1m
35-1f
01-1m warped
08-1f warped
29-1m warped
35-1f warped

Here is my face warped into the average shape, and the average face of the population warped into my face geometry.

My face (padded)
My face into average Dane shape
Average Dane into my face shape
Average Dane face

Part 5: Caricatures: Extrapolating from the Mean

For this part, I used just the average shape of the males in the dataset to produce better looking caricatures. The caricature's shape is a weighted sum of my face's shape and the average male's shape. Specifically, caricature_pts = (1 - alpha) * alex_pts + alpha * avg_male_pts. A positive alpha results in an image with geometry more similar to the average Dane male's. Likewise, a negative alpha results in an image with geometry further from the average Dane male's, and a face shape that accentuates features of my face that deviate from the average Dane male's face.

Average Dane face
Average Dane male face
Caricature (alpha=-1)
Alex (original)
Caricature (alpha=1.5)

Part 6: Bells and Whistles

I participated in the class face-morphing music video. My face is #21 (Alex Yang). Here is my face being morphed into the person after me (Zipeng Qin).

Face 21 to Face 22

The full music video can be found on YouTube here. Video also shown below: