Project 3 - Face Morphing

By William Loo, Fall 2020


Defining Correspondences

I define correpondences by reusing the ginput tool used in project 2. Here is what the results look like after experimenting with different combinations of point correspondences in different locations. These sets of points appear to give the best results.

george_keypts will_keypts

Midway Face

To compute the midway face, first I need to average the two sets of points, and transform the two input images to the average shape. The transformation is done by iterating through each of the triangles returned by the Delaunay triangulation algorithm, and transforming them as defined by mapping the starting and ending points (from the input images) to the triangle created from the halfway point. To do this, I would need to compute a affine transformation matrix to map the pixels within the triangles from the averaged points to the original image. After transformation, the two outputs are combined using a cross dissolve of 50-50 from both transformed outputs.

Will, George:

will george

Will+George:

mid

Hopefully I age this well :').

Morph Sequence

The morph sequence was performed by gradually increasing the warp factor (from 0 to 1) and cross dissolve to transition between one image to another.

will_george_gif

Mean Face of a Population

I used the images and keypoints from the IMM Face Database of Danish people (http://www2.imm.dtu.dk/~aam/datasets/datasets.html) to calculate the "mean face" of a population. I added dummy keypoints for the corners in addition to the provided keypoints, in order to retain the background...

danish_points

Here is the mean face:

avg

Here are some danish people morphed to the average face:

Before and After Warping for 18:

before after

Before and After Warping for 34:

before after

After:

Here is my face warped into the mean geometry:

will_danish

Here is the average face warped into my geometry:

danish_will

The more than usual distortion is the result of the positioning of the faces..

Caricature

For the caricature, I adjusted the warp factor in a morphing process to be a value above 1 and below 0, or outside the bounds of [0,1]. Here is the result of warping to -0.7 and 1.3 respectively. (rip jawline)

cari_1cari_two

Class Morph

I joined a group of students to create a class morph: (https://www.youtube.com/watch?v=O3vouduLS3w)