#include <itkKdTreeBasedKmeansEstimator.h>
Inheritance diagram for itk::Statistics::KdTreeBasedKmeansEstimator:
Public Types | |
typedef KdTreeBasedKmeansEstimator | Self |
typedef Object | Superclass |
typedef SmartPointer< Self > | Pointer |
typedef SmartPointer< const Self > | ConstPointer |
typedef TKdTree::KdTreeNodeType | KdTreeNodeType |
typedef TKdTree::MeasurementType | MeasurementType |
typedef TKdTree::MeasurementVectorType | MeasurementVectorType |
typedef TKdTree::InstanceIdentifier | InstanceIdentifier |
typedef TKdTree::SampleType | SampleType |
typedef KdTreeNodeType::CenteroidType | CenteroidType |
typedef itk::hash_map< InstanceIdentifier, unsigned int > | ClusterLabelsType |
typedef FixedArray< double, itkGetStaticConstMacro(MeasurementVectorSize) | ParameterType ) |
typedef std::vector< ParameterType > | InternalParametersType |
typedef Array< double > | ParametersType |
Public Methods | |
virtual const char * | GetClassName () const |
itkStaticConstMacro (MeasurementVectorSize, unsigned int, TKdTree::MeasurementVectorSize) | |
void | SetParameters (ParametersType ¶ms) |
ParametersType & | GetParameters () |
void | SetKdTree (TKdTree *tree) |
TKdTree * | GetKdTree () |
virtual int | GetCurrentIteration () const |
virtual double | GetCenteroidPositionChanges () const |
void | StartOptimization () |
void | SetUseClusterLabels (bool flag) |
ClusterLabelsType * | GetClusterLabels () |
virtual void | SetMaximumIteration (int _arg) |
virtual int | GetMaximumIteration () const |
virtual void | SetCenteroidPositionChangesThreshold (double _arg) |
virtual double | GetCenteroidPositionChangesThreshold () const |
Static Public Methods | |
Pointer | New () |
Protected Methods | |
KdTreeBasedKmeansEstimator () | |
virtual | ~KdTreeBasedKmeansEstimator () |
void | PrintSelf (std::ostream &os, Indent indent) const |
void | FillClusterLabels (KdTreeNodeType *node, int closestIndex) |
double | GetSumOfSquaredPositionChanges (InternalParametersType &previous, InternalParametersType ¤t) |
int | GetClosestCandidate (ParameterType &measurements, std::vector< int > &validIndexes) |
bool | IsFarther (ParameterType &pointA, ParameterType &pointB, MeasurementVectorType &lowerBound, MeasurementVectorType &upperBound) |
void | Filter (KdTreeNodeType *node, std::vector< int > validIndexes, MeasurementVectorType &lowerBound, MeasurementVectorType &upperBound) |
void | CopyParameters (InternalParametersType &source, InternalParametersType &target) |
void | CopyParameters (ParametersType &source, InternalParametersType &target) |
void | CopyParameters (InternalParametersType &source, ParametersType &target) |
void | PrintPoint (ParameterType &point) |
void | GetPoint (ParameterType &point, MeasurementVectorType &measurements) |
It returns k mean vectors that are centeroids of k-clusters using pre-generated k-d tree. k-d tree generation is done by the WeightedCenteroidKdTreeGenerator. The tree construction needs to be done only once. The resulting k-d tree's non-terminal nodes that have their children nodes have vector sums of measurement vectors that belong to the nodes and the number of measurement vectors in addition to the typical node boundary information and pointers to children nodes. Instead of reassigning every measurement vector to the nearest cluster centeroid and recalculating centeroid, it maintain a set of cluster centeroid candidates and using pruning algorithm that utilizes k-d tree, it updates the means of only relevant candidates at each iterations. It would be faster than traditional implementation of k-means algorithm. However, the k-d tree consumes a large amount of memory. The tree construction time and pruning algorithm's performance are important factors to the whole process's performance. If users want to use k-d tree for some purpose other than k-means estimation, they can use the KdTreeGenerator instead of the WeightedCenteroidKdTreeGenerator. It will save the tree construction time and memory usage.
Definition at line 55 of file itkKdTreeBasedKmeansEstimator.h.
|
Definition at line 77 of file itkKdTreeBasedKmeansEstimator.h. |
|
Definition at line 124 of file itkKdTreeBasedKmeansEstimator.h. |
|
Reimplemented from itk::Object. Definition at line 63 of file itkKdTreeBasedKmeansEstimator.h. |
|
Definition at line 75 of file itkKdTreeBasedKmeansEstimator.h. |
|
Parameters type. It defines a position in the optimization search space. Definition at line 85 of file itkKdTreeBasedKmeansEstimator.h. |
|
Types for the KdTree data structure Definition at line 72 of file itkKdTreeBasedKmeansEstimator.h. |
|
Definition at line 73 of file itkKdTreeBasedKmeansEstimator.h. |
|
Definition at line 74 of file itkKdTreeBasedKmeansEstimator.h. |
|
Parameters type. It defines a position in the optimization search space. Definition at line 86 of file itkKdTreeBasedKmeansEstimator.h. |
|
Parameters type. It defines a position in the optimization search space. Definition at line 84 of file itkKdTreeBasedKmeansEstimator.h. |
|
Reimplemented from itk::Object. Definition at line 62 of file itkKdTreeBasedKmeansEstimator.h. |
|
Definition at line 76 of file itkKdTreeBasedKmeansEstimator.h. |
|
Standard "Self" typedef. Reimplemented from itk::Object. Definition at line 60 of file itkKdTreeBasedKmeansEstimator.h. |
|
Reimplemented from itk::Object. Definition at line 61 of file itkKdTreeBasedKmeansEstimator.h. |
|
|
|
Definition at line 134 of file itkKdTreeBasedKmeansEstimator.h. |
|
copies the source parameters (k-means) to the target |
|
copies the source parameters (k-means) to the target |
|
copies the source parameters (k-means) to the target |
|
|
|
recursive pruning algorithm. the "validIndexes" vector contains only the indexes of the surviving candidates for the "node" |
|
|
|
Set/Get the termination threshold for the squared sum of changes in centeroid postions after one iteration |
|
Run-time type information (and related methods). Reimplemented from itk::Object. |
|
get the index of the closest candidate to the "measurements" measurement vector |
|
Definition at line 129 of file itkKdTreeBasedKmeansEstimator.h. |
|
|
|
Definition at line 112 of file itkKdTreeBasedKmeansEstimator.h. |
|
Set/Get maximum iteration limit. |
|
Get current position of the optimization. Definition at line 94 of file itkKdTreeBasedKmeansEstimator.h. |
|
imports the "measurements" measurement vector data to the "point" Definition at line 253 of file itkKdTreeBasedKmeansEstimator.h. |
|
gets the sum of squared difference between the previous position and current postion of all centeroid. This is the primary termination condition for this algorithm. If the return value is less than the value that was set by the SetCenteroidPositionChangesThreshold method. |
|
returns true if the "pointA is farther than pointB to the boundary |
|
|
|
Method for creation through the object factory. Reimplemented from itk::Object. |
|
Definition at line 263 of file itkKdTreeBasedKmeansEstimator.h. |
|
Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes. Reimplemented from itk::Object. |
|
Set/Get the termination threshold for the squared sum of changes in centeroid postions after one iteration |
|
Set/Get the pointer to the KdTree Definition at line 109 of file itkKdTreeBasedKmeansEstimator.h. |
|
Set/Get maximum iteration limit. |
|
Set the position to initialize the optimization. Definition at line 90 of file itkKdTreeBasedKmeansEstimator.h. |
|
Definition at line 126 of file itkKdTreeBasedKmeansEstimator.h. |
|
Start optimization Optimization will stop when it meets either of two termination conditions, the maximum iteration limit or epsilon (minimal changes in squared sum of changes in centeroid positions) |