In this project, we perform transformations to create morphs between images.
First, let's take a look at the original pictures of me and George Clooney:
To define the correspondences between images, I wrote a function to let me click points on an input image. Then I used scipy's Delaunay function to create a triangulation of those keypoints. Here's the triangulation of the average keypoints superimposed on my face and George Clooney's face
Using the inverse warp technique discussed in class, I found the average shape of my face and George Clooney's face and warped both our faces to the average shape, then took the average of the colors:
By generalizing the code I wrote above to take in shape and appearance proportions as parameters, I created a 150-frame morph sequence from me to George:
Using the same technique as before, I warped each face in a population to the average shape, then took the average of their appearances. The following are a few examples of individuals being warped to the average shape.
This is the population average shape in both shape and color.
On the left is my face warped to the average shape of the population. On the right is the population's average face warped to my face shape.
Using the average computed above, I created a caricature of my own face. On the left is my original face. On the right is a 150% caricature of my face—both the shape and appearance are morphed 50% of the way in the direction opposite to the average face from above.
I found a picture online of the average Taiwanese male face. I thought it would be interesting to see my friend's face warped into this average. Here's the average face I found:
And here's my friend's face:
Using my morphing algorithm from before, I adjusted the settings such that only my friend's appearance is morphed 50% of the way to the average:
And this is the result of morphing only my friend's face shape, but not appearance, 50% of the way to the average.
Now let's combine both effects.