Project 5 Writeup

Tim St. Clair (tstclair)
March 26, 2010

Decscription

My implementation of the face warping algorithm boils down to warping an image I such that feature points in I move to the target feature points. To produce an image in between to faces, I first computed a weighted average of the feature points in both images to get where the features should be in an intermidiate frame ( intermediate_pts = ptsA*(1-warpratio) + warpratio*ptsB ). Both images are then warped to the intermediate frame and the weighted average of the warped images is given as a result ( result = warpA * (1-crossdissolve) + warpB * crossdissolve ). One consequence of this algorithm is that it is highly dependent on the selection and accurate placement of feature points. Bellow is a display of the 30 feature points I chose:
Since the warp is only well defined at the given feature points, I interpolated the warp of the other points using a poisson fill. However, as I discuss bellow, the poisson fill resulted in an over smoothing in areas with dense points (such as the eyes), which accounts for some of the images being poorly alligned.

Mean Face

One of the applications of this warping technique is the ability to compute the mean appearance of objects which do not have exactly the same shape, or are poorly alligned. Using the image data collected in class, I computed the average location for each feature point. I then warped all the images to this mean set of feature points, and took the average of the warped images. The result shown bellow (left) is still very blurry, mostly due to the poor allignment of a lot of the images, it is still better than the naive (unwarped average, shown right), particularly in the mouth region.

Results Images

The results of this were not as good as I expected. I think this is most likely due to my selection of feature ponits. For example, the borders of the jaw are frequently poorly alligned. I think this may be due to the feature point I placed where the neck becomes occluded by the face. The location of this point is highly dependent on the angle of the head, and is likely throwing off the warp from the more informative point placed at the corners of the jaw. I think a similar issue around the eyes could be caused by the placement of a point on the pupils. While such a point will not be sufficient to shift the direction of the faces gaze, it will throw off the less variable points placed at the corners of the eyes. Note: the black borders on many of the warped images is caused by the warp image trying to get data from a pixel outside the original image. This could possibly be corrected using a mirroring technique, I chose to leave it as it can be informative to see how the image is being warped.