Face Morphing:

David Tseng

Overview

The goal of the project is to implement some face morphing techniques. This is generally done by first selecting keypoints images, and then computing the Delaunay Triangulation on the keypoints. Afterwards, transformations can be done between two corresponding triangles in two images.

Morphing Between David's and Mitch McConnell's Faces

For this part, I decided between my face and Mitch McConnell's face. The website I used to convert the image sequence to a gif seems to use some compression, so several of the transitions may have been affected by the compression.

David (Me) Mitch (Not me)
Midway face Morph sequence

Computing the mean face from the Danes dataset

We can compute the mean face from the Danes dataset by first averaging the keypoints from the each face in the dataset, warp each individual image into the average keypoint set, and then average these images. For this part, I decided to use the images of front-facing people who were smiling. Here are some examples of images from the Danes dataset warped onto the average shape.

The resulting averaged image is shown below. The average image looks male because the majority of the people from the dataset were male.
Smiley face

Warping the mean face and my face

I selected keypoints on the mean face and my own face. The left image below is my face warped onto the average structure, and the right image is the average image warped onto my facial structure. With more keypoints, the warping would look more natural. However, with the keypoints I have selected, we can see that warping my face onto the mean structure made my eyes larger (haha) and warping the mean face onto my structure made the eyes smaller.

My face warped onto mean points Mean face warped onto my points

Caricature

To make a caricature of myself, I extrapolated myself from the Danish population mean. I used the following equation: caricature = meanFace + alpha * (myFace - meanFace). Since the most significant difference between my image and the average Danish face image is the color, as I increased alpha, the caricature had brighter colors. For example, my red dress shirt became brighter red.

alpha=1.1 alpha=1.5 alpha=1.75 alpha=2.0

Bells and Whistles: Making my image more female

In order to make my face more female, I took the average of all Danish women in the dataset. This produced the following image:

Smiley face
I then selected keypoints on my face and the average Danish female face, and did some warping.

Modifying only facial keypoints

The first set of pictures is slowly warping my facial shape to be closer to the average Danish female facial shape. For each keypoint in the resulting point, I used the equation: result_point = david_point + alpha * (female_point - david_point). I then warped my face onto the resulting keypoints.

alpha=0 alpha=0.25 alpha=0.5 alpha=0.75 alpha=1

Modifying only facial color

The next set of pictures involves slowly warping changing my facial color to be closer to the average Danish female facial color. I warped the average Danish female face into my facial structure, and then the result is david + alpha * (female - david).

alpha=0 alpha=0.25 alpha=0.5 alpha=0.75 alpha=1

Modifying both color and shape

Finally, I warped both my face and color to be slowly become closer to the average Danish female. Here are the results.

alpha=0 alpha=0.25 alpha=0.5 alpha=0.75 alpha=1