CS 194-26 Project 4: Face Morphing

Name: Andrew Oeung

Instructional Account: cs194-26-adz

Objective:

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.

Finding Correspondences:

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.

description here
Andrew
description here
George

The Mid-Way Face:

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.

description here
Andrew
description here
Mid-Way Face
description here
George

Morphing Sequence:

Here is the morphing gif. I used 45 frames to vary alpha, and created a gif with these 45 jpgs.

Mean Face of Dane Subpopulation:

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.

description here
Average Face Shape
description here
Subject A
description here
Subject B
description here
Subject C
description here
Subject A (morphed)
description here
Subject B (morphed)
description here
Subject C (morphed)
description here
Andrew
description here
Andrew (morphed to Dane average)
description here
Avg Face (warped to me)

Caricature:

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.

description here
Andrew
description here
Andrew (morphed)

Bells and Whistles:

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

description here
Andrew
description here
Average Korean Woman
description here
Averaged Fully
description here
Averaged Shape
description here
Averaged Colors