← Portfolio
Face Morphing
Morphed faces from using inverse warping, created "average" faces, extrapolated faces to make caricatures
Details
The whole goal of this project was to master the idea that images, along with their color, edges, and geometry, can be treated like any other mathematical object. That is, they can be interpolated and averaged. Though this is a oversimplification, we can use this idea take warp faces together, create the “mean” face of a demographic, extrapolate faces to make caricaturs, and even extrapolate faces through gender, race, and age. Now let’s go in more detail. For exaple, morphing was done by:
- Manually choosing control points on the source and destination images.
- Computing an weighted average geometry between the soure and destination image. This was done by taking the sum of (1-t)*source_pixels and t*destination_pixels. The weights are normalized to sum to t.
- Finding the Delaunay triangulation for one of the set of xy control points and using the same triangluation for the other set of control points.
- Calculating the affine transformation needed to warp all triangles in the weighted average image their corresponding triangles in the source image. Likewise, affines were found to map weight average triangles to the destination image.
- Using t-search to categorize every pixel in the average image under the one of the triangles in step 3. As we do this we can look up the affine transformations we found in step 4 to color this pixel using inverse warping.
- Repeat this for a bunch of t's in a continuous range, lets say [0, 1] to create a smooth animation from source to destination image.
The results of face morphing are shown below. If you’d like to know more the full project page can be seen at my original project page .
Gallery