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.