CS 194-26: Project 3

Vinay Chadalavada

Defining Correspondences

In this section I marked the key features for each image and then used the Delaunay function to produce a good triangulation. The two images I decided to morph together are me and Mark Zuckerburg

The images aboves are my starting images in the process

The images above are annotated with the triangulations computed

Computing the "Mid-way Face"

In this part we will be finding the half way point between mine and Mark's face. To this we will compute the average shape which is just (myPoints + marksPoints) / 2 and then for each triangle in the average shapes we try to find the corresponding coordinates in the triangles drawn on mine and Mark's faces. Since we might land on a fractional pixel value we will use RectBivariateSpline to interpolate. The cross diffusion will be set to 0.5.

First picture is my face, then the mid-way face, and the thrid is Mark's face

The Morph Sequence

In this part we can use what we learned in the previous part to create an entire morph sequence. Instead of a 50/50 split when doing cross dissolve or finding the shape we can gradually increase it so one image can morph into the other.

Morph that changes my face to Mark's: Youtube Video Link

The "Mean face" of a population

Here we will be trying to find the average face of a collection of photos. We can find the average shape by looking at the average of their annotated points and then equality cross dissolve each image.

This is the average Danish face that I was able to compute.

Warped Image 1 into the Average Dane Shape

Warped Image 5 into the Average Dane Shape

Warped Image 8 into the Average Dane Shape

Warped my face into the Average Dane Shape. Looks a little strange but the faces in the data set were longer so the elongated result makes sense.

Warped the average Dane face into the shape of my face

Caricatures: Extrapolating from the mean

Using the mean danish face we computed, we can extrapolate our image to become more image. We can compute the shape we want to warp to with the equation: myShape + alpha * (danishShape - myShape). If alpha is greater than 1 it is an extrapolation to become more Danish, if its between 0 and 1, its an interpolation, and negative values make your image less Danish.

The above are images morphed with different alphas, respectively 0.5, 0.75, 1, 1.25. It seems my face is becoming elongated and my nose is becoming thinner, and eyes are becoming more circular. I think better image alignment could fix some of the elongation.

Bells and Whistles

We can also use other average pictures to make our pictures take on different features. In this case, I will use the average face of an Indian female to make my image more feminine. The alpha I used in this example is 0.7 (leaning toward the female picture).

Here are the original images, respectively my face and then the average Indian female face.

Here are the 3 different warps: Color Only, Shape Only, Both. Clearly, combining both methods turned out the best and actually looks pretty feminine.

Acknowledgements

Websites Where Some of My Images Came From

Mark Zuckerberg
Average Indian Female Face
Danish Image Set