Project 5: Face Morphing

Donnie Kendall (dkendall)

Algorithm

For the morph animation I generated 61 frames with frames 1 and 61 being composed of 100% the begining or ending face, and the intermediate frames interpolated in increments of 1/60. If we take the interpolation value to be i, then for each control point I calculated the current location of it as (ptsA * i) + (ptsB * (1 - i)) to give the location of the control points for the current frame.

The offsets of the fixed control points were poisson blended acorss the entire frame to give an warping offset for each pixel. These pixels were then used to interpolate from the starting and ending images using the matlab function interp2. The interpolated images were then blended together with the same blending function used to calcualte the control point locations.

The class average face (seen at the right) was calcualted in a similar manner. First the location of the control points for all of the images were averaged together. Then, for each face, the difference of the location of its acutal control points and the average control points were calculated and used to build the interpolation field. The images calculated using interp2 were then averaged together.

Results

I used a total of 36 control points per face. 3 on each eye, 3 on each eyebrow, 5 for the nose, 5 for the mouth, 3 on each ear, 3 for the bottom curve of the face, and 5 for the top curve. I did not use any on the background of the image, and this is evident due to the way it sometimes warps in toward the face during the morphing process (the algorithm had no idea that the background should stay still, so the poisson blending tends to pull in with the morph).

The results of this technique were very good. The average face, seen above, is bland (as expected), but recognizably a face. There is some noise from the wildly varying hairstyles and glasses, but this isn't unexpected.

Individual morph animations are decent. Due to a slight mistake in my scripting the final mega-morph video jumps around instead of being a smooth face-to-face morph, but I left it as is.

There are 18 individual morph videos, and associated sets of frames below, as well as the video combining all of the morphs. The thumbnail image accompanying each is the image for the 30th frame (the 50% point). Click on the thumbnail to download the video file, or click on either of the text links. The large video does not have an associated thumbnail.

Super all-morph. Now in random order!


Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames

Video file
Individual frames