latest version v1.9 - last update 10 Apr 2010 |
This class is the data structure for a Point Distribution Model (PDM). More...
#include <ltiPointDistributionModel.h>
Public Types | |
typedef tpointList< float > | shape |
Public Member Functions | |
pointDistributionModel () | |
pointDistributionModel (const pointDistributionModel &other) | |
virtual | ~pointDistributionModel () |
pointDistributionModel & | copy (const pointDistributionModel &other) |
pointDistributionModel & | operator= (const pointDistributionModel &other) |
const char * | getTypeName () const |
virtual bool | write (ioHandler &handler, const bool complete=true) const |
virtual bool | read (ioHandler &handler, const bool complete=true) |
Public Attributes | |
shape | meanShape |
matrix< double > | eigenVectorMatrix |
vector< double > | varianceVector |
This class is the data structure for a Point Distribution Model (PDM).
A PDM allows to represent a shape and its possible deformations, by a mean shape and the eigenvectors and eigenvalues of the shape set. It is estimated by the pdmGenerator and can be used to regularize the deformations of an activeShapeModel (ASM).
For a description of PDMs see: Sonka, "Image Processing, Analysis, and Machine Vision", p380ff.
Additional Remark:
In ASMs a shape x is described as the sum of mean shape and the weighted eigenvectors. Note that in common a subset of all eigenvectors is chosen (i.e. the eigenvectors with the first n largest eigenvalues) for data compression reasons.
x = xMean + eigenVectors*w
typedef tpointList<float> lti::pointDistributionModel::shape |
Typedef for a single PDM shape.
A shape is an ordered list of landmark points of a 2D object. Generally this will be created by sampling a fixed number of N points along the boundary.
lti::pointDistributionModel::pointDistributionModel | ( | ) |
default constructor
lti::pointDistributionModel::pointDistributionModel | ( | const pointDistributionModel & | other | ) |
copy constructor
other | the object to be copied |
virtual lti::pointDistributionModel::~pointDistributionModel | ( | ) | [virtual] |
destructor
pointDistributionModel& lti::pointDistributionModel::copy | ( | const pointDistributionModel & | other | ) |
copy data of "other" pointDistributionModel.
Please note that the status string will _NOT_ be copied!
Reimplemented from lti::ioObject.
const char* lti::pointDistributionModel::getTypeName | ( | ) | const [virtual] |
returns the name of this type ("pointDistributionModel")
Reimplemented from lti::ioObject.
pointDistributionModel& lti::pointDistributionModel::operator= | ( | const pointDistributionModel & | other | ) |
assigment operator (alias for copy(other)).
other | the pointDistributionModel to be copied |
Reimplemented from lti::ioObject.
virtual bool lti::pointDistributionModel::read | ( | ioHandler & | handler, | |
const bool | complete = true | |||
) | [virtual] |
read the pointDistributionModel from the given ioHandler
handler | the ioHandler to be used | |
complete | if true (the default) the enclosing begin/end will be also written, otherwise only the data block will be written. |
Reimplemented from lti::ioObject.
virtual bool lti::pointDistributionModel::write | ( | ioHandler & | handler, | |
const bool | complete = true | |||
) | const [virtual] |
write the pointDistributionModel in the given ioHandler
handler | the ioHandler to be used | |
complete | if true (the default) the enclosing begin/end will be also written, otherwise only the data block will be written. |
Reimplemented from lti::ioObject.
The matrix of all eigenvectors computed over a set of shapes.
Eigenvectors are sorted in descending order of magnitude of their corresponding eigenvalues.
The mean (average) shape of the model.
The eigenvalues, that belong to the eigenvectors, stored in a vector.
The eigenvalue is the variance of the set of shapes along the direction of the eigenvector, that it belongs to.