A morph is a simultaneous warp and cross-dissolve of two images. Using this technique, we can create seamless morphs between images, as well as use warping to create interesting effects and caricatures.
The images have to be labeled with correspondences, and a triangulation is created over them. Here, I used the median of the point set to create the triangulation. Then, we apply this triangulation on to every point set, and create an affine transform for every triangle from the source image to the target image. Since we are using inverse warping, we use this transform to find the source pixels values of the new warp, and interpolate to get the final value.
In order to ensure continuity over the entire image, I added 10 points along each border of the image. This ensured that the triangulation covered the entire image, not just the faces.
Here, I morph my face to Max's face. The gif below is clickable, and links to the full sized gif. The 61 frames I generated can be found here.
The mean class faces were computed by finding the average shape, warping all faces to this shape, and cross-dissolving uniformly for all images.
I've also warped my shape to the average, and the average to my shape.
Mean Face | Mean Warped to Me | Me Warped to Mean |
![]() |
![]() |
![]() |
I've also computed the male and female means. The male mean is very much like the class mean, since the class is mostly male.
Female Mean Face | Female Mean Warped to Me | Me Warped to Female Mean |
![]() |
![]() |
![]() |
Male Mean Face | Male Mean Warped to Me | Me Warped to Male Mean |
![]() |
![]() |
![]() |
By using these mean images, it is possible to create masculitizing and feminizing effects. (Credits to Bowen for modelling the feminizing effect.)
Me | Male Me |
![]() |
![]() |
Bowen | Female Bowen |
![]() |
![]() |
By tweaking the triangle mesh, we can warp images to form caricatures!
1. Eyes
Small Eyes | Original | Big Eyes |
![]() |
![]() |
![]() |
2. Nose
Tiny Nose | Small Nose | Original | Big Nose | Huge Nose |
![]() |
![]() |
![]() |
![]() |
![]() |
3. Mouth
Tiny Mouth | Small Mouth | Original | Big Mouth | Wide Mouth | Full Mouth |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |