This project focuses on face morphing between two images, in order to give a visually pleasing morph. In order to create a satisfactory morph, we needed to define consistent correspondences between two images, so that we can compute the average face shape between a group of images. This way, we will fluctuate our parameters to give the illusion that our face is evolving between two different people or more.
I used python's ginput to select 50 points for each image so that I can perform morphing. I chose George Clooney as the starting image, and myself as the target image for transformation. Our face shape does not really match, however.
Andrew |
George |
After the correspondences are defined, we use a multi-step process to create the mid-way face. We need to compute the weighted average shape by varying the parameter alpha between 0 and 1 for (alpha)*im1_points + (1-a)*im2_points. The mid-way face will be the image created when alpha is 0.5 for the correspondence points. Then, we will create a Delaunay triangulation for the weighted average of correspondence points between the two images. Then, we can use an affine transformation for the triangles in order to perform a gradual morph. Cross-dissolving the colors for the two images simply involves taking a weighted average of the RGB values of the two images, and this is also varied with alpha.
Andrew |
Mid-Way Face |
George |
Here is the morphing gif. I used 45 frames to vary alpha, and created a gif with these 45 jpgs.
Here, I will take 37 Dane faces and create the average face shape from them. I will also morph some individuals into the average face shape, as well as morphing my own face to the Dane's average face shape. My eyes get a little squished here, while the Dane's average face spreads out. This is most likely because my face is almost twice as wide as the Dane photographs.
Average Face Shape |
Subject A |
Subject B |
Subject C |
Subject A (morphed) |
Subject B (morphed) |
Subject C (morphed) |
Andrew |
Andrew (morphed to Dane average) |
Avg Face (warped to me) |
I created a caricature of myself using the Dane dataset through extrapolation. Here it is! Not the best, but my face shape doesn't correspond well to the Danes. My eyes are constantly squished to fit the Dane's average face geometry.
Andrew |
Andrew (morphed) |
This is the bell and whistle I did to get full credit. I chose to morph myself to the average Korean woman. Overall, it makes my face rounder when I morph just the appearance. Our face shape doesn't match when I just average the colors, though. I also helped out on a video morph project led by Michelle Hwang (cs194-26-aaj) for bells and whistle. Here's the gif and the Korean average pictures. Here's a link: https://www.youtube.com/watch?v=h-Oow96qhck
Andrew |
Average Korean Woman |
Averaged Fully |
Averaged Shape |
Averaged Colors |