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.
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 |