15-463 Project 3: Face Morphing
Fall 2008
Greg Eden


Technique for Morphing

For the first part of this assignment, I wrote a function that generates intermediate frames for a morph from one image to another, given corresponding control point pairs between the two images. Each student had to morph his or her face into the face of the next student in a list, so I started by picking 43 pairs of control points between my face and the face of the next student, Joe (following the positions and ordering of points depicted in the example image we were given). My function inserts four additional points, one at each corner of the image, so that the morph affects the entire image. I average each point in the set of control points for my face with each point in the set for Joe's face in order to get the average geometry of our two faces, and then use MATLAB's "delaunay" function to create a triangluation of the points at this midway shape. Then, to calculate an intermediate frame in the morph, I first find where the control points would be for that frame by simply calculating vectors between the two sets and adding a fraction of that vector to the locations of the points for my face. I use the indices of the triangulation I previously calculated to determine where the triangles are for that intermediate frame and, for each pixel in that frame, I determine which triangle is closest to that pixel (by using David Martin's "mytsearch" function). Then, I calculate affine transformations between those triangles and the triangles in the original images, and use these inverse warps with the "interp2" function on each RGB layer to get a morph from my face to the intermediate geometry as well as a morph from Joe's face to the intermediate geometry. Afterward, I cross-dissolve these two warped images to produce the intermediate frame for the animation.

My Face
My Face

Joe's face
Joe's Face

Reduced Size Animated Gif
Reduced-Size Animated Gif of Morph




Calculating the Average Face

In the second part of the assignment, we used the sets of 43 control points that students made for their faces, and calculated the "mean face" by averaging the sets of points together to calculate the average geometry, morphing each face into that geometry, and averaging the resulting colors together. A couple of students hadn't uploaded their control points, so I did not include those students in my calculations.

Average Face
Average Face

My Face Warped to the Average Geometry
My Face Warped to the Average Geometry

Average Face Warped to My Geometry
Average Face Warped to My Geometry