CS6640 -- Project 3
Assigned Sept 30, 2013
Due October 21 (Midnight)
A PDF version of this assignment is
here.
The purpose of this assignment is to learn about image transformations
(warping) using radial basis functions and apply this to the construction of digitial atlases and image morphing.
Please read following instructions carefully.
- You are to build a Matlab/C++ function that is executed as follows:
morph(parameter-file-name)
where parameter-file-name is of type string, and it specifies a file of parameters that will be read.
Also an example of the particular type of files your
program should read is given
here. The parameter file
specifies image files and control points. It also specifies the name
of the output file. The output file MORPH_FILE_OUTPUT is a string used as a base name for a sequence of files that are numbered to represent the morph.
Your program should properly
read a file like this and properly use the parameter. You can find
an example of a parameter file (for Matlab)
here,
and some tiff
images that go with this parameter file
here.. If you plan to use
Vispack/C++, use the the code and file format discussed for atlases, below.
- You are to build a Matlab/C++ function that is executed as follows:
atlas(parameter-file-name)
where parameter-file-name is of type string, and it specifies a file of parameters that will be read.
Also an example of the particular type of files your
program should read is given
here. The parameter file
specifies image files and control points. It also specifies the name
of the output file. The output file ATLAS_FILE_OUTPUT is an image that shows the average atlas.
Your program should properly
read a file like this and properly use the parameter. If you plan to
use Vispack/C++, there is code available to read a parameter file and
for warping images. Start with the README in
here.
To get a good grade, your report should show that you have
experimented with the registration algorithm, analyzed its behavior,
etc. Your report should explicitly answer all indicated with
underlines. You should also build your algorithm to handle some
tricky details that are not specified.
For the morping, find several example of interesting pairs of images
and present the morph for those pairs with different correspondence
strategies.
For the atlas part, test and experiment with your application on the example given
in atlastest, and build your own atlas
from the data given in atlasdata. You should also
construct one or more atlases from your own data using pictures of common
things. E.g. an atlas of faces, hands, or cars. Be creative. Use a camera if you need to. Takes pictures of hands or shoes or cars or whatever you can think of where you can construct and group to make an ``average'' or ``atlas''.
- How is the quality of the morph or atlast (shape, intensity) affected by the
number of control points?
- How is the quality of the morph or atlast (shape, intensity) affected by the
choice of radial basis functions and parameters.
- For the atlas example, what kinds points are easily found among the different brain images?
- From your experiments how does the accuracy of the control
points affect the results?
To the extent that your algorithm handles these details in a good way,
it will improve your grade.
- Warping: You should implement a radial basis function
warping routine. You should have options for compact kernels (such
as the Gaussian) and thin-plate-spline basis functions.
I strongly suggest that you implement the determination of the basis
coefficients and the application of the warp as separate
functions, and debug each of these functions independently with simple
examples.
- Contrast: A good algorithm should automatically adjust for
major intensity differences. E.g. rescaling and histogram matching.
- Image size: A good algorithm should should produce an output
image that is a good size and shape to display all of the images.
- Atlas Example: A set of input brain data images are given in
atlasexample. You should present
results with this data as well as (nonbrain) data of your own.
- Sizing Outputs:
In order to figure out the size and extent needed for the output, you
can look at where the corners of an image map. The image maps to a
quadrilateral defined by these four points.
- Atlas Translation and Scaling:
You should find the optimal transformations in this regard, apply it
to the points, and then rerun the TPSs. When you do the warp you will
have to cascade the resulting transformations. The displacements will
all be computed on data after it has undergone this linear
transformation. You can get these parameters from the linear part
of the TPS deformation. The constants give translation. This is
not necessary for the morphing.
- Anatomy Resources: As best as possible you should choose
landmarks and discuss results using some basic brain anatomy. You
can find some references on-line:
Utah Medlib Tutorial/Atlas,
Labelled Coronal Slice,
Other Brain Atlases.
This document was generated using the
LaTeX2HTML translator Version 2002-2-1 (1.71)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 project3b.tex
The translation was initiated by Ross Whitaker on 2013-09-29
Ross Whitaker
2013-09-29