Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::Statistics::KdTree< TSample > Class Template Reference

This class provides methods for k-nearest neighbor search and related data structures for a k-d tree. More...

#include <itkKdTree.h>

Inheritance diagram for itk::Statistics::KdTree< TSample >:

Inheritance graph
[legend]
Collaboration diagram for itk::Statistics::KdTree< TSample >:

Collaboration graph
[legend]
List of all members.

[NOHEADER]

int SearchLoop (const KdTreeNodeType *node, MeasurementVectorType &query, MeasurementVectorType &lowerBound, MeasurementVectorType &upperBound) const

Public Types

typedef KdTree Self
typedef Object Superclass
typedef SmartPointer< SelfPointer
typedef SmartPointer< const
Self
ConstPointer
typedef TSample SampleType
typedef TSample::MeasurementVectorType MeasurementVectorType
typedef TSample::MeasurementType MeasurementType
typedef TSample::InstanceIdentifier InstanceIdentifier
typedef TSample::FrequencyType FrequencyType
typedef EuclideanDistance<
MeasurementVectorType
DistanceMetricType
typedef KdTreeNode< TSample > KdTreeNodeType
typedef std::pair< InstanceIdentifier,
double > 
NeighborType
typedef std::vector< InstanceIdentifierInstanceIdentifierVectorType
typedef TSample::Iterator Iterator
typedef TSample::ConstIterator ConstIterator

Public Member Functions

virtual const char * GetClassName () const
 itkStaticConstMacro (MeasurementVectorSize, unsigned int, TSample::MeasurementVectorSize)
void SetBucketSize (unsigned int size)
void SetSample (const TSample *sample)
const TSample * GetSample () const
unsigned long Size () const
KdTreeNodeTypeGetEmptyTerminalNode ()
void SetRoot (KdTreeNodeType *root)
KdTreeNodeTypeGetRoot ()
const MeasurementVectorTypeGetMeasurementVector (InstanceIdentifier id) const
FrequencyType GetFrequency (InstanceIdentifier id) const
DistanceMetricTypeGetDistanceMetric ()
void Search (MeasurementVectorType &query, unsigned int k, InstanceIdentifierVectorType &result) const
void Search (MeasurementVectorType &query, double radius, InstanceIdentifierVectorType &result) const
int GetNumberOfVisits () const
bool BallWithinBounds (MeasurementVectorType &query, MeasurementVectorType &lowerBound, MeasurementVectorType &upperBound, double radius) const
bool BoundsOverlapBall (MeasurementVectorType &query, MeasurementVectorType &lowerBound, MeasurementVectorType &upperBound, double radius) const
void DeleteNode (KdTreeNodeType *node)
void PrintTree (KdTreeNodeType *node, int level, unsigned int activeDimension)
Iterator Begin ()
Iterator End ()
ConstIterator Begin () const
ConstIterator End () const

Static Public Member Functions

Pointer New ()

Protected Member Functions

 KdTree ()
virtual ~KdTree ()
void PrintSelf (std::ostream &os, Indent indent) const
int NearestNeighborSearchLoop (const KdTreeNodeType *node, MeasurementVectorType &query, MeasurementVectorType &lowerBound, MeasurementVectorType &upperBound) const

Detailed Description

template<class TSample>
class itk::Statistics::KdTree< TSample >

This class provides methods for k-nearest neighbor search and related data structures for a k-d tree.

