CS 194-26 Project 3: Face Morphing!

Defining Correspondences :)

First I had to pick the key points for each picture. For my first face morph, I decided to use the faces of famous actors Manny Jacinto and Simu Liu. To do this, I used ginput to click points on each image. I selected 55 points, and when the points get loaded in, the corners of the images are added to the list of points (It's a little janky but it works).

Manny Jacinto
Simu Liu

After picking points, I can then call Delaunay on them to get triangularizations for them. The tirangles ended up looking like this. I do admit I could have picked my points better, or use more points, but alas this is what I have.

Manny Jacinto with cool triangles
Simu Liu with cool triangles

Computing the "Mid-way Face"

To find the "mid-way" face, I had to morph both images to the midway image using the triangle and fun linear algebra. After I found the correct shape, I interpolated the colors from the original image to get the corresponding color in the new image, and this is the result I got.

Manny Jacinto
Sinny Lacinto
Simu Liu

The Morph Sequence

To make a gif of one image morphing to the other, I just repeated the process as getting the "mid-way" face, but changing how much of each picture weighed into the overall image.

The "Mean Face" of the Population

Now we can use the same concepts to find the average of a bunch of faces. To do this we jsut find the average of all the points, and morph each image to the average points, then we can interpolate the colors for each image and average out all of the colors. I took a dataset from here to find the average Danish face.

The "mean" Danish Face

Here I included some Danish faces whose shapes have been morphed to the average Danish face.

Dane 1
Average Dane 1
Dane 8
Average Dane 8
Dane 21
Average Dane 21
Dane 30
Average Dane 30

Now that we have the average Dane, we can now make me into a Dane, and also make the average Dane into me.

Me :)
Me as a Danish person
Danish person as me
Average Danish person

I think that if I was more careful with picking my points, these shape morphs would look better, but apparently I am really abd at picking points.

Caricatures: Extrapolating from the mean

Using a similar idea as before where I made myself Danish, I can also amplify these changes to make myself extra Danish, or even make myself very not Danish which can be seen below. Again, I think better points would do my images good.

Extra Danish version of me
Me as a Danish person
Definitley not Danish me

One thing I noticed that I thought was cool was that in my picture my smile is slightly lopsided, and when I made myself extra Danish, or extra not Danish, this feature was accentuated in either direction.

Bells & Whistles

I decided that I wanted to see what I would look like as a man, and with my new found coding skills, I could do this. Since my mom is Thai, and my dad is Vietmanese, I figured it would be best if I found the average Thai/Vietmanese man, then morph my face to that image, so I did a quick google search and found these images I took these images, then morphed them together.

Average Thai man
Average mixed Thai/Vietmanese man
Average Vietmanese man

I realize now that the mophed image is probably not great for me to morph my face onto but oh well I did it anyways. Enjoy these gifs and pics.

Me
Me morphed with Average Thai/Vietmanese man
Average Thai/Vietmanese man
Color morph
Shape morph
Full morph

Me and My Sisters

I just made this for fun. I told my sisters to send me a picture of them with a plain background, and then I would suprise them with something using the pictures. I made a morph sequence of us, and sent it to my sisters, and they were very unimpressed with my accomplishments, so that made me sad ): anyways here it is.

Me and my sisters