The goal of the project is to implement some face morphing techniques. This is generally done by first selecting keypoints images, and then computing the Delaunay Triangulation on the keypoints. Afterwards, transformations can be done between two corresponding triangles in two images.
For this part, I decided between my face and Mitch McConnell's face. The website I used to convert the image sequence to a gif seems to use some compression, so several of the transitions may have been affected by the compression.
David (Me) | Mitch (Not me) |
---|---|
Midway face | Morph sequence |
We can compute the mean face from the Danes dataset by first averaging the keypoints from the each face in the dataset, warp each individual image into the average keypoint set, and then average these images. For this part, I decided to use the images of front-facing people who were smiling. Here are some examples of images from the Danes dataset warped onto the average shape.
I selected keypoints on the mean face and my own face. The left image below is my face warped onto the average structure, and the right image is the average image warped onto my facial structure. With more keypoints, the warping would look more natural. However, with the keypoints I have selected, we can see that warping my face onto the mean structure made my eyes larger (haha) and warping the mean face onto my structure made the eyes smaller.
My face warped onto mean points | Mean face warped onto my points |
---|---|
To make a caricature of myself, I extrapolated myself from the Danish population mean. I used the following equation: caricature = meanFace + alpha * (myFace - meanFace). Since the most significant difference between my image and the average Danish face image is the color, as I increased alpha, the caricature had brighter colors. For example, my red dress shirt became brighter red.
alpha=1.1 | alpha=1.5 | alpha=1.75 | alpha=2.0 |
---|---|---|---|
In order to make my face more female, I took the average of all Danish women in the dataset. This produced the following image:
The first set of pictures is slowly warping my facial shape to be closer to the average Danish female facial shape. For each keypoint in the resulting point, I used the equation: result_point = david_point + alpha * (female_point - david_point). I then warped my face onto the resulting keypoints.
alpha=0 | alpha=0.25 | alpha=0.5 | alpha=0.75 | alpha=1 |
---|---|---|---|---|
The next set of pictures involves slowly warping changing my facial color to be closer to the average Danish female facial color. I warped the average Danish female face into my facial structure, and then the result is david + alpha * (female - david).
alpha=0 | alpha=0.25 | alpha=0.5 | alpha=0.75 | alpha=1 |
---|---|---|---|---|
Finally, I warped both my face and color to be slowly become closer to the average Danish female. Here are the results.
alpha=0 | alpha=0.25 | alpha=0.5 | alpha=0.75 | alpha=1 |
---|---|---|---|---|