Face Morphing

Project 4     |     Eric Zhang (agq)


In this project, I explored the concept of morphing one face into another in a smooth fashion. This process is informed by marking corresponding facial landmarks on both faces. With these points, a common triangulation of both faces is calculated. At each timestep of the warp, the intermediate points are calculated using a weighted average of the facial points to obtain the intermediate face mesh points and the precalculated triangulation is applied to these intermediate points to create an intermediate mesh. For each of the triangles of the intermediate mesh, two affine transformations can be computed.

For each pixel location in the intermediate image, we can find which triangle it belongs to, and apply the corresponding affine transformations to get to the pixel in the starting and ending image. The rest is trivial (taking a weighted average of those pixel to get the pixel in the intermediate image).

Morphing From One Face To Another

Morphing Sequence

One interesting artifact to note is that because there weren't any control points in the top portion of Anthony Hopkin's hair, the mrophing process assumed that it should stay at the top of the image like the rest of the top border. However, it disappears over time due to the crossfading.

Morphing to the Average Face

This is the average face of the Danes dataset. This is obtained by warping each of the faces to the average face mesh (obtained by averaging the corresponding face points of each of the images in the database). Then all these average-warped images are then averaged pixel-wise to obtain this average.

The Average Face

Below are some examples of morphing faces to the average face mesh.

There's a noticable distortion for points outside the main portion of the face, since most of the feature points were regarding the main portion of the face and the jawline. Therefore, the top of the head was warped strangely.

Here is a warp of my face to the average mesh.

My Face to Average Face

Morphing to My Face

In this section, I explore using my face as a target mesh.

The Average Face to My Face

This can be further explored by using my face as a starting image and further warping in the direction from the average mesh towards my face. This forms a caricature. The effect can be seen by how the jawline is further accentuated.