Overview
In this project, I produce animations of morphing my face into another face by using triangulation, interpolation, and affine transform.
Approach
The morph is a simultaneous warp of image shape and a cross-dissolve of image color over time. To morph image1 to image2 over 61 animation frames, first I manually mark 67 corresponding feature points between the two images, which includes the 4 image corners. I then interpolate 59 points between each feature point pair (59 interpolated frames + 1 image1 frame + 1 image2 frame = 61). I generate a Delaunay Triangulation of the point set in the midway of interpolation.
![]() 67 control points and its triangulation |
![]() Triangulation of midway interpolated points |
For each frame, I compute inverse affine transform matrices that warp triangles in the intermediate frame to their locations in image1 and image2. Next, for each pixel in the intermediate frame, I find which triangle it belongs to by using mytsearch.m. I apply the inverse affine transform matrix of that triangle to the pixel coordinates to find its corresponding location in image1 and image2, in which I will grab the pixel intensity from. I cross-dissolve the pixel intensity from image1 with weight 1-C and image2 with weight C, where C increases uniformly from 0 to 1 for frame 0 to 61. This results in a final morphed frame.
Results
Morph
Morph my face into the next person in the class alphabetically. Download Frames
Me |
Ronald Lai |
Result |
![]() |
Mean Face
Find average face of everyone in the class. (I removed one face with bad control points)
Mean Face (All) |
Mean Face (Male) |
Mean Face (Female) |
![]() |
![]() |
![]() |
Morph my face to mean face. Download Frames
Bells and Whistles
Feminize
Warp male face into female average shape
Original |
Mean Face (Female) |
Feminized |
![]() |
![]() |
Masculinize
Warp female face into male average shape
Original |
Mean Face (Male) |
Masculinized |
![]() |
![]() |
Bulbasaur Evolution
Bulbasaur |
Ivysaur |
Venusaur |
![]() |
![]() |
![]() |
Result:
——Solar Beam!!
The transition from Bulbasaur to Ivysaur is quite smooth. However, we can see a clear ghosting effect in the final evolution to Venusaur. This is probably because Venusaur's shape and pose are so different from the previous two. Download Frames










