P3 - Face Morphing

CS194-26, Spring 2020

Overview

This project involves morphing one face to another, the simultaneous warp of the image shape and a cross-dissolve of the image colors.

Code

Everything can be found in P3.ipynb.

Results

Defining Correspondences

Using the cpselect package in Python, I was able to annotate my face and my friend Jared's, as seen below:

triangulations

The points have been split into triangles through Delanay Triangulation. The first is me, the second is Jared, and the third is our midway face structure respectively. I used the labeling structure found here.

Computing the Mid-way face

Using the midway triangulation, we can warp both my face and Jared's to that shape, and also average their colors:

jernard

The Morph Sequence

Repeating what was performed above, we can use different weights on the shape and color of me and jared's face to generate many images that cover the entire spectrum of possible morphs between us.

Check it out in video form here.

The "Mean Face" of a population

I drew from a Brazilian dataset of annotated faces from here to generate the average face and shape.

Average Face

average

Example faces morphed into the average face shape (I chose these since they were kinda wonky):

fav1 fav1

Morphing the average face to the shape of my face and my face to the average face shape:

average_to_me me_to_average

Caricature: Extrapolating from the mean

By exaggerating the weights on the faces we are morphing to, we can exaggerate features like those of the average:

caricature

Bells and Whistles

I participated in a lengthy morphing video with other students in the class! Check it out on Lindsay's webpage, as she is the one who uploaded the final video.