CS 194-26: Project 3

Face Morphing

Imaani Choudhuri
Defining Correspondences

The first step for face morphing is defining correspondences between facial features in the start and end images. In order to do this, I first used some scripts given in the last project to rotate and scale the images to similar sizes. Next, I needed to select a handful of points to create a triangulation. I created a tool that would let me pick points on an image and put them into a .json file. Then these points were averaged and a Delaunay triangulation was computed on the mean set of points. Here I am morphing between two members of my favorite music group, Kim Lip and Go Won.

hover to enlarge

Start source image (Kim Lip)

End source image (Go Won)

Points selected + mean triangulation

Points selected + mean triangulation

Midway Image

The mid-way image between these two images is generated by warping both images into the mean triangulation. Doing this warp was kind of tricky: first, the area of each triangle had to be determined on the mean image and also the original image. Using an inverse affine transformation, the mean image triangle area could interpolate color values from the original image triangle area, creating the warp.

Midway Image

The Morph Sequence

To complete the morph, I create an animation by creating a partial warp of the first image to the second that gets progressively larger for each frame. Eventually the first image is completely warped into the second, accompanying a cross-dissolve of the colors.

Morph Video

The "Mean Face" of a Population

In this part, I used a dataset of faces (Danish computer scientists) and computed the mean smiling face. This was done by averaging the set of points that labeled features for every face in the dataset, and then warping each face to that average shape. Then, averaging the warped faces into a single image. Here are some examples of faces being warped into the mean image.

Average face

My face

Average face warped into my geometry

My face warped into the average face geometry

Caricatures: Extrapolating from the Mean

In this part, I produce a caricature of my face by extrapolating from the previous smiling mean. We can see that this caricature exaggerates the differences between the mean and my face, making my face even more rectangular and large. When extrapolating in the opposite direction, the caricature exaggerates the differences between the mean and my face, making it even rounder and smaller.

Caricature (alpha = 0.7)

Caricature (alpha = -1.7)

Bells and Whistles

For this part, I created a morph of my face into an average French woman face that I found online. The result is a bit scary since it warps my smiling face into a neutral face as well as shifting the overall geometry.

My source face

French average face

Warp shape only - My face warped into the french shape

Warp appearance only - French face warped into my shape

Morph video

thanks for checking out my submission! :D