CS 280A Project 3

Face Morphing

Yarden Goraly

In this project I have fun with morphing faces. I do this through defining correspondences for different images and performing different morphs based on these points. To start I created a function to morph the faces of two images with parameters to choose how much of each face should appear. Later I experimented with a face dataset to create an average face and some extra warps associated with it.

Part 1: Defining Correspondences

In this part I defined correspondences for two images and computed the Delaunay triangulation for each one:

church church

Part 2: Computing the "Mid-way Face"

In this part I computed the midway face between image 1 and image 2. This process involved first computing the average triangulation for both images. I implemented an affine transformation function to compute the transform from the image trimeshes to the midpoint mesh. Then for each triangle, I obtain the desired colors from the original images based on the inverse warp of a polygon from the midpoint mesh. Then I used interpolation to smoothy determine the desired colors. Finally I averaged the desired colors from each original image.

Original image 1:

church

Original image 2:

church

Midway face:

church

While the face morph itself looks good, there are some artifacts with other parts of the image, such as Mahler's suit. This is because I only took correspondences for the face. To improve this I would take more correspondences from other parts of the image or crop the original images.

Part 3: The Morph Sequence

In this part I did the steps from the previous part, but this time in a video form that morphs from the first original image to the second.

Gif of morph:

church

Part 4: The "Mean face" of a population

In this part I morphed all the faces in the Danes dataset into one average face.

Here are some of the intermediate faces that are warped to the average shape:

church church church church

Average face:

church

My face warped into average face geometry:

church

Average face warped into my face's geometry:

church

Part 5: Caricatures: Extrapolating from the mean

In this part, I created a caricature of my face using the following method: I did a weighted average of the correspondence points in my face and the average face generated in the previous part. My hyperparameter is alpha, and I multiplied the points for the average image by alpha and the points for my image by (1 - alpha). Then I set alpha to -1 and 2 to extrapolate features.

Caricature with alpha = -1:

church

Caricature with alpha = 2:

church

Bells and Whistles:

I experimented with changing how the picture of my face looks using an average face of just the females in the Danes dataset. I created three pictures. The first is my face warped into the average female face geometry. The second favors the appearance of the average female face on my face's geometry. The last picture combines both of these.

church church church