63template <
typename TSample>
147template <
typename TSample>
267template <
typename TSample>
401template <
typename TSample>
534template <
typename TSample>
538 ITK_DISALLOW_COPY_AND_MOVE(
KdTree);
631 const auto size =
static_cast<unsigned int>(
m_Distances.size());
632 for (
unsigned int i = 0; i < size; ++i)
726 const MeasurementVectorType &
729 return m_Sample->GetMeasurementVector(
id);
734 AbsoluteFrequencyType
848#ifndef ITK_MANUAL_INSTANTIATION
849# include "itkKdTree.hxx"
Array class with size defined at construction time.
Control indentation during Print() invocation.
static constexpr T max(const T &)
static constexpr T min(const T &)
Implements transparent reference counting.
Euclidean distance function.
SmartPointer< Self > Pointer
data structure for storing k-nearest neighbor search result (k number of Neighbors)
std::vector< double > & m_Distances
InstanceIdentifier GetNeighbor(unsigned int index) const
InstanceIdentifierVectorType m_Identifiers
~NearestNeighbors()=default
NearestNeighbors(std::vector< double > &cache_vector)
double GetLargestDistance()
unsigned int m_FarthestNeighborIndex
NearestNeighbors()=delete
void resize(unsigned int k)
const InstanceIdentifierVectorType & GetNeighbors() const
void ReplaceFarthestNeighbor(InstanceIdentifier id, double distance)
KdTreeNodeType * GetRoot()
void PlotTree(std::ostream &os) const
KdTreeNodeType * m_EmptyTerminalNode
KdTreeNodeType * GetEmptyTerminalNode()
const TSample * GetSample() const
void SetBucketSize(unsigned int)
void SetRoot(KdTreeNodeType *root)
void Search(const MeasurementVectorType &, unsigned int, InstanceIdentifierVectorType &) const
typename TSample::InstanceIdentifier InstanceIdentifier
EuclideanDistanceMetric< MeasurementVectorType > DistanceMetricType
SizeValueType Size() const
SmartPointer< Self > Pointer
bool BoundsOverlapBall(const MeasurementVectorType &, MeasurementVectorType &, MeasurementVectorType &, double) const
MeasurementVectorSizeType m_MeasurementVectorSize
DistanceMetricType * GetDistanceMetric()
KdTreeNode< TSample > KdTreeNodeType
const MeasurementVectorType & GetMeasurementVector(InstanceIdentifier id) const
typename TSample::AbsoluteFrequencyType AbsoluteFrequencyType
std::pair< InstanceIdentifier, double > NeighborType
void PrintTree(KdTreeNodeType *, unsigned int, unsigned int, std::ostream &os=std::cout) const
std::vector< InstanceIdentifier > InstanceIdentifierVectorType
typename TSample::MeasurementType MeasurementType
void Search(const MeasurementVectorType &, unsigned int, InstanceIdentifierVectorType &, std::vector< double > &) const
DistanceMetricType::Pointer m_DistanceMetric
void PrintSelf(std::ostream &os, Indent indent) const override
int SearchLoop(const KdTreeNodeType *, const MeasurementVectorType &, double, MeasurementVectorType &, MeasurementVectorType &, InstanceIdentifierVectorType &) const
unsigned int MeasurementVectorSizeType
SmartPointer< const Self > ConstPointer
typename TSample::Iterator Iterator
int NearestNeighborSearchLoop(const KdTreeNodeType *, const MeasurementVectorType &, MeasurementVectorType &, MeasurementVectorType &, NearestNeighbors &) const
bool BallWithinBounds(const MeasurementVectorType &, MeasurementVectorType &, MeasurementVectorType &, double) const
void SetSample(const TSample *)
void PlotTree(KdTreeNodeType *node, std::ostream &os=std::cout) const
AbsoluteFrequencyType GetFrequency(InstanceIdentifier id) const
typename TSample::ConstIterator ConstIterator
typename TSample::MeasurementVectorType MeasurementVectorType
void Search(const MeasurementVectorType &, double, InstanceIdentifierVectorType &) const
void PrintTree(std::ostream &) const
void DeleteNode(KdTreeNodeType *)
BinaryGeneratorImageFilter< TInputImage1, TInputImage2, TOutputImage > Superclass
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned long SizeValueType
This class defines the interface of its derived classes.
KdTreeNode< TSample > Self
typename TSample::InstanceIdentifier InstanceIdentifier
virtual void GetParameters(unsigned int &, MeasurementType &) const =0
virtual InstanceIdentifier GetInstanceIdentifier(InstanceIdentifier) const =0
virtual bool IsTerminal() const =0
virtual void GetCentroid(CentroidType &)=0
typename TSample::MeasurementType MeasurementType
virtual void AddInstanceIdentifier(InstanceIdentifier)=0
virtual void GetWeightedCentroid(CentroidType &)=0
virtual unsigned int Size() const =0
virtual const Self * Left() const =0
virtual ~KdTreeNode()=default
virtual const Self * Right() const =0
Array< double > CentroidType
bool IsTerminal() const override
const Superclass * Right() const override
typename TSample::InstanceIdentifier InstanceIdentifier
unsigned int Size() const override
MeasurementType m_PartitionValue
const Superclass * Left() const override
void GetWeightedCentroid(CentroidType &) override
InstanceIdentifier m_InstanceIdentifier
Superclass * Right() override
void GetParameters(unsigned int &, MeasurementType &) const override
InstanceIdentifier GetInstanceIdentifier(InstanceIdentifier) const override
unsigned int m_PartitionDimension
void GetCentroid(CentroidType &) override
KdTreeNode< TSample > Superclass
typename TSample::MeasurementType MeasurementType
KdTreeNonterminalNode(unsigned int, MeasurementType, Superclass *, Superclass *)
~KdTreeNonterminalNode() override=default
Superclass * Left() override
void AddInstanceIdentifier(InstanceIdentifier valueId) override
Array< double > CentroidType
void GetParameters(unsigned int &, MeasurementType &) const override
~KdTreeTerminalNode() override
typename TSample::InstanceIdentifier InstanceIdentifier
void GetCentroid(CentroidType &) override
bool IsTerminal() const override
void GetWeightedCentroid(CentroidType &) override
std::vector< InstanceIdentifier > m_InstanceIdentifiers
InstanceIdentifier GetInstanceIdentifier(InstanceIdentifier index) const override
const Superclass * Right() const override
KdTreeTerminalNode()=default
typename TSample::MeasurementType MeasurementType
Superclass * Right() override
const Superclass * Left() const override
unsigned int Size() const override
void AddInstanceIdentifier(InstanceIdentifier id) override
Superclass * Left() override
Array< double > CentroidType
KdTreeNode< TSample > Superclass
~KdTreeWeightedCentroidNonterminalNode() override=default
typename TSample::InstanceIdentifier InstanceIdentifier
CentroidType m_WeightedCentroid
KdTreeWeightedCentroidNonterminalNode(unsigned int, MeasurementType, Superclass *, Superclass *, CentroidType &, unsigned int)
void GetWeightedCentroid(CentroidType ¢roid) override
void GetCentroid(CentroidType ¢roid) override
InstanceIdentifier GetInstanceIdentifier(InstanceIdentifier) const override
MeasurementVectorSizeType GetMeasurementVectorSize() const
const Superclass * Left() const override
unsigned int Size() const override
Superclass * Left() override
bool IsTerminal() const override
typename TSample::MeasurementType MeasurementType
unsigned int m_PartitionDimension
typename TSample::MeasurementVectorSizeType MeasurementVectorSizeType
InstanceIdentifier m_InstanceIdentifier
Superclass * Right() override
MeasurementVectorSizeType m_MeasurementVectorSize
KdTreeNode< TSample > Superclass
MeasurementType m_PartitionValue
const Superclass * Right() const override
void GetParameters(unsigned int &, MeasurementType &) const override
void AddInstanceIdentifier(InstanceIdentifier valueId) override
Array< double > CentroidType