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 Narayan

Jared Goff

Rohan Correspondence Points

Jared Correspondence Points

Rohan Triangles

Jared Triangles

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)

Jared+Rohan Midway

Rohan Narayan

Alex Morgan

Alex+Rohan Midway

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

Caricatures

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.25)

Caricature (t=-0.5)

Caricature (t=-0.75)

Caricature (t=-1)

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!