Project 4: Face Morphing

Alexander Stennet, cs194-26-agn

General Approach


Step 1: Select the correspondences

Step 2: Calculate the mean structure

Step 3: Morph images to the mean structure

Step 4: Average the pixel values to form a single image

Step 5: We can now use different image weights to get partial images
75% / 25%
50% / 50%
25% / 75%

Step 6: Combining into a gif

Mean Face

Once the general approach of moving between two images is suffiently generalized, we gain access to the ability to do this for many images with ease. For this section, the Danes data set was used.

The naive approach is to simply take the mean of the images; however, because the images are all slightly misaligned and the faces are of different shapes we get a blurry image like this:

An improvement on this approach is to first reshape the faces to a mean structure and then take the average of those. Luckily, the Danes dataset came with correspondances so the process is simply a matter of loading in the points.

We get that the average face structure of the faces is:

An example of a single face morph using this structure:

Individually, the output is a bit deformed; however, after doing this for all of them this strangeness falls away.
Morphing and averaging the resulting morphs of all of the faces gives this final result:


Additionally, we can provide merge factors that are outside the range of [0,1] and allows us to see what would result in further moving the image in the direction of the other.
These are the results:
-50% / 150%
150% / -50%

These results show the glasses and hair getting darker in the first as the glasses are non existent in the second image and my hair is of a more blonde colour. The second image also start showing a checkered pattern like the scarf; however, it is of the opposite pattern (light is dark and vise versa).