CS 194-26

Project 4: Face Morphing

Finding Correspondences

From two images, we define corresponding points, targeting features that exist in both faces. By having more of these correspondences, we are able to create a better morphing from image A to image B. For this example, I chose myself to be image A and my mother to be image B

Original With Triangle Mesh Overlay

The Midway Face

To find the Midway Face, I first compute the weighted average shape between the points of our faces. Then I use Delauney Triangulation to obtain a set of triangles for the corresponding points and then calculate the inverse affine matrices for each triangle, more specifically the affine transformation from the original image's triangle to the average triangle and then transform all the points in the triangle using the transformation. This morphs my face and my mother's face to the average shape and then cross disolves by taking the average of the two morphed images to get the midway face.

Myself Midway My Mother

The Morph Sequence

This is a morph sequence where one image is morphed into another through intermediate images based on a weighted mean of my face and my mother's face using weights from the range 0 to 1, which is then stacked on top of eachother as frames in an animated gif.

Animated Morph

The Mean Face

Using the same methods as described earlier, I took a subset of faces from a given population and computed the average or mean face. I chose to use the Danes set which contains 30 male images and 7 female images. To obtain the mean face, I calculated the average face shape from the set of points for each face. Then I morphed each face, similar to the midway face, and then computed the average face again. As there are more males than female, the average face appears to be more male, however the features do seem slightly exaggerated, probably due to a variance in the shape of the features in the faces in the dataset. This worked as intended when morphing

Original Warped to Average Face
My face warped to average Average face warped to my face

Caricatures

For this section I take my face points and subtract the average face points, multiply the difference by a caricature constant, and then re-add the average face points. This then warped on my face to produce the two caricatures.

Original Caricature Constant = 0.5 Caricature Constant = 1.5

Bells and Whistles

For this section, I applied the average male face from the danes dataset to my mom's face, first I just warp the two, then I do the cross-dissolve, and then I used the warp in the cross-dissolve.

Original Warped Morph Warped + Morph