Note: MattyMorphosis requires msxml 3 to run. If you get msxml errors, installing Internet Explorer 6 will install the required library.
Introduction
Most people first remember morphing from Michael Jackson's "Black and White" video, in which faces would seemingly turn in to each other.
In fact, morphing is just a combination of two elements:
Warping: this is like putting a picture in front of a funhouse mirror, except with more precise control. Pulling and pushing pixels around locally, we can transform local image features. By changing the "shape" of pictures in this way, we can make two or more pictures have identically-positioned features.
Blending: This is like putting two overhead projection slides on top of each other. Once we have identically _shaped_ pictures, blending allows us to combine our warped image into a hybrid of the input images.
Warping is the more difficult, loosely defined challenge. For the user, warping means defining local features; for the computer, warping means choosing a method of pushing around pixels. I chose a line-based approach, which was pioneered by Neely and Beier back in 1992 (see bottom for more). This was the same approach used for Michael Jackson's "Black and White" video.
MattyMorphosis Feature Set
MattyMorphosis has the following features:
Image Grouping: Using two images as a basis is not as powerful as the idea of grouping a class of images together. Given twenty images of faces, for example, you might want to find the average face. MattyMorphosis allows you to keep many images (with their lines) in a single file.
Morphing Operations: creating a continuous morph between any two images, warping one image to look like another, viewing a halfway-image between two images, and finding a global average are all supported.
Flexible Line Creation: Two types of lines are supported: global lines and local lines. Blue global lines apply to every image, and are created with the left mouse button; green local lines only appear on two images, and are created with the right mouse button. Local lines allow you to specify features which are only similar between two of your images.
Image Zooming: making the window bigger will rescale the image(s), so that you can more precisely place your lines.
Flexible Image Formats: input images can be .gif's, ,.jpg's, .bmp's, or .ppm's; output images must currently be .bmp's or .ppm's.
It's important to also note what MattyMorphosis does not do. I hope to incorporate these features into later releases, but they're not ready yet:
Movie File Output: MattyMorphosis does not output avi's or mpg's, but rather a series of image frames that can be compiled into a movie (with something like Animation Shop).
Arbitrary Image Composites: It would be nice to say, "I want 30% Harry, 20% Harriet, and 50% Roy." Right now, you can only get either a global average, or an average between two images.
Automatic transform normalization: often, two images are taken from different distances, or at different rotations. Optional prerotation, prescaling, and pretranslation would make a continous morph more smooth , believable, and compressible.
Using MattyMorphosis
Starting your own project involves the following steps:
If you already have a project open, start a new one (File -> New File). If you just started MattyMorphosis, then you can just skip to the next step.
Add images to your project (via File menu)
Draw lines on one or more images. The left mouse button is used for creating new lines, moving lines, and moving line-ends. Remember, adding a line for one image adds it for other images. Each line should be adjusted to represent features on each image. A line may be deleted by hovering over it with your mouse, and pressing "delete."
The fun part: use MattyMorphosis to combine the images into something new.
Suggested Reading:
Anyone interested in morphing algorithms should definitely read: