CS 194-26 Project 4

Alvin Zhang

This project involves blending faces. First, corresponding keypoints for the faces are manually obtained. Then, a "mid-way" triangulation is created by taking the weighted average of two faces' keypoints and applying an algorithm for Delaunay triangulation. The two faces are then combined by applying affine mappings to the corresponding triangles for this "mid-way" triangulation and taking a weighted average of the resulting pixel values. The degree to which images are blended in the spatial and color domains can be adjusted by varying the blending weights of the keypoints and pixel values.

Two-Person Blend

A blend of myself and my friend Andrew Dickson.

Population Means

The mean of N images is computed by taking the average of their keypoints, warping the original images to this mean shape, and then taking the average pixel values of the warped images.

Danish dataset, neutral and smiling population means.

Myself, warped to the average geometry of a neutral Danish face, and vice versa.


A cariacture is created by adding a multiple of the difference between a person's face and the average to that person's face.

Extrapolating my face away from the Danish neutral face mean with a difference multiplier of 1.8.

Adding/Subtracting a Smile

The geometry vector which specifies a smile can be calulated by taking the difference in keypoints between the subpopulation means of smiling and neutral faces. Similarly, the difference in color can be revealed by warping both subpopulations to the same geometry (e.g., a target face) and taking the pixel difference. These combinations can be combined by warping the subpopulations to the geometry of (the target face plus the smile vector).

Giving myself more of a smile. Top row: base, +color. Bottom row: +shape, +shape+color.

Giving myself a frown. Top row: base, +color. Bottom row: +shape, +shape+color.