Face Morphing

Vincent Escueta

Emailed submission on 10/19/2017, but uploaded to inst.eecs.berkeley.edu on 10/20/2017 because I got my instructional account back on 10/20/2017.

Defining Correspondences

Vincent (Original)
Natasha (Original)

To begin we take the first take the photos above, plot 60 points onto the two images (4 must be in the corners of the image) and perform Delaunay triangulation on the two images. However, we will be using the midway shape as our main triangulation. To get this we use simple interpolation to get the midpoint between two corresponding points. Below are some results of triangulation.

Vincent Triangulation
Average Triangulation on Vincent
Average Triangulation on Natasha
Natasha Triangulation

Computing the "Mid-way Face"

To get the mid-way face for both of our two images, we warp the the 2 images to warp into our average triangulation. To do this, for each triangle in the average triangulation, we take each pixel and each triangle and give it the value of the pixel that corresponds with the original images. We perform this through inverse warping based on affine transformations we calculate for corresponding triangles. After getting both warped images, we add both warped images at half opacity to get the mid-way face color average. Below show the original pictures on the outside, the warped images on the inside and the mid-way face in the middle.

Vincent (Original)
Vincent with Warped Face
Mid-Way Face
Natasha with Warped Face
Natasha (Original)

The Morph Sequence

In this part, it is much like computing the midway face, but instead of just interpolating to the midpoint of two corresponding points, we interpolate at 44 points between corresponding points and warp our two images to the new triangulation. In other words, we weight the two images and create multiple images at multiple different weights to create a series of images as shown as the gif below. In the gif below, the closer a warp is to one image, the more the color of the closer image dominates the frame.

Vincent
Morph
Natasha

The "Mean face" of a population

Still relating to the last parts instead of getting the average points of two images, we get the average points of many images. In this cause we get the average face of Danes smiling. So instead of giving each set of poitns for a face a weight of 0.5 to get the average, each face gets only a fraction of the weight where the weight corresponding to all faces are equal and sum up to 1. Below are a few of the faces warped to the average face shape. Then by cross dissolcing colors, we produce the average smiling Dane below. Furthermore, we also take my face and apply the average smiling Dane shape to it. We also take the average smiling Dane face and apply my face shape to it get the results below.

Smiling Male 13
Smiling Female 14
Smiling Male 25
Smiling Male 29
Smiling Male 13 Avg Warp
Smiling Female 14 Avg Warp
Smiling Male 25 Avg Warpr
Smiling Male 29 Avg Warp
Average Smiling Dane
Average Smiling Dane
Vincent with Dane Shape
Vincent
Avg Dane with Vincent Shape

Caricatures: Extrapolating from the mean

In the picture below, we make warp weight, 1.3 (too much towards Natasha's points. We end up with the results below where the face shape is totally off.

Vincent (Original)
Vincent Too Much Natasha Shape
Natasha (Original)

Bells and Whistles: Gender Change

For this last part, we will change my face to look an average Dane female. Below are soem transformations of my face with different warping weights and different cross dissolving rates.

Vincent
warp_frac = 0.2 dissolve_frac = 0.2
warp_frac = 0.4 dissolve_frac = 0.8
warp_frac = 0.8 dissolve_frac = 0.4
warp_frac = 0.8 dissolve_frac = 0.8
Average Female Dane