Maochuan Lu - CS180 Project 3

Overview

In this project, I did a manual correspondance between images, created a morph and warp of my face into another person's face, computed the average face of a population, and generate a caricature of myself by extrapolating from the population mean. Besides, I also use those techniques to somehow change the gender of my own face.

Part 1

First, I first label the corresponding points using the correspondance tool provided by last year's student. Secondly, I loaded facial keypoints from json file created by that tool, Thirdly, I computed the midpoint of corresponding keypoints between the two faces. Then, I use Delaunay triangulation on that midpoint. Also I visualized that triangulation on both images. Here is sthe result:

Part1.png

Part 2

I first cropped my face and my friend Nancy's face to have the same dimenstion and use the key points giving by corresponding tool, I computed an average face shape using the midpoints of corresponding keypoints from both faces. Then, I use Delaunay triangulation, and calculated affine transformations for each triangle in the images and warped them to the average shape. Finally, I did a cross-dissolve to blend two faces to get a midway face. Here is the result:

Part2.png

Part 3

In Part 2, I created a GIF morph sequence with 45 frames, each with a duration of 30 ms. Since the GIF file was too large to upload to GitHub, I converted it into a YouTube video. You can watch it directly below:

Part 4

I used the Danes dataset. I first get keypoints from .asf files for male and female images by parsing files. Then after i do this, I firgure out that my final image only has face without background and clothes. So I added extra points, specifically, I added points in the corners and boundaries. Then I computed the average face shape for all, male, and female keypoints separately. In detail, for each image, I used Delaunay triangulation to warp the face into the average shape by applying affine transformations to each triangle. Here is four examples:

Part4.1.png
Part4.2.png
Part4.3.png
Part4.4.png

I computed the average female, male, and Danes faces by warping each image to its average shape, averaging pixel values. Here is the result

Part4.5.png

Then, I loaded keypoints for me and the average Dane face from a JSON file and warped both faces. I warped my face to the average Dane and also warped the average Dane face to match my face. Here is the result.

Part4.6.png

Part 5

I extrapolated my keypoints from the average Dane face by calculating the difference between them with alpha. I applied two different alphas (1.5 and -0.5) to exaggerate. Here is the results using exaggerating points to warp my face to average Dane face.

Part5.png

Bells and Whistles: Gender Change

I want to change my face (male) to female. And I did following things:

  • Appearance only: Only the appearance of myself was morphed into the average Chinese female face.
  • Shape only: The shape was morphed halfway between me and the average female face.
  • Shape and Appearance: Both shape and appearance were blended between the two faces.
  • Part6.png
    Back to CS180 Projects