CS180 Project 3: Face Morphing

Part 1: Triangulation

For the face morphing, I’m using a selfie and george clooney’s picture.

I started by creating one-to-one point correspondence on key features of the 2 images using the tool linked to on the project page (this one). Moreover, I added the points for the 4 corners of the images after loading in the images. After getting the points, I used Delaunay triangulation to create the triangle meshes. Here are the results:

Original Images: my selfie and mr clooney
Triangle mesh generated using Delaunay algorithm.

Part 2: Mid-way Face

To compute a mid-way face, I start by getting the inverse of the affine transformation between 2 corresponding triangles. I directly compute the INVERSE because we are doing inverse warping. To get the inverse affine transformation, I did:

TA=AT=AA1T1=(AA1)1T1=(A1)1(A)1T1=A(A)1T \cdot A = A'\\ T = A' \cdot A^{-1}\\ T^{-1} = (A' \cdot A^{-1})^{-1}\\ T^{-1} = (A^{-1})^{-1} \cdot (A')^{-1}\\ T^{-1} = A \cdot (A')^{-1}

TT is the affine transformation, AA is the stacked coordinates of the original triangle with the bias appended, and AA' is the stack coordinates of the target triangle with the bias appended. Here’s the mid-way face of me and george clooney:

Part 3: The Morph Sequence

I made 2 gifs, one with 46 frames and one with 90 frames to see if more frames will give smoother results. The morph sequences are uploaded to YouTube.

Part 4: Population Average

I used the FEI dataset to calculate a population average. More specifically, I used the frontalimages_spatiallynormalized images and the corresponding point annotations. I computed 2 mean faces of the dataset, one using the neutral expression images and one using the smiling images. Let’s see the results:

Neutral Expression
Smiling

Here are some images in the dataset with their face geometry warped into the average shape:

I tried taking a new image of myself to make it more aligned with the images of the dataset:

Here’s my face warped into the average geometry and the avg face warped into my geometry:

Definitely unexpected results. I think it can be attributed to the difference in camera angles and setup. I couldn’t really get a picture that is really similar to the FEI dataset.

Part 5: Caricature:

Made a caricature of myself using wrap_frac=-0.6:

Geez i know my forehead is huge, but no need to expose me like that lol

Here are some other caricatures using images from the dataset:

warp_frac=-0.9
warp_frac=-0.5

Part 6: B & W, Changing My Gender

I found an average image of Chinese female online for this part. Here’s the original image:

And the here’s the gender change results:

Future improvements might focus on the hair features. If the female hair style is more accentuated, I think the results will look even better.