The goal was to select facial keypoints and compute a Delaunay triangulation on the average position of the facial keypoints. I decided to morph Hugh Jackman into Ryan Reynolds. Here are the original images
Hugh Jackman
Ryan Reynolds
Jackman Labelled
Reynolds Labelled
Jackman Triangulation
Reynolds Triangulation
Part 2: Computing the "mid-way" face
The next step was to compute a mid-way morph between Hugh Jackman and Ryan Reynolds. I computed a morph function to iterate through the triangles and morph them into the mid-way position. I vectorized this to avoid looping over each pixel.
Mid-way face
Part 3: The morph sequence
Now that we have a mid-way morph, we can adjust the warp fraction and dissolve fraction to create an animated GIF. I created 46 frames, animated at 30 FPS.
Morph Sequence
Part 4: Mean face
We can use this morph/warp technique to compute the mean face. I chose the Danes to compute the mean frace.
Dane Mean Face
Dane Mean Face Shape
Dane(1) Before
Dane(1) After
Dane(6) Before
Dane(6) After
We can also warp my face into the avg geometry and vice versa
My face
My face into average Dane
Average Dane onto my face
Part 5: Caricature
We can extrapolate features from the population to create a caricature of the average Dane onto my face.
Caricature
Part 6: Bells and Whistles (Change gender of my face)
We can use the morph/warp code to change the gender of my face. I used the average Mainland Han Chinese Woman to accomplish this.