|Line Correspondence Editor|
One requirement for the first assignment is that you create a
90-frame transition between a digital image of yourself and
another classmate (these images are assigned by the TA and you
will receive them in e-mail). You are required to implement a
standard cross-fade between the two images, but you can receive
more credit (and the results will look considerably cooler) if
you implement the Beier-Neeley morph as described in this paper.
In order to specify these morphs you need a way of defining line correspondences -- that is, a set of pairs of lines in the two images that indicate the position of corresponding features (i.e. nose to nose, upper lip to upper lip, etc.). The morphing algorithm uses these pairs of corresponding lines to evaluate the morph at each frame in the transition.
We are providing a stand-alone utility that should help you specify these line correspondences between image pairs. This program is essentially a simple interface that lets you click points in the two images to specify pairs of lines and then lets you save these line correspondences to a text file that can be loaded within the body of your main program (see the function main.ccp::ReadCorrespondences()).
Here is a screenshot of the correspondence editor:
Each blue line in the left image has an associated line in the
right image (the dots indicate the start of the line segment
since orientation is important). This entire set of lines will
define the correspondence used as input for a Beier-Neely
morph between these two images. |
This application is executed with the following commands:
corr.exe picA.bmp picB.bmp [-s #scale] [-f line_pair_text_file]
In this example, the application loads the images 'picA.bmp' and 'picB.bmp' for specifying line pairs. The optional argument '#scale' specifies the scale of each image in the window (the default is 0.5 and should be fine for the size of the digital images you will receive). The optional argument for 'line_pair_text_file' is an existing text file that contains line correspondences in the format created by this program and read by the function main.cpp::ReadCorrespondences (this allows you to edit the same function several times).
You create line pairs by first specifying the start and end coordinate by clicking in the left image and then doing the same in the right image. Type 'h' to see a list of commands within the program. When you are satisfied with the set of line pairs press the 's' key to save them to a local text file that is in the format expected by the main.cpp::ReadCorrespondences() function in your main program.
Should you encounter any problems/bugs with this application please e-mail the TA (email@example.com).