Faces morphing (Part A)

Castro Cabrera, Ramses


Description of the project

The goal of this project is to generate a morph animation from a face to the one of a classmate's in a visual change between images in a progresive-logical way. Morphing combines both geometry and colouring of objects from multiple images, with this the changes between images most be soft and progresive, allowing a perception of "morphing".

Approach

A morphed image is achieved when an image warps from an image base to a second one. The in-between images are the result of color, shape and position depending the triangulation points of the two images.
For morphing images the Delaunay triangulation provides a 'good' way to create a triangular mesh from points that are going to be moved. Each triangle can be distorted in a simple way, leading to a complex 'morphing' distortion of the overall image. In the example of morphing shown, the triangular shapes are distorted from one image to the next

Part A: Image morphing



Face morphing of calssmates

Change: Ramses - Shabnam



Image morphing (Simple images)


"lait-daniels"




"bird-plane"




"megan - gremlin"





Image morphing (My photos)


"anakin-dog"




"Portes"



Bells and Whistles (Morphing)

First of all, the biggest problem that I had was to find why the distortion of images was so evident. The problem, following the theory, says that if a triangulation it’s made, all the pixels inside the triangle will change at the same rate of the borders. So if the triangles is too big or the transition is too long, the change or in this case, the morphing, will be evident as it can be seen in the image of Anakin and he dog. .

Part B: Computing the "average face"


1- Computing the average shape
2- Warping all faces into that image
3- Average the colours together.
The program takes the bunch of images. First, it rotates each image so that the eyes are at same level; after, it resizes each image so that the eyes are the same distance apart, the same for the mouths. It then averages the pixel values between all of the images.

Classmates

Average image of the class




Average image of Utrecht




Bells and Whistles (Average face)

Honestly, the biggest problem that I had was that I didn’t know what I was doing, In fact I really don’t know at all if I did the homework as it was supposed to be done... The problem I found is, in first place, the utilization of a program in C++; my computer don’t allow to run it even if I’ve already installed two different compilers. So I decided to do it in another way.
Second, as I couldn’t open the C++ file for identify the points of each face, I decided to create a function that could do it. However I had to specify the points for each image, a total of 131 images with the ones of my classmates not included. So I decided to put five different points for this task, the most critical at my point of view: The eyes, the nose, the mouth and the chin.

Yup...