In this project, we explore the techniques of face morphing. A morph is a simultaneous warp of the image shape and a cross-dissolve of the image colors. Using what we have learned in class, we produce a "morph" animation of our faces into someone else's face, compute the mean of a population of faces and extrapolate from a population mean to create a caricature of ourselves. For bells and whistles, I explored chaning the gender of my face.
I first define correspondences manually on the source face and target face using a python program I wrote. Then I compute the triangulation by computing the Delaunay triangulation on the mid-way shape. The mid-way face is obtained by first computing the average shape, then warping each face to the average shape using inverse warping, and lastly averaging the colors. To produce a morph sequence, for each timestep with the corresponding warp fraction and cross-dissolve fraction, I compute a warp between the source image and target image using the point correspondences and the triangulation structure I defined in the previous step. For my morph sequences, I generally used 19 mid-way faces, plus the original source and target image. The average shape I use is defined by: shape1*(1-t) + shape2*t, where t is the warp fraction, that will vary from 0 to 1 in a morph sequence. The average color I use is defined similarily: img1*(1-t) + img2*t, wheret is the cross-dissolve fraction. The warp fraction and the cross-dissolve fraction is set to be the same, except when we are only morping either the shape or the appearance.
The morphing sequence of these faces turned out nicely. There is little ghosting other than the collar and a bit of the hair. This is mostly because I was able to define a lot of correspondence points on the images.
In this morph sequence, there is more ghosting than the previous example. This is mostly because there are not enough correspondence points around the face.
In this part, I chose to produce the mean face of a subset of the female faces in the FEI database. I calculate the mean face by first calculating the average geometry of the faces. Then I warp each individual face into the average geometry. Lastly, I average the colors of the warped faces.
In this part, using the mean face I obtained in the previous part, I produce caricatures of my face, i.e. exaggerating the difference from my face to the mean face. The caricatures are obtained simply by computing a warp function with the warp fraction set to be negative and the cross-dissolve fraction set to be 0 and applying the warp function to the original image.
In this part, I explored changing the gender of my face. I tried three different morphs: morping only the shape, morphing only the appearance, and both. For the target image, I chose the average chinese male face.
As usual, because it is hard to define correspondences of features that exist on one face but not the other (e.g. my bangs), there is a lot of ghostig around the face.