The goal of this project is to produce a "morph" animation of my face into someone else's face, compute the mean of a population of faces and extrapolate from a population mean to create a caricature of myself.
Below are the images I picked, and the correspondences I picked. I focused on mapping critical features such as eyes and nose to each other, so the transition can be as smooth as possible. After picking the correspondences, I then found the Delaunay Triangulation of the points. It's important to use the same triangulation on both sets of points, as it can otherwise lead to warping issues.
To compute the midway face, we need to consider both the warping and the coloration of the end product. To make sure that the features of both images match up, we first calculate the midway correspondence points by averaging the two sets of correspondences, then calculate the affine matrices that transform the original coordinates to the midway coordinates. We then invert those matrices to get the original region for any given region in the midway image. After that, we sample the pixel values of the original regions, then average them to find the resulting value for our midway region.
Using the techniques described in part 2, we can tweak parameters in order to create a progression of face morphs. Instead of averaging the warp and the color, we can set specific weights to both images to emphasize or de-emphasize their features. Connecting many of these morphs creates a sequence of visually smooth face morphs.
For this part, I used the publically available Danes dataset and analyzed the mean face of a wider population. The dataset itself contains 37 images, and the correspondence points are already marked and stored in files. The process of finding a mean face is functionally the same as those of the midway face, just with more than 2 images, and equal weight for each image. I calculated the mean face of the female participants in the dataset, and fitted individual images to the mean correspondence points.
For this part, instead of interpolating the geometry and creating midway faces, we extrapolate it to exaggerate specific features in the correspondence points. To do this, I subtracted the mean dane female face geometry from my own face geometry, then added that back to my geometry, scaling with a certain alpha value. Depending on the alpha, certain features of my face gets more exaggerated.
For bells and whistles, I decided to morph my face onto the average chinese female. I found the image here, and annotated a new set of correspondences to both my own picture and the image. After some cropping, I was able to apply the morph to my face.