Project Overview:
In this project, I use triangulation, affine transformations and cross-dissolving to achieve cool face morphing applications including creating hybrids of two faces, creating morph sequences between images, computing the average face of a population, averaging and caricaturing faces using the population average, and changing the ethnicity of an image.
Project Approach:
The approach for this project involves hand selecting corresponding points on both images (i.e. the center of the eyes, the shape of the face, etc.) and importing both the images and the corresponding points to the program. From there, I choose a triangulation over the points in order to morph between corresponding triangles through an affine transformation. Solving for the affine transformation involves solving a simple system of equations, then using an inverse warp to fill in the pixel rgb values. Finally, now that each image has been morphed to the same shape, I can cross-dissolve their rgb values to obtain the final result.
For this part of the project, I use the FEI Face Database (found here) to represent a couple different populations: I use the enitre set for an average face as well as select for the females for an average female face. I will show both results below. Note that the dataset is made up of Brazilian faces.
Original image on left, morphed to average shape on right
For this part of the project, I use the female average face to caricature my own face. In other words, I exaggerate my own "features" by finding the difference between myself and the average face, and then push my image even further from the mean along that distance vector. Here are a couple examples at varying intensity levels.
I did three different bells and whistles for this project. Firstly, I participated in a classroom morph with a handful of my peers. Secondly, I manipulated the ethnicity of my own face using some averages found on the Internet. Lastly, and my favorite of all, I created a Game of Thrones themed morph sequence!
The full video can be found here. I created the following gif.
I would like to change my ethnicity to be more "Russian" using this average image.
First, notice what happens when I just change the shape (left) or just cross-dissolve the colors (right).
Looks weird, right? But if we find a good balance between morphing the shape and cross-dissolving the colors, we can get a great result! In this example, I morphed the shape 50-50 and the color 75-25 (to preserve mostly my own color)
Now for the moment you've all been waiting for...
For full enjoyment, please click here!