An object of this class stores instance identifiers in a k-d tree that is a binary tree with childrens split along a dimension among k-dimensions. The dimension of the split (or partition) is determined for each nonterminal node that has two children. The split process is terminated when the node has no children (when the number of measurement vectors is less than or equal to the size set by the SetBucketSize. That is The split process is a recursive process in nature and in implementation. This implementation doesn't support dynamic insert and delete operations for the tree. Instead, we can use the KdTreeGenerator or WeightedCentroidKdTreeGenerator to generate a static KdTree object.

To search k-nearest neighbor, call the Search method with the query point in a k-d space and the number of nearest neighbors. The GetSearchResult method returns a pointer to a NearestNeighbors object with k-nearest neighbors.

See also:
KdTreeNode, KdTreeNonterminalNode, KdTreeWeightedCentroidNonterminalNode, KdTreeTerminalNode, KdTreeGenerator, WeightedCentroidKdTreeNode

Definition at line 346 of file itkKdTree.h.


Member Typedef Documentation

template<class TSample>
typedef TSample::ConstIterator itk::Statistics::KdTree< TSample >::ConstIterator
 

Definition at line 549 of file itkKdTree.h.

template<class TSample>
typedef SmartPointer<const Self> itk::Statistics::KdTree< TSample >::ConstPointer
 

Reimplemented from itk::Object.

Definition at line 353 of file itkKdTree.h.

template<class TSample>
typedef EuclideanDistance< MeasurementVectorType > itk::Statistics::KdTree< TSample >::DistanceMetricType
 

DistanceMetric type for the distance calculation and comparison Definition at line 373 of file itkKdTree.h.

Referenced by itk::Statistics::KdTree< TSample >::GetFrequency().

template<class TSample>
typedef TSample::FrequencyType itk::Statistics::KdTree< TSample >::FrequencyType
 

Definition at line 366 of file itkKdTree.h.

template<class TSample>
typedef TSample::InstanceIdentifier itk::Statistics::KdTree< TSample >::InstanceIdentifier
 

Definition at line 365 of file itkKdTree.h.

template<class TSample>
typedef std::vector< InstanceIdentifier > itk::Statistics::KdTree< TSample >::InstanceIdentifierVectorType
 

Definition at line 383 of file itkKdTree.h.

Referenced by itk::Statistics::KdTree< TSample >::GetDistanceMetric().

template<class TSample>
typedef TSample::Iterator itk::Statistics::KdTree< TSample >::Iterator
 

Definition at line 548 of file itkKdTree.h.

template<class TSample>
typedef KdTreeNode< TSample > itk::Statistics::KdTree< TSample >::KdTreeNodeType
 

Node type of the KdTree Definition at line 376 of file itkKdTree.h.

Referenced by itk::Statistics::KdTree< TSample >::SetRoot().

template<class TSample>
typedef TSample::MeasurementType itk::Statistics::KdTree< TSample >::MeasurementType
 

Definition at line 364 of file itkKdTree.h.

template<class TSample>
typedef TSample::MeasurementVectorType itk::Statistics::KdTree< TSample >::MeasurementVectorType
 

Definition at line 363 of file itkKdTree.h.

Referenced by itk::Statistics::KdTree< TSample >::GetDistanceMetric().

template<class TSample>
typedef std::pair< InstanceIdentifier, double > itk::Statistics::KdTree< TSample >::NeighborType
 

Neighbor type. The first element of the std::pair is the instance identifier and the second one is the distance between the measurement vector identified by the first element and the query point. Definition at line 381 of file itkKdTree.h.

template<class TSample>
typedef SmartPointer<Self> itk::Statistics::KdTree< TSample >::Pointer
 

Reimplemented from itk::Object.

Definition at line 352 of file itkKdTree.h.

template<class TSample>
typedef TSample itk::Statistics::KdTree< TSample >::SampleType
 

typedef alias for the source data container Definition at line 362 of file itkKdTree.h.

template<class TSample>
typedef KdTree itk::Statistics::KdTree< TSample >::Self
 

Standard class typedefs

Reimplemented from itk::Object.

Definition at line 350 of file itkKdTree.h.

template<class TSample>
typedef Object itk::Statistics::KdTree< TSample >::Superclass
 

Reimplemented from itk::Object.

Definition at line 351 of file itkKdTree.h.


Constructor & Destructor Documentation

template<class TSample>
itk::Statistics::KdTree< TSample >::KdTree  )  [protected]
 

Constructor

template<class TSample>
virtual itk::Statistics::KdTree< TSample >::~KdTree  )  [protected, virtual]
 

Destructor: deletes the root node and the empty terminal node.


Member Function Documentation

template<class TSample>
bool itk::Statistics::KdTree< TSample >::BallWithinBounds MeasurementVectorType query,
MeasurementVectorType lowerBound,
MeasurementVectorType upperBound,
double  radius
const
 

Returns true if the intermediate k-nearest neighbors exist within the the bounding box defined by the lowerBound and the upperBound. Otherwise returns false. Returns false if the ball defined by the distance between the query point and the farthest neighbor touch the surface of the bounding box.

template<class TSample>
ConstIterator itk::Statistics::KdTree< TSample >::Begin void   )  const [inline]
 

Definition at line 563 of file itkKdTree.h.

template<class TSample>
Iterator itk::Statistics::KdTree< TSample >::Begin void   )  [inline]
 

Definition at line 551 of file itkKdTree.h.

template<class TSample>
bool itk::Statistics::KdTree< TSample >::BoundsOverlapBall MeasurementVectorType query,
MeasurementVectorType lowerBound,
MeasurementVectorType upperBound,
double  radius
const
 

Returns true if the ball defined by the distance between the query point and the farthest neighbor overlaps with the bounding box defined by the lower and the upper bounds.

template<class TSample>
void itk::Statistics::KdTree< TSample >::DeleteNode KdTreeNodeType node  ) 
 

Deletes the node recursively

template<class TSample>
ConstIterator itk::Statistics::KdTree< TSample >::End void   )  const [inline]
 

Definition at line 569 of file itkKdTree.h.

template<class TSample>
Iterator itk::Statistics::KdTree< TSample >::End void   )  [inline]
 

Definition at line 557 of file itkKdTree.h.

