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.
|
|
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 |
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.
|
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 |
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 |
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 |
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.
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.