This part of the project involved writing code to capture certain "feature points" for certain images. These points will then be used as correspondences to morph images. Then, you calculate a triangulation of these points so that it is possible to compute a affine transformation between any two points.
Below, you can see the original images, as well as the images with the corresponding points I created, as well as the Delaunay triangulation calculated. This triangulation was computed on the "midway" image, and plotted on the original images.
Rohan Correspondence Points
Jared Correspondence Points
Midway Images and Morphs
Now that we've defined correspondences, we can morph! For each pixel in the midway image, we find out which triangle it's in, do an inverse transformation to find out which pixel in the source images correspond to that point, and use those two pixel values to interpolate the value in the morphed image.
Below, you can see two morphs. The first is a morph from Jared Goff to Me (see above). The second is a morph from Alex Morgan to Me. (Both are Cal alums so go bears)
The "Average" Face
This task involved computing the average face among a large dataset of annotated faces. To do this, compute the average of all the corresponding points, and form points that will define the average shape. Then, compute transformations to go from triangles from each image's shape to the average shape. Then, each pixel in the average face, use the transfomations to see which pixel in each original image to steal. Average all pixel values to obtain the pixel in the average face.
Danish Person 1
Danish Person 2
Danish Person 9
The Average Dane!
Danish Person 1 morphed to average face
Danish Person 2 morphed to average face
Danish Person 9 morphed to average face
Rohan morphed to Average Face
Average Face morphed to Rohan's Face
If we move away from the mean image to accentuate my features, we get a caricature! I will admit that these don't look great because of the differences in positions of the heads, but here they are!
Caricature (t=-0.75), Cropped
Bells & Whistles
I participated in a 23-person class morph! The video is below. Props to Dorian and Michelle (aec, aaj) for leading the charge!