CS 194-26: Computational Photography (Fall 2018)

Project 4: Face Morphing

Vivek Jain, CS196-26-adj


In this project, we apply various techniques for analyzing face images and warping them to each other. The first problem we solve is the one of properly blending 2 faces - or finding a midway face. To do this, we first define correspondences over both images by selecting keypoints on each image. Then, we compute the average shape of the two faces and compute a triangulation on that average face. We then use this triangulation to define local warps between images - each triangle from the first image is warped to the the average shape triangulation, and likewise for the second image. Because we dissect the image into many triangles, we can approximate the image warp in these areas to be an affine transformation. We then solve for these warps by fitting a transformation matrix to each pair of triangles, and then cross dissolve the result. In the morph sequence section, we perform a similar operation, except we compute 45 different warps. However for each of these warps we compute a weighted average shape, depending on which shape the image is closer to. We then perform a similar weighted cross dissolve and then combine the images to get a smooth warp.

Part 1: The "Mid-Way" Face

Here we have the midway face between Vivek and George.

(Me + Goerge)/2

Part 2: The Morph Sequence

This is the morph sequence if we interpolate more finely.

Gif of me morphing into George

Part 3: The "Mean-Face"

Here we compute the mean face of a population in 2 steps: Compute the average shape, and then morph each face to that and average them all. We use a selection of male smiling Danes(2m) for our dataset. Here we show some of the Danes warped to the mean shape, the mean face, my image warped to the mean face, and my face to the mean face.

Dane 01-2m
Dane 01-2m mean face
Dane 31-2m
Dane 31-2m mean face
Dane 40-2m
Dane 40-2m mean face
Mean face of all the smiling men Danish faces
My face morphed to the mean Dane face

Part 4: Caricatures

We use the differences from the above mean face to create caricatures of our own faces

t = 0.1
t = 2.0
t = -0.8
t = -1.5