Project 3: Face Morphing

CS 194-26 Image Manipulation and Computational Photography Spring 2020

cs194-26-aah

Defining Correspondences

In my selected photos of Brad Pitt and Matt Damon, I used ginput to pick the keypoints of the two faces. I specified a consistent ordering of 58 points in order to incorporate as much accuracy and detail to the morph. I computed the Delaunay triangulation based on the average of the Brad points and Matt points.



Midway Face

To get the midway face, I took my Delaunay triangulation and applied it to the average points against each of my sample images. For each triangle, I computed the inverse affine matrix to map the triangles and pixels in the averaged points to the original image.


Brad Pitt


Midway Face: Brad Damon


Matt Damon

Morph Sequence

To create the morphing sequence, I followed the same procedure as when I computed the midway face except instead of using a warp_factor and dissolve_factor of 0.5, I set my warp_factor and dissolve_factor to 0 in the first frame, and increased both factors by 1/45 until the last frame would have factors of 1. Setting both factors equal to each other resulted in a smooth morph sequence that progressed evenly.


Mean Face of a Population

I used the FEI face database which is a Brazilian face database that contains a set of face images taken between June 2005 and March 2006 at the Artificial Intelligence Laboratory of FEI in São Bernardo do Campo, São Paulo, Brazil. I extracted 100 photos of the straight face expression and 100 photos of the smile expression of the corresponding person.


Average Straight Face


Original Image: 51a


Morphed to Average Face: 51a


Original Image: 82a


Morphed to Average Face: 82a


Average Smile Face


Original Image: 51b


Morphed to Average Face: 51b


Original Image: 82b


Morphed to Average Face: 82b

From these results, you can see that for an individual with a thinner face than the average, he/she will have a more expanded face when applying a morph against the average. In the smiling average set of images, you can also see how the mouth shape of the individuals also flatten out to match the shape of the average smile face.


Average Straight Face


My face morphed onto the average's shape


Average face morphed onto my shape


Average Smile Face


My face morphed onto the average smile's shape


Average smile face morphed onto my shape

Caricatures

I played around with different alpha values outside the [0, 1] range to produce these caricatures.


alpha = -1.2


alpha = -0.5


alpha = 0


alpha = 0.5


alpha = 1.2

Bells and Whistles: Changing Ethnicities

I extracted photos of white-blond-females from the USA Womens National Swim team and computed the average face of that dataset. I was curious to see how I would look like if I could transform my asian-black-haired self to a white-blond-female-national-team-swimmer.


me


average white, blond, female national team swimmer


Shape Morph


Appearance Morph


Both Morphed

Bells and Whistles: Morphing Music Video

I wouldn't call myself a diehard fan, but I have been a quiet fan of the band BTS since 2015 so I thought it would be fun to create a music video with a morph of their faces. Whoever is singing the current verse or chorus will be displayed on the video. When one member changes to another, I used my morphing sequence to create the transition. The morphing plays around with each band member in a different orientation.

Takeaways

I think this project has been the most fun so far because it allowed for a lot of room for creativity. It's pretty cool that something so visually cool like morphing doesn't have an incredibly complicated algorithm behind it. There is still a lot of work to be done to generate a smoother and more detailed morph. Im curious to see how many points and what sorts of point locations would result in the best morphing sequence.