Project 4, Face morphing

Eric's face

Eric Picture

I turn this image into George Clooney I took points from this image and then corresponding points from George Clooney using the mathlab plot library's ginput function. Then, I averaged the points to get a set of points representing the average face between the two. I ran Delauney's Triangulation algorithm on that set of points

midway

Halfway warp between Me and George

After running Delauney's triangulations in the shape of this above image, I found the corresponding triangles in the eric and the george picture. For each triangle , I found the affine transformation between the two. I used skimage's polygon for each triangle in this average shape to get the points inside. For every point, I transform it using the inverse affine transformation to both the eric and the george images. If the transformation takes the point to a place in between pixels, I interpolate the area around that place with the RectangularBivariate function to get interpolated pixel value. I take half of each picture's pixel values

George Picture

George Clooney

This is the other image I use for the halfway image on the left. I also transform the eric image to this image in the below gif.

eric to george animation

Eric to George

The transformation/animation shows different merges of the eric and the george pictures, going from more eric-heavy pictures to george-heavy pictures

daniels

Daniel to Daniel

Here is another example of a merge. Here are my two friends, Daniel Liu and Daniel Lin. This one does not look as clean because the faces did not see to align as well. The second Daniel has his eyes smaller and is looking down from an angle.

Norway

Alexander Hamilton to Thomas Jefferson

For anyone who has watched Hamilton

Data-driven image processing with Danes data set

The next set I take all the pictures from the Danes data set, average them, and do a few warps and other thigs with them. In the data set, I am already given coordinate points, so I just take these, find the average shape, triangulate it, and then warp and cross-dissolve all the images to this shape and new image. Above is the result of warping one of the pictures to the average shape

Average face.

Here is the average face of the data set. Since the data set is of a sample of 40 Danish people, we can say this is could be a rough estimate of the average Danish face. We have a blur around the sides and body because all of the photos have radiacally different bodies and clothes

Another Danish man to the average Danish face

Here is another animation/example of morphing the face of one Danish person to the data-determined average face

Danes data set on my own face: my face to the avg Dane

In these next three images I do a few experiments of the average danish face to my face. In this above picture, I am warping the shape of my head to the average Dane

Eric Caricature

Here instead of turning myself into a Dane, I extrapolate. I take out all the Danish parts of me as determined by this average image, further highlighting my color and shape features. This follows a similar method as I used to merge pictures. I just use different fractions and weights on images, giving my features more than enough weight and subtracting the danish parts.

The Average Danish face to my shape

Here I go the other way around and try to turn the avg danish man to me. The morphings look funny here because unlike the other images in the Danes set, I actually plotted my own points this time, and they seem not to work as well.

Extra Credit: Founding Fathers

If video does not play https://www.dropbox.com/s/v4fl9pxym6znqqs/fathers_vid.mp4?dl=0