Morphing

COMPSCI 194-26: Computational Photography & Computer Vision

Professors Alexei Efros & Angjoo Kanazawa

September 26th, 2021

Nick Kisel

Foreword

Why'd he choose those images?

"Gigachad" image courtesy of photographer Krista Sudmalis & model Ernest Khalimov.

The subject of the "Average Fan" image is YouTuber James' YouNiverse.

Fun with Frequencies

Face morphing

This technique involves selecting an equivalent number of points on matching features of the two input images (it is highly important that these points be selected in the exact same order to ensure that the correct regions of the image are aligned and morphed). This set of points provides a method for us to generate several matching triangles on the images. For example, if you take the triangle generated by connecting vertices 0, 1, and 2 (or any other set of 3 points) on the input image and compare them to the triangle formed by connecting the vertices of the same numbers on the transformation image, you'll notice that the two shapes aren't exactly congruent, but they contain the same "content." In the case of a face, this might encase a nose, an eye, or the background. Once the corresponding points have been defined, morphing the image becomes a process of transforming the corresponding points inside the triangle of the input image to more & more closely match the shape of the output image. Then, if you're doing a morph video, you can substitute in a mix of the pixels of the input image and transformation image such that the middle of the morph sequence becomes the perfect "in-between" image - a combination of both the color and shape features of both images.

Nick

> 99.9% Nick


>
Nick

Nick's looking a little different


>
Hybrid

Giganick


>
Chad

Chad


>
Gigachad

> 99.9% Gigachad


Nick

> Nick with input points


&
Gigachad

Gigachad with input points


Brandon

Brandon


>
Brandon

(thanks for posing for this!)


>
Brandon

Average Frandon


>
Brandon

Above-average Fan


>
Brandon

Average Fan


Brandon

> Brandon with input points


&

the Average Fan with input points


See the full transformations here:


The Mean Face of a population

Next, I downloaded the FEI annotated faces database and got to work. This database contains 200 unique faces, each with 2 expressions. Each of these 400 total images contains 46 total "annotations," or systematically mapped points. That is to say, point 0 and 1 always lie on the left and right nostrils, and the rest of the points similarly lie on other specifically pre-defined locations and features of the face.
For each of the 46 points in each annotated face in the dataset, I found the average position of each. That is, I found the average position of all left nostrils, all right nostrils, noses, eyebrows, chins - you name it. Once I had the average feature locations, I put them together into a final "average face" set of points. Here's what that looks like.

Mean face

Population mean face.


With this set up, I mapped the same 46 points onto my face.


&


Population mean face


&


Population mean face

Population mean stretched to my face


&

My face stretched to the population mean


These last two results are quite jarring, aren't they? That's because of two reasons: first, it's that my facial features are more vertically spread than average (just look at my long nose!); second, it's because my alignment isn't standardized to the other photos, and I opted to have my hair and blank wall space in the photo. Thus, we're stretching a lot of pixels around the edges to get these faces to morph into each other.








Now, here are some samples of images from the collection, then stretched to the mean face.

4a


&


16b


&


61a


&


61b


&


161a


&


149a


&


186a


&


194a


&






Caricatures

We can also push the points even further in the direction of the morph image and create caricatures. Here's what that looks like, moving from Gigachad, deep into myself:

Gigachad


>

Halfway to me


Me


Beyond me


Warping the image


Pointy


You'll notice Gigachad has an extremely deep chin, so as we move further towards a caricature of me, my chin severely recedes. Since his left shoulder is positioned far lower than mine, my shoulder greatly rises up.

Bell & Whistle

What if the process works on biceps?

Since the mid-1960s, the Mr. Olympia championship has posed the largest bodybuilders of all time against each other in a competition judging who has the largest, most impressive muscles of all. I've compiled a morph between the Mr. Olympia winners over the years - only in this case, we merge the images together on pre-defined points on the competitor's biceps rather than their faces. There were challenges in getting this to work, particularly related to finding the same pose among all participants. For many, a double bicep pose wasn't available, so I flipped images to get a nice bicep flex on the right side of the image at the very least. Then, since the photography dates back to the 1960's and isn't so popular, the best images on the web for the old guard Mr. Olympia. Without further ado, the biceps pose bodybuilder music video:



Founding the CS194-26 music video

I looked for partners for this part early on via Piazza, but didn't get much of a response for a while. At the very least, I'd like to show off my entry into the class music video. I mapped 43 points along my classmate and I's faces, shown below. Notice that there's a massive difference in not just our hairstyles, but the proximity of the edges of our facial features. Some of the points on my face are cramped together, which they're more spread apart on my classmates' face. In particular, having to move down points 20-22 of my face into my classmates' is probably what ended up causing some of those triangles to interleave.