Face Morphing

Jacob Huynh
CS 194-26: Image Manipulation and Computational Photography
Professor Alexei Efros

Overview

In this project we will be producing a morph animation of a face into another face, compute the mean population of faces from a population, extrapolate from a population mean, and create a caricature. The process of doing so involves first picking corresponding points, and averaging these points to create the average shape. We run a Delaunay triangulation on these set of points to calculate a transformation matrix called an affine matrix. We use this affine matrix to warp the first image into the average face and the second image into the average shape, and finally cross-dissolve the colors together. To create the image morph, we output different steps in the warp.

Correspondences

Approach

Given two images, we fine the corresponding points by hand by targetting key features in both faces. Having more corresponding pairs will create a better fit for the image morph. In this case, I chose myself and Matt Damon as image A and B respectively.

Mid-way Face

Approach

To find the mid-way face of me and Matt Damon, we first need to compute the average shape, or the average of each keypoint location as defined in the previous step. To do this, we simply sum the corresponding points and divide by the number of images, which is in this case 2. The next step is to utilize Delaunay triangulization to warp both faces into the average shape, as detailed in the project overview. The last step is to cross-dissolve the colors together and output the final, mid-way image.


Midway of Me and Matt


Me

Matt Damon

The Morph Sequence

Approach

Using the same algorithm as we did to create the midway face, we output different steps in the warp to create different frames of the warping process. In total, we create 45 frames and finally animate them by creating a gif of all 45 frames.


Midway of Me and Matt


Me

Matt Damon

Mean Face of a Population

Approach

The idea behind creating the mean face is relatively straightforward. For the specific dataset used, the Danes, we first needed to create a text parser in order to retrieve the appropriate correspondences, which we did by hand in the first part. After extracting the correspondences, we find the average shape of the danish data set utilizing the same approach as when we found the average shape of two faces. To morph a single danish person into the average shape, we utilize the same algorithm as the morphing technique.


Average Danes


A Dane Warped into the Average Dane


Another Dane Warped into the Average Dane


My Face Warped into the Average Dane


Average Dane warped into my Face

Caricatures

Approach

To create a caricature, we follow the same process as warping a face into the average face of a data set. However, the main difference is that we need to calculate the caricature shape which is defined as t*(im_points - average_face) + average_points.


t = -0.5


t = 0


t = 0.5