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>

Inheritance diagram for vtkPCAAnalysisFilter:
[legend]
Collaboration diagram for vtkPCAAnalysisFilter:
[legend]

Public Types

typedef
vtkMultiBlockDataSetAlgorithm 
Superclass
 
- Public Types inherited from vtkMultiBlockDataSetAlgorithm
typedef vtkAlgorithm Superclass
 
- Public Types inherited from vtkAlgorithm
typedef vtkObject Superclass
 
enum  DesiredOutputPrecision { SINGLE_PRECISION, DOUBLE_PRECISION, DEFAULT_PRECISION }
 

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 ()
 
- Public Member Functions inherited from vtkMultiBlockDataSetAlgorithm
vtkMultiBlockDataSetAlgorithmNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
vtkMultiBlockDataSetGetOutput ()
 
vtkMultiBlockDataSetGetOutput (int)
 
void SetInputData (vtkDataObject *)
 
void SetInputData (int, vtkDataObject *)
 
virtual int ProcessRequest (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
 
- Public Member Functions inherited from vtkAlgorithm
vtkAlgorithmNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent)
 
int HasExecutive ()
 
vtkExecutiveGetExecutive ()
 
virtual void SetExecutive (vtkExecutive *executive)
 
virtual int ModifyRequest (vtkInformation *request, int when)
 
vtkInformation * GetInputPortInformation (int port)
 
vtkInformation * GetOutputPortInformation (int port)
 
int GetNumberOfInputPorts ()
 
int GetNumberOfOutputPorts ()
 
void UpdateProgress (double amount)
 
vtkInformation * GetInputArrayInformation (int idx)
 
void RemoveAllInputs ()
 
vtkDataObjectGetOutputDataObject (int port)
 
virtual void RemoveInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void RemoveInputConnection (int port, int idx)
 
virtual void RemoveAllInputConnections (int port)
 
int GetNumberOfInputConnections (int port)
 
int GetTotalNumberOfInputConnections ()
 
vtkAlgorithmOutputGetInputConnection (int port, int index)
 
vtkAlgorithmGetInputAlgorithm (int port, int index, int &algPort)
 
vtkAlgorithmGetInputAlgorithm (int port, int index)
 
vtkExecutiveGetInputExecutive (int port, int index)
 
vtkInformation * GetInputInformation (int port, int index)
 
vtkInformation * GetOutputInformation (int port)
 
virtual void UpdateInformation ()
 
virtual void PropagateUpdateExtent ()
 
virtual void UpdateWholeExtent ()
 
void ConvertTotalInputToPortConnection (int ind, int &port, int &conn)
 
virtual double ComputePriority ()
 
int SetUpdateExtentToWholeExtent (int port)
 
int SetUpdateExtentToWholeExtent ()
 
void SetUpdateExtent (int port, int extent[6])
 
int ProcessRequest (vtkInformation *request, vtkCollection *inInfo, vtkInformationVector *outInfo)
 
virtual int ComputePipelineMTime (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, unsigned long *mtime)
 
virtual vtkInformation * GetInformation ()
 
virtual void SetInformation (vtkInformation *)
 
virtual void Register (vtkObjectBase *o)
 
virtual void UnRegister (vtkObjectBase *o)
 
virtual void SetAbortExecute (int)
 
virtual int GetAbortExecute ()
 
virtual void AbortExecuteOn ()
 
virtual void AbortExecuteOff ()
 
virtual void SetProgress (double)
 
virtual double GetProgress ()
 
void SetProgressText (const char *ptext)
 
virtual char * GetProgressText ()
 
virtual unsigned long GetErrorCode ()
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, const char *name)
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, int fieldAttributeType)
 
virtual void SetInputArrayToProcess (int idx, vtkInformation *info)
 
virtual void SetInputArrayToProcess (int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName)
 
vtkDataObjectGetInputDataObject (int port, int connection)
 
virtual void SetInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void SetInputConnection (vtkAlgorithmOutput *input)
 
virtual void AddInputConnection (int port, vtkAlgorithmOutput *input)
 
virtual void AddInputConnection (vtkAlgorithmOutput *input)
 
virtual void SetInputDataObject (int port, vtkDataObject *data)
 
virtual void SetInputDataObject (vtkDataObject *data)
 
virtual void AddInputDataObject (int port, vtkDataObject *data)
 
virtual void AddInputDataObject (vtkDataObject *data)
 
vtkAlgorithmOutputGetOutputPort (int index)
 
vtkAlgorithmOutputGetOutputPort ()
 
vtkAlgorithmGetInputAlgorithm ()
 
vtkExecutiveGetInputExecutive ()
 
vtkInformation * GetInputInformation ()
 
virtual void Update (int port)
 
virtual void Update ()
 
virtual void SetReleaseDataFlag (int)
 
virtual int GetReleaseDataFlag ()
 
void ReleaseDataFlagOn ()
 
void ReleaseDataFlagOff ()
 
int UpdateExtentIsEmpty (vtkInformation *pinfo, vtkDataObject *output)
 
int UpdateExtentIsEmpty (vtkInformation *pinfo, int extentType)
 
void SetUpdateExtent (int port, int piece, int numPieces, int ghostLevel)
 
void SetUpdateExtent (int piece, int numPieces, int ghostLevel)
 
void SetUpdateExtent (int extent[6])
 
int * GetUpdateExtent ()
 
int * GetUpdateExtent (int port)
 
