To start off the project, I needed to create a mesh of my (and a friend’s) face. To do this, I manually selected key points on our faces and used Delaunay Triangulation to triangularize the points. Below are the results
This came with a lot of problems, and easily resulted in the most debugging. It gave me a lot of cool and trippy images, this one being my favorite. I’m still not sure what caused this.
After fixing these many, many problems, I finally was able to compute the mid-way face.
The only minor imperfection is with the shirt, but getting the hair to blend was annoying enough, so I’m leaving it.
After being able to compute the mid-way between two images, I next had to create a morph sequence. To do this, I changed some values to be parameters, and after not too much work, had a working way to morph between two images a desired amount. The only problem now was how unbearably slow my function was. It’d take about 4-5 seconds per morph, which was far too slow for future parts of this project. To help with speed, I coded another morph function that runs about 3-4 times as fast, but doesn’t perform the morph exactly as described in class.
To find the “Mean face” of a population, I first needed the faces of a population. To get this, I went to https://fei.edu.br/~cet/facedatabase.html and downloaded frontalimages_spatiallynormalized_cropped_equalized_part1 and their corresponding annotations. Next, I computed the average coordinates of each point, and then morphed all the images onto that. This gave me a pretty good looking average face. I did this for both the neutral and the smiling faces. Note that the images are grayscale, and matplotlib renders these with the colors below and I think it’s too cool to change them.
Finally, I morphed myself onto the mean using alphas of 1, 0, and -0.5, getting
And then morphed the average face onto my own facial feature, getting
As an added flair, I wanted to create a morphing music video on a theme. Being the uncreative and lazy man that I am, I used the annotated dataset I already had and was comfortable using, using the theme of Halloween. I also used the morphing on a jack o’lantern, which inverted the colors for whatever reason and didn’t work very well. Here is a link to the video: https://youtu.be/FKz4hs4sLeY