CS 180 Project 3: Face Morphing

Exploring Face Morphing Techniques

Your Name

Introduction

In this project, I explored face morphing techniques by producing a morph animation between two faces. I also computed the mean of a population of faces and extrapolated a caricature from the mean. Face morphing is achieved by warping the image shape and cross-dissolving the colors between two faces. The warp is controlled by defining correspondences between facial features, such as the eyes, nose, mouth, and ears. Moreover, I worked with images of Danish people and found the average face of a Danish person, as well as trasnformed myself into the opposite gender by using an averaged image of Chinese females.

My Face

My Face

Joker's Face

Joker's Face

Defining Correspondences

I started by taking a picture of myself and selecting an image of Arthur Fleck (Joker). To properly morph the images, I used a student-made keypoint labeling tool to mark corresponding facial landmarks (eyes, nose, mouth, etc.) on both images. These points ensured proper alignment of facial features during the transformation. Next, I computed the mid-way shape by averaging the correspondence points from both faces. Using these points, I applied Delaunay triangulation to divide the faces into triangular regions, which helped preserve the structure and smoothness during the morph. Finally, I visualized the triangulation for my face, Joker's face, and the mid-way shape to confirm the accuracy of the correspondences and triangulation.

My Face with Correspondence Points

My Face with Correspondence Points

Joker's Face with Correspondence Points

Midway Delauney Triangulation

Delaunay Triangulation

Joker's Face with Correspondence Points

Computing the "Mid-way Face"

In this section, I computed the "mid-way face," which is a blend of both my face and the Joker's face. The mid-way face is created by averaging the shapes and pixel values of the two images, resulting in a face that is a 50/50 mix of both. To achieve this, I used Delaunay triangulation to divide both faces into corresponding triangles. For each pair of triangles, I calculated an affine transformation that mapped my triangle onto the mid-way triangle and similarly mapped the Joker's triangle to the same mid-way triangle. Once the affine transformations were computed, I warped each triangle from my face and from the Joker's face to fit the mid-way shape. Then I averaged the pixel values of the warped regions from both images. Here is the result.

jason

My Face

Mid-way Face

Midway Face

joker

Joker's Face

The Morph Sequence

I created an animation that smoothly transitions my face into the Joker's face over 45 frames. For each frame, I gradually warped the facial structure using intermediate points between both faces, controlled by a warp fraction. Simultaneously, I blended the colors from both images using a dissolve fraction, ensuring a smooth transition in appearance. The result was a continuous morph sequence, where the shape and colors of my face gradually transformed into the Joker's, producing a fluid and natural-looking animation.

Morph Sequence

The "Mean Face" of a Population

Next, I worked with a dataset of 37 Danish faces to compute the average face. I began by extracting key facial points from .asf files associated with each image, which marked important features. Using these keypoints, I calculated the average shape of the faces and warped each face to fit this geometry using Delaunay triangulation. After aligning all the faces to the average shape, I averaged their pixel values to create the "mean face" of the population, representing the typical facial features of the dataset. Lastly, I compared my face to the average face by warping my face into the average geometry and vice versa.

Face 1

Dane 1

Face 2

Dane 2

Face 3

Dane 3

Face 4

Dane 1 Morphed to Average

Face 5

Dane 2 Morphed to Average

Face 6

Dane 3 Morphed to Average

Mean Face

Mean Face of Population

Face 7

My Face Morphed to Average Dane

Face 8

Average Dane Morphed to My Face

Caricatures: Extrapolating from the Mean

For this section, I exaggerated my facial features by manipulating the keypoints in relation to the average face of the population. Using an extrapolation factor (alpha), I adjusted the keypoints to either emphasize the differences (positive alpha, e.g., 1.4) or make my features closer to the average (negative alpha, e.g., -1.5). I then warped my face to these new, exaggerated geometries using Delaunay triangulation, creating two caricatures: one where my features are exaggerated and distinct, and another where they are more blended with the average.

Your Face

α = 1.4

Caricature

α = -1.5

Changing Genders

In the Changing Genders section, I transformed my face into the face of an average Chinese female by experimenting with both shape and appearance changes. First, I morphed my face into the female shape by aligning my facial structure with the average female keypoints while keeping my original appearance. Then, I applied only the female appearance, maintaining my original facial structure but adopting the female's textures and colors. Finally, I combined both the shape and appearance t ransformations, fully morphing my face into a female version, altering both the geometry and visual traits.

Your Face

My Face

Female Mean

Average Chinese Female

Transition 1

Morph Shape Only

Transition 2

Morph Appearance Only

Transition 3

Shape and Appearance