CS 194-26: Project 3 - Face Morphing!

Tejas Thvar, Fall 2021

Part 1 - Defining Correspondences

A total of 42 correspondences were used (script is correspondence.py). These points and their Delaunay triangulation are shown below.



Part 2 - Computing Mid-Way Face

The mid-way face was computing by first finding the average shape, warping each of the images into this average shape, and then averaging the colors to generate a meshed image. Finding the average shape consists of averaging the identified keypoints of each image. The warp was computed by finding the inverse transformation matrix for the individual triangles as part of the computed triangulation, and then applying this inverse transformation to the desired warped triangle to obtain the warped image. The original images of me and George are shown below, along with the midway image.

Part 3 - Computing Morph Sequence

The morph sequence was computing by leveraging the warp function created in part 2. The morph function warps each image inputted to the shape dictated by the warp_frac parameter (higher warp_frac -> more contribution from image 1, vice versa). The cross-dissolving was computed similarly, by varying the dissolve_frac parameter. The following GIF was created by varying each parameter from [0, 1] over 50 frames.

Part 4 - Computing Mean Image

I decided to use a population of neutral-faced men in order to match my image well (30 images total, dictated in data/imm_face_db/men_pop.txt). The mean image was computed by first computing the mean shape of all images in the Danes database. Then each face was warped to the mean shape, and then averaged to obtain the mean face. Some examples of faces warped to the mean shape are shown below, along with the obtained mean shape.











Once the mean face was obtained, I warped my face into the mean face's geometry, and the mean face warped into my geometry. Before this warp, I relabeled the mean face with correspondences the same as labeled for George and myself. These results are shown respectively below.



Part 5 - Caricatures

The caricature was obtained by extrapolating the population mean face from my own. This was calculated by adding the scaled (0.8) difference from my face and the mean to my own face. This exaggerates my features that are significantly different from the population mean.



Part 6 - B&W

Morph Ethnicity

Below is shown a morph from my face to a white man, using the average image obtained from the Danes dataset. On the left is my shape warped to the average Dane shape, the middle is my appearance/color warped to the average Dance color (cross-dissolve), and the right contains the morph across appearance and shape.