template<class TSample>
virtual const char* itk::Statistics::KdTree< TSample >::GetClassName  )  const [virtual]
 

Run-time type information (and related methods)

Reimplemented from itk::Object.

template<class TSample>
DistanceMetricType* itk::Statistics::KdTree< TSample >::GetDistanceMetric  )  [inline]
 

Get the pointer to the distance metric. Definition at line 505 of file itkKdTree.h.

References itk::Statistics::KdTree< TSample >::InstanceIdentifierVectorType, and itk::Statistics::KdTree< TSample >::MeasurementVectorType.

template<class TSample>
KdTreeNodeType* itk::Statistics::KdTree< TSample >::GetEmptyTerminalNode  )  [inline]
 

Returns the pointer to the empty terminal node. A KdTree object has a single empty terminal node in memory. when the split process has to create an empty terminal node, the single instance is reused for this case Definition at line 482 of file itkKdTree.h.

template<class TSample>
FrequencyType itk::Statistics::KdTree< TSample >::GetFrequency InstanceIdentifier  id  )  const [inline]
 

Returns the frequency of the measurement vector identified by the instance identifier Definition at line 501 of file itkKdTree.h.

References itk::Statistics::KdTree< TSample >::DistanceMetricType.

template<class TSample>
const MeasurementVectorType& itk::Statistics::KdTree< TSample >::GetMeasurementVector InstanceIdentifier  id  )  const [inline]
 

Returns the measurement vector identified by the instance identifier that is an identifier defiend for the input sample Definition at line 496 of file itkKdTree.h.

template<class TSample>
int itk::Statistics::KdTree< TSample >::GetNumberOfVisits  )  const [inline]
 

Returns the number of measurement vectors that have been visited to find the k-nearest neighbors. Definition at line 520 of file itkKdTree.h.

template<class TSample>
KdTreeNodeType* itk::Statistics::KdTree< TSample >::GetRoot  )  [inline]
 

Returns the pointer to the root node. Definition at line 491 of file itkKdTree.h.

template<class TSample>
const TSample* itk::Statistics::KdTree< TSample >::GetSample  )  const [inline]
 

Returns the pointer to the input sample Definition at line 472 of file itkKdTree.h.

template<class TSample>
itk::Statistics::KdTree< TSample >::itkStaticConstMacro MeasurementVectorSize  ,
unsigned  int,
TSample::MeasurementVectorSize 
 

Length of the measurement vector. k in the k-d tree

template<class TSample>
int itk::Statistics::KdTree< TSample >::NearestNeighborSearchLoop const KdTreeNodeType node,
MeasurementVectorType query,
MeasurementVectorType lowerBound,
MeasurementVectorType upperBound
const [protected]
 

search loop

template<class TSample>
Pointer itk::Statistics::KdTree< TSample >::New  )  [static]
 

Method for creation through the object factory.

Reimplemented from itk::Object.

template<class TSample>
void itk::Statistics::KdTree< TSample >::PrintSelf std::ostream &  os,
Indent  indent
const [protected, virtual]
 

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.

template<class TSample>
void itk::Statistics::KdTree< TSample >::PrintTree KdTreeNodeType node,
int  level,
unsigned int  activeDimension
 

Prints out the tree information

template<class TSample>
void itk::Statistics::KdTree< TSample >::Search MeasurementVectorType query,
double  radius,
InstanceIdentifierVectorType result
const
 

Searches the neighbors fallen into a hypersphere

template<class TSample>
void itk::Statistics::KdTree< TSample >::Search MeasurementVectorType query,
unsigned int  k,
InstanceIdentifierVectorType result
const
 

Searches the k-nearest neighbors

template<class TSample>
int itk::Statistics::KdTree< TSample >::SearchLoop const KdTreeNodeType node,
MeasurementVectorType query,
MeasurementVectorType lowerBound,
MeasurementVectorType upperBound
const [protected]
 

search loop

template<class TSample>
void itk::Statistics::KdTree< TSample >::SetBucketSize unsigned int  size  ) 
 

Sets the number of measurement vectors that can be stored in a terminal node

template<class TSample>
void itk::Statistics::KdTree< TSample >::SetRoot KdTreeNodeType root  )  [inline]
 

Sets the root node of the KdTree that is a result of KdTreeGenerator or WeightedCentroidKdTreeGenerator. Definition at line 487 of file itkKdTree.h.

References itk::Statistics::KdTree< TSample >::KdTreeNodeType.

template<class TSample>
void itk::Statistics::KdTree< TSample >::SetSample const TSample *  sample  ) 
 

Sets the input sample that provides the measurement vectors to the k-d tree

template<class TSample>
unsigned long itk::Statistics::KdTree< TSample >::Size void   )  const [inline]
 

Definition at line 475 of file itkKdTree.h.


The documentation for this class was generated from the following file:
Generated at Sun Apr 1 03:24:19 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000