void GetUpdateExtent (int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
void GetUpdateExtent (int port, int &x0, int &x1, int &y0, int &y1, int &z0, int &z1)
 
void GetUpdateExtent (int extent[6])
 
void GetUpdateExtent (int port, int extent[6])
 
int GetUpdatePiece ()
 
int GetUpdatePiece (int port)
 
int GetUpdateNumberOfPieces ()
 
int GetUpdateNumberOfPieces (int port)
 
int GetUpdateGhostLevel ()
 
int GetUpdateGhostLevel (int port)
 

Static Public Member Functions

static int IsTypeOf (const char *type)
 
static vtkPCAAnalysisFilterSafeDownCast (vtkObjectBase *o)
 
static vtkPCAAnalysisFilterNew ()
 
- Static Public Member Functions inherited from vtkMultiBlockDataSetAlgorithm
static
vtkMultiBlockDataSetAlgorithm
New ()
 
static int IsTypeOf (const char *type)
 
static
vtkMultiBlockDataSetAlgorithm
SafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkAlgorithm
static vtkAlgorithmNew ()
 
static int IsTypeOf (const char *type)
 
static vtkAlgorithmSafeDownCast (vtkObjectBase *o)
 
static void SetDefaultExecutivePrototype (vtkExecutive *proto)
 
static vtkInformationIntegerKey * INPUT_IS_OPTIONAL ()
 
static vtkInformationIntegerKey * INPUT_IS_REPEATABLE ()
 
static
vtkInformationInformationVectorKey * 
INPUT_REQUIRED_FIELDS ()
 
static
vtkInformationStringVectorKey * 
INPUT_REQUIRED_DATA_TYPE ()
 
static
vtkInformationInformationVectorKey * 
INPUT_ARRAYS_TO_PROCESS ()
 
static vtkInformationIntegerKey * INPUT_PORT ()
 
static vtkInformationIntegerKey * INPUT_CONNECTION ()
 
static vtkInformationIntegerKey * PRESERVES_DATASET ()
 
static vtkInformationIntegerKey * PRESERVES_GEOMETRY ()
 
static vtkInformationIntegerKey * PRESERVES_BOUNDS ()
 
static vtkInformationIntegerKey * PRESERVES_TOPOLOGY ()
 
static vtkInformationIntegerKey * PRESERVES_ATTRIBUTES ()
 
static vtkInformationIntegerKey * PRESERVES_RANGES ()
 
static vtkInformationIntegerKey * MANAGES_METAINFORMATION ()
 

Protected Member Functions

virtual vtkObjectBase * NewInstanceInternal () const
 
 vtkPCAAnalysisFilter ()
 
 ~vtkPCAAnalysisFilter ()
 
virtual int RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
- Protected Member Functions inherited from vtkMultiBlockDataSetAlgorithm
 vtkMultiBlockDataSetAlgorithm ()
 
 ~vtkMultiBlockDataSetAlgorithm ()
 
virtual vtkExecutiveCreateDefaultExecutive ()
 
virtual int FillOutputPortInformation (int port, vtkInformation *info)
 
virtual int FillInputPortInformation (int port, vtkInformation *info)
 
vtkDataObjectGetInput (int port)
 
virtual int RequestDataObject (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
virtual int RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *)
 
- Protected Member Functions inherited from vtkAlgorithm
 vtkAlgorithm ()
 
 ~vtkAlgorithm ()
 
virtual void SetNumberOfInputPorts (int n)
 
virtual void SetNumberOfOutputPorts (int n)
 
int InputPortIndexInRange (int index, const char *action)
 
int OutputPortIndexInRange (int index, const char *action)
 
int GetInputArrayAssociation (int idx, vtkInformationVector **inputVector)
 
virtual void ReportReferences (vtkGarbageCollector *)
 
virtual void SetNumberOfInputConnections (int port, int n)
 
int GetInputArrayAssociation (int idx, int connection, vtkInformationVector **inputVector)
 
int GetInputArrayAssociation (int idx, vtkDataObject *input)
 
vtkDataArray * GetInputArrayToProcess (int idx, vtkInformationVector **inputVector)
 
vtkDataArray * GetInputArrayToProcess (int idx, vtkInformationVector **inputVector, int &association)
 
vtkDataArray * GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector)
 
vtkDataArray * GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association)
 
vtkDataArray * GetInputArrayToProcess (int idx, vtkDataObject *input)
 
vtkDataArray * GetInputArrayToProcess (int idx, vtkDataObject *input, int &association)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector, int &association)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, vtkDataObject *input)
 
vtkAbstractArray * GetInputAbstractArrayToProcess (int idx, vtkDataObject *input, int &association)
 
vtkInformation * GetInputArrayFieldInformation (int idx, vtkInformationVector **inputVector)
 
virtual void SetNthInputConnection (int port, int index, vtkAlgorithmOutput *input)
 
void SetInputDataInternal (int port, vtkDataObject *input)
 
void AddInputDataInternal (int port, vtkDataObject *input)
 
virtual void SetErrorCode (unsigned long)
 

Additional Inherited Members

- Public Attributes inherited from vtkAlgorithm
int AbortExecute
 
- Static Protected Member Functions inherited from vtkAlgorithm
static vtkInformationIntegerKey * PORT_REQUIREMENTS_FILLED ()
 
- Protected Attributes inherited from vtkAlgorithm
vtkInformation * Information
 
double Progress
 
char * ProgressText
 
unsigned long ErrorCode
 
- Static Protected Attributes inherited from vtkAlgorithm
static vtkExecutiveDefaultExecutivePrototype
 

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

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

Reimplemented from vtkMultiBlockDataSetAlgorithm.

static vtkPCAAnalysisFilter* vtkPCAAnalysisFilter::SafeDownCast ( vtkObjectBase *  o)
static
virtual vtkObjectBase* vtkPCAAnalysisFilter::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkMultiBlockDataSetAlgorithm.

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.

Reimplemented from vtkMultiBlockDataSetAlgorithm.


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