CS194-26: Image Manipulation and Computational Photography

Project 3: Face Morphing

Wallace Lim



Overview

In this project, I explored the various capabilities of morphing faces between each other. In order to perform a proper morph, the images would need to be matched to a fixed shape defined by a few key points and then perform cross dissolve (averaging the color). I also explored the significance of an average face in a population and how to make a caricature, including accentuating the average face's features an image of myself.

Defining Correspondences

I defined 78 key points in my two images between myself and my friend. These points were chosn to help group areas of important facial features together such that in triangulation, those groups are morphed between each other. All these key points needed to be properly ordered between the two images in order to make the morphing possible.

Wallace
Wallace Correspondences
Wallace Triangulation
Wallace
Adam Correspondences
Adam Triangulation

Computing the "Mid-way Face"

Next, to create the Mid-way face. Here at the series of steps that I followed.

Here are the results of the average face between my friend and I.

Wallace
Average
Adam

The Morph Sequence

The morph sequence is a 46 frames gif that shows a weighted transition between my image to my friends. For each time frame, instead of weighting each image equally like above, I calculated the corresponding weighted average of the shapes and weighted cross dissolve the pixel color. Therefore, frame 23 should be the average face as shown above. All these frames are put together to form the gif below.

Wallace
Morph Sequence
Adam

The "Mean face" of a population

Using the Danes dataset, I calculated what the average Danish individual would look like. In order to accomplish this, similar steps were followed like above to compute the average shape (average of all the key points) and each image was warped to the average shape. From there, each image was equally weighted together to achieve our final result.

Average Danish Individual

Here are some of the people used in the the population and their face converted to the average shape.

Dane 1
Dane 1 Warp
Dane 2
Dane 2 Warp
Dane 10
Dane 10 Warp

Next, I decided to see how I would look if I were danish and vice versa. I warped my face to the average danish's geometry and the average face into my geometry. Here are the results of that.

Original Wallace
Average Danish being Wallace
Original Average Danish
Danish Wallace

Caricatures: Extrapolating from the mean

To extrapolate from the mean, I found the difference between the my key points to the danish average points. This difference was then readded to my original points weighted by a constant to help accentuate the danish features in my image. This can also work in the opposite in removing danish features.

Wallace Caricature, alpha = -1
Original Wallace
Wallace Caricature, alpha = 0.5
Wallace Caricature, alpha = 1
Wallace Caricature, alpha = 1.5
Wallace Caricature, alpha = 2

Bells and Whistles

For my bells and whistles, I was curious how I would look if I morphed into an average pacific islander female. Here are the steps I took to accomplish this.

Wallace
Average Pacific Islander
Pacific Islander Shape
Pacific Islander Color
Pacific Islander Shape and Color