CS 194-26 Intro to Computer Vision and Computational Photography, Fall 2021

Project 3: Face Morphing!

Sarthak Arora

Part 1: Morphing Sequence

Part 1.1: Defining Correspondences

In this part, I first chose 49 points on both my images in the same order. I made sure to choose distinct features to match such as the ears, nose, and eyes. I then computed the Delaunay triangulation mesh on the midpoint of the features with my photo and George's photo. The original images, the points plotted on them, and the mesh on them are shown below.

Original Sarthak
Original Sarthak
Original George
Original George
49 Correspondance Points on Me
49 Correspondance Points on Me
49 Correspondance Points on George
49 Correspondance Points on George
Midway Trinagularization on Me
Midway Trinagularization on Me
Midway Trinagularization on George
Midway Trinagularization on George

Part 1.2: Computing the Midway Face

In this part, I computed the midway face. First, for each triangle, I found the affine transforrmation that mapped the original image points to the midway points and applied this transform to all points in the triangle. I did this for all triangles and did this process for both images. I then 50-50 colour averaged the two results to get my midway face. This is shown below.

Sarthak Morphed to Average Face
Sarthak Morphed to Average Face
George Morphed to Average Face
George Morphed to Average Face
Final Midway Face
Final Midway Face

Part 1.3: The Morph Sequence

We change the warping and cross dissolve factor between our two original images and repeat the process in the previous part for 45 frames (30 fps) to create a slow transition between the morphing of one image into the other. This is shown in the GIF below

Final Morphing
"Final Morphing"

Part 2: The Mean Face of a Population

Part 2.1: The Average Dane

In this Part, I found the average Dane by finding the average shape (average of all 58 features), morphing each image to that average shape, and finally finding the average of all the morphs. Below is the average Dane. I have also included examples of indvidual Dane's mapped to the average Dane.

The Average Dane
The Average Dane
Dane 1 Morphed
Dane 1 Morphed
Dane 2 Morphed
Dane 2 Morphed
Dane 3 Morphed
Dane 3 Morphed

Part 2.2: More Morphings

In this part, I morpphed myself to the average Dane and vice versa. I had to resize my image to match the size of the Dane Image and I had to choose points on my image in a way consistent with the way they were chosen in the Danish dataset. The results are below

Sarthak Morphed to the Average Dane
Sarthak Morphed to the Average Dane
The Average Dane Morphed to Sarthak
The Average Dane Morphed to Sarthak

Part 2.3: Caricature

To make a caricature, I used the equation -> sarthak + alpha * (average danish - sarthak) to come up with new feature points. The result with alpha = 0.5 is as below:

Caricature
Caricature

Part 3: Bells and Whistles

Part 3.1: Changing My Gender

In this part, I morphed myself to the average American woman using the techniques that we have learned. Below are the original images, the shape morph, color morph, and the final morph.

American Woman Sarthak Shape Morph Morph

Conclusion

I learnt a lot about how simple linear algebra lends itself to such fascinating image processing techniques. Featurization was another important concept I learnt and things such as photoshop seem a lot less mysterious now! Finding the mean face of a population that washes away unique features was also very interesting.