VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
vtkPCAAnalysisFilter Class Reference

Performs principal component analysis of a set of aligned pointsets. More...

#include <vtkPCAAnalysisFilter.h>

Inherits vtkMultiBlockDataSetAlgorithm.

Public Types

typedef
vtkMultiBlockDataSetAlgorithm 
Superclass
 

Public Member Functions

virtual int IsA (const char *type)
 
vtkPCAAnalysisFilterNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
void GetParameterisedShape (vtkFloatArray *b, vtkPointSet *shape)
 
void GetShapeParameters (vtkPointSet *shape, vtkFloatArray *b, int bsize)
 
int GetModesRequiredFor (double proportion)
 
virtual vtkFloatArray * GetEvals ()
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkPCAAnalysisFilterSafeDownCast (vtkObjectBase *o)
 
static vtkPCAAnalysisFilterNew ()
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
 vtkPCAAnalysisFilter ()
 
 ~vtkPCAAnalysisFilter ()
 
virtual int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 

Detailed Description

Performs principal component analysis of a set of aligned pointsets.

vtkPCAAnalysisFilter is a filter that takes as input a set of aligned pointsets (any object derived from vtkPointSet) and performs a principal component analysis of the coordinates. This can be used to visualise the major or minor modes of variation seen in a set of similar biological objects with corresponding landmarks. vtkPCAAnalysisFilter is designed to work with the output from the vtkProcrustesAnalysisFilter vtkPCAAnalysisFilter requires a vtkMultiBlock input consisting of vtkPointSets as first level children.

vtkPCAAnalysisFilter is an implementation of (for example):

T. Cootes et al. : Active Shape Models - their training and application. Computer Vision and Image Understanding, 61(1):38-59, 1995.

The material can also be found in Tim Cootes' ever-changing online report published at his website: http://www.isbe.man.ac.uk/~bim/

Warning
All of the input pointsets must have the same number of points.
Thanks:
Rasmus Paulsen and Tim Hutton who developed and contributed this class
See Also
vtkProcrustesAlignmentFilter
Tests:
vtkPCAAnalysisFilter (Tests)

Definition at line 61 of file vtkPCAAnalysisFilter.h.

Member Typedef Documentation

typedef vtkMultiBlockDataSetAlgorithm vtkPCAAnalysisFilter::Superclass

Definition at line 64 of file vtkPCAAnalysisFilter.h.

Constructor & Destructor Documentation

vtkPCAAnalysisFilter::vtkPCAAnalysisFilter ( )
protected
vtkPCAAnalysisFilter::~vtkPCAAnalysisFilter ( )
protected

Member Function Documentation

static int vtkPCAAnalysisFilter::IsTypeOf ( const char *  type)
static
virtual int vtkPCAAnalysisFilter::IsA ( const char *  type)
virtual
static vtkPCAAnalysisFilter* vtkPCAAnalysisFilter::SafeDownCast ( vtkObjectBase *  o)
static
virtual vtkObjectBase* vtkPCAAnalysisFilter::NewInstanceInternal ( ) const
protectedvirtual
vtkPCAAnalysisFilter* vtkPCAAnalysisFilter::NewInstance ( ) const
void vtkPCAAnalysisFilter::PrintSelf ( ostream &  os,
vtkIndent  indent 
)

Prints information about the state of the filter.

static vtkPCAAnalysisFilter* vtkPCAAnalysisFilter::New ( )
static

Creates with similarity transform.

virtual vtkFloatArray* vtkPCAAnalysisFilter::GetEvals ( )
virtual

Get the vector of eigenvalues sorted in descending order

void vtkPCAAnalysisFilter::GetParameterisedShape ( vtkFloatArray *  b,
vtkPointSet *  shape 
)

Fills the shape with: mean + b[0] * sqrt(eigenvalue[0]) * eigenvector[0] + b[1] * sqrt(eigenvalue[1]) * eigenvector[1] ... + b[sizeb-1] * sqrt(eigenvalue[bsize-1]) * eigenvector[bsize-1] here b are the parameters expressed in standard deviations bsize is the number of parameters in the b vector This function assumes that shape is already allocated with the right size, it just moves the points.

void vtkPCAAnalysisFilter::GetShapeParameters ( vtkPointSet *  shape,
vtkFloatArray *  b,
int  bsize 
)

Return the bsize parameters b that best model the given shape (in standard deviations). That is that the given shape will be approximated by: shape ~ mean + b[0] * sqrt(eigenvalue[0]) * eigenvector[0] + b[1] * sqrt(eigenvalue[1]) * eigenvector[1] ... + b[bsize-1] * sqrt(eigenvalue[bsize-1]) * eigenvector[bsize-1]

int vtkPCAAnalysisFilter::GetModesRequiredFor ( double  proportion)

Retrieve how many modes are necessary to model the given proportion of the variation. proportion should be between 0 and 1

virtual int vtkPCAAnalysisFilter::RequestData ( vtkInformation *  ,
vtkInformationVector **  ,
vtkInformationVector *   
)
protectedvirtual

Usual data generation method.


The documentation for this class was generated from the following file: