Description
Point Distribution Models Read the classic paper by Cootes and Taylor on active shape models (see the PDF le of ASM) and write a program to construct a point distribution model from a set of point sets for faces (see below for a description of the data). A number of matlab utility functions are provided which you shall use for your solution. Document all equations that you use and explain what they are used for. All results should be clearly reported and discussed in the report.

(50%) Write a function that computes a mean point set and aligns all other point sets to it using a similarity transformation model of the form

sin
cos
_{y}
t_{y}
(x; y) = s
cos
sin
x
+
^{t}x
;
where s > 0 denotes scale, is a rotation angle and t_{x} and t_{y} are the x and y components for the translation respectively. Follow the steps

Set the mean to the rst point set, x = x^{1}.

Align all x^{i} to x by minimizing

M
_{x}
cos
sin
x_{j}^{i}
t_{x}
E(s; ; t_{x}; t_{y}) =
k
s
k
2
j=1
y
sin
cos
y_{j}^{i}
t_{y}
X
to obtain fx^^{1}; ; x^^{M} g. Note, getAlignedPts.m (see description below and Figure 1) performs this computation for one point set. See Appendix A in the ASM paper for a description of the solution implemented in getAlignedPts.m. Note that the solution method does not solve directly for and s, but instead for s sin and s cos . This allows for a solution by solving a linear system.
3) Calculate the new mean as
N
x = _{N}^{1} ^{X} x^^{i}
i=1


Align x to x^{1} (and use it as the new x )

Goto 2 unless x has converged.


(50%) Write a function to extract the three most important shape variations using principal component analysis. Show the results by plotting shape variations with respect to these three principal components independently by varying between two standard deviations around the mean.
Before alignment After alignment
Figure 1: Aligning a face dataset to another using getAlignedPts.m
Documentation of the data les and matlab scripts
le/directory description
dat/
Contains all the pointdata. Points are already correctly ordered, i.e., the ordering implies the correspondence.
readPoints.m
Allows you the read one of the data les (It’s a very easy format with a short header and a list of (x,y) coordinates; if you don’t want to use matlab it should be straightforward to parse it with any other software.)
readCases.m
Reads all the cases at draws them on top of each other. This gives you an idea of the misalignment that is present.
getAlignedPts.m
Aligns one point set with respect to the other using a similarity transform.
You can use this as a basis for your PDM algorithm.
testAlign.m
A test script that shows you how to use getAlignedPts.m
drawFaceParts.m
Draws the face corresponding to a set of points.
2