CS 194-26: Project 4

Face Morphing

Karuna Wadhera, CS194-26-abo

Part 1: Computing the "Mid-way Face"

In order to compute the midway face, I first set out to create point correspondences. For this, I created "getCoords.py" which takes in a file name and allows you to click points and set up a correspondance. I then creating a Java program to parse the resulting points so I could easily copy them over to a .csv file. After getting the points, I found the average points of the correspondences and used a Delaunay triangulation function to get a triangulation. Then, knowing these triangles, I calculated the affine transform for each triangle, found which points made up the triangle, which points in the source images contributed to those points, and used the interpolated source images to populate the pixels in the new midway image.

Midway Face

Part 2: The Morph Sequence

Really excited to show my grandma this morph :) Here is a link to the gif I made of my grandma and myself!

Part 3: The "Mean Face" of a Population

I decided to use the subpopulation of females found in the Danes annotated face image database. I created a Java program to help me parse the .ASF files and place the resulting point correspondences in a .csv file.

Average face
My face + average face midway face
My face to average (2/3 warp)
Average to my face (2/3 warp)
Here are the midway faces of the average face and the faces found in the dataset.

And here are the original images for comparison.


I never did get a caricature drawing of myself done, so this is cool.

Bells and Whistles

I decided to use an image of the average indian male to change myself into an Indian male! I found the indian male image from here.

Avg Indian Male
Midway Face
Just shape
Just appearance