Face Morphing

Spencer Hamilton, CS 194, Fall 2021

In this project, I am morphing my face into another person's face by computing the average of the two images.

Defining Correspondences

I manually selected 31 points for each of the input images and used Delaunay Triangulation to subdivide the image into triangles based on these points.

Computing the Midway Face

I computed a midway shape between the two images using the points of correspondence. For each triangle in the images, I found affine functions to translate pixels from the midway shape to the input images using the triangle's vertices. With these functions, I mapped the pixels from the input images to the midway shape.

The Morph Sequence

By using the same methodology as the midway face computation but adjusting the weights in the linear combination between 0 and 1, I created a morph sequence between the two input images.

Computing the Mean Face of a Population

I computed the average geometry from a database of 33 white men and found a mean face.

Morphing into the Mean Face

Using the mean shape, I morphed the images into the mean face and recorded the midway between them.

My Face Warped into the Average Geometry and Vise Versa

Using the average face, I warped my own face into it and vise versa.

Caricatures by Extrapolating

I produced a caricature of my face by extrapolating the mean population and a caricature of the mean population by extrapolating my face.

Bells & Whistles: Changing Ethnicity of my Friend

Using the average face of white men from the database, I warp my friend who is Japanese (sorry).