CS 194-26: Image Manipulation and Computational Photography, Fall 2018

Project 4: Face Morphing and Modelling a Photo Collection

Kijung Kim, CS194-26 agm



Overview

For this project, we worked with trying to animate a "morph" of a picture of our choice (personal pictures) with a target picture. We used correspondences between source and target pictures to first create an intermediate "midway" picture. We did this by averaging the points of correspondence betweeen the source and target, finding a triangulation for the average points, using the same triangulation for both source and target points, and computing each pixel of our morph picture by computing affine transformations and cross dissolving.

me
midway face
Henry Cavill


I chose Henry Cavill since he's superman and I want to be superman. Here is the GIF! The clothes are sorta not transitioning well, but the faces look amazing! Each transition is 33ms, which roughly is 1/30 second per picture. Hope this is groot.

average delaunay triangulation using my points of correspondence
average delaunay triangulation using henry's points of correspondence
GIF. There are frames 0-45, frame 0 being exactly me and 45 being Henry.


Population mean face

I chose to work with the FEI Database. In particular, I just chose a subset of the first 100 smiling faces (1b.jpg - 100b.jpg) and computed the average keypoints. Then, with the average keypoints, I morphed the 100 pictures to those keypoints and averaged their pixel values to compute the average face. Here is the average face!


Here are some examples of sample population pictures being morphed into that average shape.

60b.jpg of the dataset
morphed. As you can see, the face is more oval shaped and the smile is less pronounced.
40b.jpg of the dataset
the smile is the most prominent change, and the lines on his face look smaller.


Here is my face to population average geometry and vice versa!

normal doofus face
I'M FATTTT
population mean
girl did you lose some weight?

Caricature

From our existing code, we calculate average points by doing P * (1 - warp_frac) + Q * (warp_frac). If warp_frac is negative or greater than 1, we can create caricatures! Here are some examples. Let warp_frac = alpha.

alpha = -0.3. It pronounces my skinniness
alpha = -0.6 DANG
alpha = -0.9 DAAAAAAANG
alpha = 1.3 ooh im fat
alpha = 1.6 ooooooh im fatter
alpha = 1.9 holymoly

Whistles and Bells

I decided to change genders and see how I'd look. I took the average korean woman face off the internet, labeled my points, and tried this morph. Here are the results!

ME
korean average woman
just the shape
naive
both. Put me out of my misery.