The first part of the project was to take two separate faces, and create a midway face between them, taking into consideration the shape and the color of both images. We start with two images, one of my friend Jensen, and the other his favorite running back from Fantasy Football, Ronald Jones.

To begin the face morphing, I labeled multiple points across both of their faces, and I tried to keep it consistent between points, such as a point on Jensen's mouth should correlate a similar point on Ronald Jones' mouth. I computed the average points, and then computed the Delaunay triangles on the averages of the labeled points. These triangles essentially represent where certain points will get mapped to after the warping.

Computing the Midway face

Then, we morph each individual set of triangles into the average triangle shape, and we average out the colors between the two images. The individual warped images and the final midway image is below.

Morph Sequence

We see that we can compute the midway face, so we feel like we can scale this to show frames in-between. We change the weight of the color and the shape of the morphs from one end to the other, and we compute this weighted average face at each step. Below is a result of that.

Computing the mean face of a population

Using the same technique as above, we can compute the mean face of a population by finding the average shape and morphing all images to that shape. I took a sample of 40 Danish scientists and computed the mean face. First, we show 4 example scientist.

I then computed the average face shape and morphed each face into that shape.

I then computed the average color and put all the faces together, and here is the result.

I then wanted to see if we can morph Rojo into the mean face. Here is Rojo morphed into the mean face. Due to some slight inaccuracies in labeling, the face looks a little warped.

Similarly, I decided to see if I could morph the average Danish face into Rojo's. Below are the results.

As you can see, the possibilities are endless for what we want to morph into each other.

Caricatures

Now that we can morph faces from one shape to the other, we can create caricatures to exaggerate features on one face compared to the other. Say we have two images, and we want to show the exaggerated features of the first image from the other. What we can do is the subtract the second image from the first image, and scale the difference, and then add the result back to the first image. This removes similar features and exaggerates the first features that are different from the second.
First, we show Rojo's face and the average Danish face.

Then, we show the different scaling factors and how they affect the caricatures.

One noticeable difference is that Rojo's nose gets smaller and his eyes get bigger as the scaling factor increases.

Bells and Whistles

I decided to make a cool video of the different Joker's throughout the years. Below are the 4 jokers.

Below is a short video of the transformation with some classic joker audio playing over it.