CS180 Project 3: Face Morphing
Name: Shuai Victor Zhou
SID: 3035912996
Overview
In this project, we use correspondences (corresponding points) between faces to create morphings between them. With these morphings, we can also calculate averages of a population to find mapping of faces to the population average. Furthermore, caricatures of an individual can be generated by extrapolated from the population average.
Defining Correspondences
We first identify correspondences for images and store them within a .json file. With these points, we generate the Delaunay triangulations of the two images. Plotting the points on top of the images gives us the following:
Computing the “Mid-Way Face”
To find the “mid-way face,” we take each of the pairs of correspondences and average their positions. We then find the matrix that maps from each of the original simplices to the average simplices and then invert the matrix to find the reverse map. Using this new reverse map, we’re able to generate the mapping of each of the two photos into their average.
The Morph Sequence
In this part, we generate the sequence of an im1 morphing into an im2. This is related to how we performed the mid-way face in the previous part, with the mid-way face being when our dissolve fraction and warp fraction are both 1/2. The dissolve fraction is how much of the combined image is im1 and how much of it is im2, and the warp fraction is how close the “average” point that we’re mapping to is to im1 vs im2. Effectively, both of these should be the same value, and it will range from 0 to 1, with 0 being when our image is just im1 and 1 being when our image is just im2. For this project, we generate 60 total frames to transition from George Clooney to Kanye West, and when we combine these images into a .gif file, we get this result.
The “Mean Face” of a Population
We compute the “mean face” (average face) of a population by using the Danes dataset of annotated faces. We take the average location of all the points to find where the correspondences are for the “average” person. With these new points, we can map each of the faces in the dataset to this “average” face. Below are some examples.
By adding up all of these mapped faces and averaging them, we produce the average face of this population.
We can also map my face to the average geometry and the average face to my geometry.
Caricatures: Extrapolating from the Mean
We can produce caricatures of ourselves by extrapolating from the mean. This is done by mapping a person’s face to the following target points:
When α is 0, we just have our regular face. Below are some results using different α values.
Bells & Whistles: Myself Through the Years (MV)
Here is a music video of myself morphing throughout the years.
Bells & Whistles: Face-Morphing Music Video
Here is a music video of myself morphing with my peers from CS 180.