Project 5: Face Morphing
Tristan Hale (thale)
The algorithm uses the same Poisson solver as project 2, except instead of solving for the best blends of the three color channels, we solve for the best shifts of pixels in the two Cartesian dimensions.
The goal was to smoothly blend two images by warping key points of the face as well as cross-dissolving. This makes for a smoother transition, which is more aesthetically pleasing than simply blending color values.
To start, user-defined points must be clicked for each image to be morphed. I used these 21 points as feature markers:
Then, using a morph value between 0 and 1, we give offset values to each of the feature points of the two images that would make them line up. That gives us a linear system to solve for the offset values of the remaining pixels, given the constrained offsets for the clicked pixels. This adds up to 4 Poisson optimizations for each frame: each of the x and y axes for both of the two input images.
Finally, after building the two warped images, they are simply blended together by weighting their color values.
Using the morphing algorithm, I produced a mean face, which morphed all features to their average position and then averaged the color values. Here is the mean face:
I also made a sequence of the faces as they warp between each other: