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 unsigned int MeasurementVectorSizeType
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 * GetNameOfClass () const
virtual MeasurementVectorSizeType GetMeasurementVectorSize () const
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.

Recent API changes: The static const macro to get the length of a measurement vector, 'MeasurementVectorSize' has been removed to allow the length of a measurement vector to be specified at run time. Please use the function GetMeasurementVectorSize() instead.

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

Definition at line 361 of file itkKdTree.h.


Member Typedef Documentation

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

Definition at line 566 of file itkKdTree.h.

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

Reimplemented from itk::Object.

Definition at line 368 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 390 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 381 of file itkKdTree.h.

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

Definition at line 380 of file itkKdTree.h.

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

Definition at line 400 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 565 of file itkKdTree.h.

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

Node type of the KdTree

Definition at line 393 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 379 of file itkKdTree.h.

template<class TSample>
typedef unsigned int itk::Statistics::KdTree< TSample >::MeasurementVectorSizeType
 

Definition at line 383 of file itkKdTree.h.

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

Definition at line 378 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 398 of file itkKdTree.h.

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

Reimplemented from itk::Object.

Definition at line 367 of file itkKdTree.h.

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

typedef alias for the source data container

Definition at line 377 of file itkKdTree.h.

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

Standard class typedefs

Reimplemented from itk::Object.

Definition at line 365 of file itkKdTree.h.

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

Reimplemented from itk::Object.

Definition at line 366 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 580 of file itkKdTree.h.

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

Definition at line 568 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 586 of file itkKdTree.h.

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

Definition at line 574 of file itkKdTree.h.

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

Get the pointer to the distance metric.

Definition at line 522 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 499 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 518 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 513 of file itkKdTree.h.

template<class TSample>
virtual MeasurementVectorSizeType itk::Statistics::KdTree< TSample >::GetMeasurementVectorSize  )  const [virtual]
 

Get Macro to get the length of a measurement vector in the KdTree. The length is obtained from the input sample.

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

Run-time type information (and related methods)

Reimplemented from itk::Object.

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 537 of file itkKdTree.h.

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

Returns the pointer to the root node.

Definition at line 508 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 489 of file itkKdTree.h.

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 504 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 492 of file itkKdTree.h.


The documentation for this class was generated from the following file:
Generated at Thu May 25 03:06:54 2006 for ITK by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2000