Programming Project #3 (proj3)

CS180: Intro to Computer Vision and Computational Photography

Project Description

In this project, I used Delaunay triangulations to do a variety of things. I morphed my friend Nasan and my face and created a smooth transition to display the morphing. I also computed the mean face of a large dataset of faces, and then morphed several of the faces to that mean. I created caricatures of my face using the average face in regular basis and in a PCA basis for the keypoints.

Part 1: Defining Correspondences

Here, I manually selected facial keypoints on both images A and B to define correspondences between the two faces. I used Delaunay triangulation to create a mesh for morphing.

Part 2: Computing the "Mid-way Face"

Using the defined correspondences, I computed the mid-way face by averaging the keypoints of both images and warping both images into the average shape, then blending the colors.

Part 3: Morph Sequence

Below is the morph sequence from Image A to Image B, showing the smooth transition between the two faces.

Morph Sequence
Morph Sequence

Part 4: Mean Face of a Population

I used the FEI dataset of annotated faces to compute the average face shape and appearance of the population. I then warped the first 5 faces in the dataset into the average shape and computed the population's mean face.

Part 5: Caricatures

By extrapolating from the population mean, I created a caricature of my face. Below is the result of this extrapolation. Alpha value is -0.5. This means we are placing 1.5 weight on my keypoints and a negative 0.5 weight on the average keypoints.

Caricature of My Face
Caricature of My Face

Bells and Whistles - PCA

I computed several PCA bases for the face space, using different numbers of principal components. I then attempted to reconstruct three of the original images using these bases to see how many principal components are necessary for a good enough reconstruction. Below you can see the eigenfaces for the first 12 principal components.

Eigenfaces for 12 principal components
Caricature of My Face
Reconstruction for 12 principal components
Caricature of My Face
Reconstruction for 35 principal components
Caricature of My Face
Reconstruction for 100 principal components
Caricature of My Face
Reconstruction for 200 principal components
Caricature of My Face

I also computed caricatures in this PCA space. You can see that the reconstruction and the caricature from it is not so good, because my face is not part of the original dataset. As a result you cannot really tell that the caricature is really a caricature but it does have an alpha of -0.5.

Caricatures in PCA
Caricature of My Face