CS 194-26 PROJECT 3 
Kenan Jiang

  • Overview
    In this project, I used inverse warpping to create face morhing pictures. I first labeled some key facial features, then I make a Delaunay triangulation based on those points. Next, I applied inverse mapping to create a sequence of "midway" images. Played after each other, these pictures form a face morphing gif.
  • Defining Correspondences
    Approach
    I collected 2 sets of points on the 2 images I want to morph in the same order. Then I compute a Delaunay triangulation on the mean of these 2 point sets.
    I picked the following pictures.
    dx
    dy
  • Midway face
    I first loop through each triangle from Delaunay triangulation and compute an affine transformation matrix for each one of them. Then I take the inverse of these matrix, because we are doing inverse warpping. Looping though each triangle in our target shape, I use the polygon function to get the row and column index of pixels within polygon. Then I use the inverse matrix to map this area to our original image. Since it should be a one-to-one mapping, we can copy the colors over from the original to the target.
    mag
  • Morph Sequence
    Doing above midway face 45 times, with different warp_frac (used for warp img to intermediate shape) and dissolve_frac (used to combined 2 warpped images), I can get a gif after I put the results together.
    blur_dx
    blurred image convolved with Dx
  • Mean face
    I used Danes dataset. I read in the images and the .asf files for points. Then I added 4 more points on each corner. I averaged the key points of the population and make a Delaunay triangulation on that. Then using the average points and triangulation, I warpped all the faces to this shape.
    facade
    original
    hist0
    original
    hist1
    original
    facade
    warpped
    hist0
    warpped
    hist1
    warpped

    Then I took an average of all the warpped faces to get the mean face.
    facade
    mean face
    facade
    my face
    hist0
    my face warpped to avg
    hist1
    avg warpped to my geometry
  • Caricatures
    To make a Caricatures, I simply added more weights to the shape of my face before I compute the average shape between my shape and the mean shape.
    I do so by makeing an enhanced shaped which equals to k*(my shape - avg shape) + my shape, k in [0, 1]
    Here are the results:
    facade
    k = 0.2
    facade
    k = 0.4
  • Bells and Whistles
    I chooes to find out my look if I am a girl. So I find an avg face of Chinese woman, I morphed my face to that.
    facade
    avg woman face
    facade
    morph only shape
    facade
    morph only appearance
    facade
    morph both