DigiVFX
Digital Visual Effects, Spring 2012

Jump to...

project #2
project #3
final project
assignments


project #1: image morphing

Assigned: 2012/3/3
Due: 2012/3/28 11:59pm
voting

Project description

Image morphing is a technique to synthesize a fluid transformation from one image (source image) to another (destination image). Morphing has been wildly used in making visual effects. One of the most famous morphing example is Michael Jackson's "Black or White" MTV. The morphing algorithm used to make this video has been described by Beier and Neely in their SIGGRAPH 1992 paper. As explained in class, morphing has two parts, warping and cross-dissolving. The second part is the easier part while the first part is harder. To have a visually pleasing morphing results, features in both the source and destination images have to been corresponded appropriately, usually specified by users. There are many ways for specifying the warp function. This paper gives a very through review. You are free to use any morphing algorithm you like.
  • mesh warp: the warp is specified by control meshes. The algorithm was described in class.
  • field warp: the warp is specified by a set of line pairs. An example is the Beier and Neely algorithm.
  • point warp: the warp is specified by a set of control points. A simple solution is to use triangulation to convert point warp to mesh warp. There are several more complicated techniques such as scattered data interpolation and free-form deformation.
In this project, you will implement an image morphing program in teams of two. You can choose any platform and programming language you like for your implementation. gil, as a high-level image abstration and clean image I/O interface.--> If you are not experienced with image I/O, I recommend OpenCV for reading and writing images. If you want to make a morph video, you can use VirtualDub to convert a sequence of images into a video. It is not required to implement a user interface, but you are strongly encouraged to do it.

Bells and whistles

Students will get extra points if they implement any of the following extensions:
  • multi-source morphing: synthesize morph images from more than two images, such as polymorph.
  • automatic morphing: synthesize morph sequences without any user inputs. It is very difficult for genaral images. However, it is possible if the input images are of objects of a class, such as frontal faces. This paper uses work minimization to do morphing automaticallly.
  • morphing for animated sequences as described in the Beier and Neely paper.
You are welcome to do any other extensions or develop algorithm realted to morphing. The bonus depends on how useful and difficult these extensions are.

Submission

You have to turn in your complete source, the executable, a complete test example and instruction to run the test, a report in html format (including all resources) and your favorite artifact.

The report could contain a description of this project, what you have learned from this project, description of the algorithm you implemented, implementation details, results (either good or bad), and what extensions you have implemented. You also have to submit your favorite artifact generated by the program you have implemented (not the reference software). For the artifacts for this project, submit the source, destination and middle images. A morphing video is not required, but recommended. All class participates will vote for the top three artifacts. The creators for these artifacrs will get extra bonus points.

Please refer to this document for submitting your project.

Reference software

You can try any morphing software listed in the Morphing software review page, for example, Abrosoft's FantaMorph.

Reference