|
ITK
6.0.0
Insight Toolkit
|
Go to the documentation of this file.
63 template <
typename TSample>
83 IsTerminal()
const = 0;
147 template <
typename TSample>
167 GetParameters(
unsigned int &, MeasurementType &)
const override;
231 return this->m_InstanceIdentifier;
240 this->m_InstanceIdentifier = valueId;
244 unsigned int m_PartitionDimension{};
245 MeasurementType m_PartitionValue{};
267 template <
typename TSample>
294 GetParameters(
unsigned int &, MeasurementType &)
const override;
297 MeasurementVectorSizeType
300 return m_MeasurementVectorSize;
344 centroid = m_WeightedCentroid;
353 centroid = m_Centroid;
364 return this->m_InstanceIdentifier;
373 this->m_InstanceIdentifier = valueId;
378 unsigned int m_PartitionDimension{};
380 CentroidType m_WeightedCentroid{};
381 CentroidType m_Centroid{};
383 unsigned int m_Size{};
401 template <
typename TSample>
457 return static_cast<unsigned int>(m_InstanceIdentifiers.size());
484 return m_InstanceIdentifiers[index];
493 m_InstanceIdentifiers.push_back(
id);
497 std::vector<InstanceIdentifier> m_InstanceIdentifiers{};
534 template <
typename TSample>
538 ITK_DISALLOW_COPY_AND_MOVE(
KdTree);
547 itkOverrideGetNameOfClassMacro(
KdTree);
595 : m_FarthestNeighborIndex(0)
596 , m_Distances(cache_vector)
608 m_Identifiers.clear();
612 m_FarthestNeighborIndex = 0;
620 return m_Distances[m_FarthestNeighborIndex];
628 m_Identifiers[m_FarthestNeighborIndex] = id;
629 m_Distances[m_FarthestNeighborIndex] = distance;
631 const auto size = static_cast<unsigned int>(m_Distances.size());
632 for (
unsigned int i = 0; i < size; ++i)
634 if (m_Distances[i] > farthestDistance)
636 farthestDistance = m_Distances[i];
637 m_FarthestNeighborIndex = i;
647 return m_Identifiers;
655 return m_Identifiers[index];
674 SetBucketSize(
unsigned int);
679 SetSample(
const TSample *);
691 return m_Sample->Size();
701 return m_EmptyTerminalNode;
711 this->DeleteNode(this->m_Root);
726 const MeasurementVectorType &
729 return m_Sample->GetMeasurementVector(
id);
734 AbsoluteFrequencyType
737 return m_Sample->GetFrequency(
id);
744 return m_DistanceMetric.GetPointer();
749 Search(
const MeasurementVectorType &,
unsigned int, InstanceIdentifierVectorType &)
const;
755 Search(
const MeasurementVectorType &,
unsigned int, InstanceIdentifierVectorType &, std::vector<double> &)
const;
759 Search(
const MeasurementVectorType &,
double, InstanceIdentifierVectorType &)
const;
767 BallWithinBounds(
const MeasurementVectorType &, MeasurementVectorType &, MeasurementVectorType &,
double)
const;
773 BoundsOverlapBall(
const MeasurementVectorType &, MeasurementVectorType &, MeasurementVectorType &,
double)
const;
777 DeleteNode(KdTreeNodeType *);
781 PrintTree(std::ostream &)
const;
785 PrintTree(KdTreeNodeType *,
unsigned int,
unsigned int, std::ostream & os = std::cout)
const;
790 PlotTree(std::ostream & os)
const;
794 PlotTree(KdTreeNodeType * node, std::ostream & os = std::cout)
const;
807 PrintSelf(std::ostream & os,
Indent indent)
const override;
828 const TSample * m_Sample{};
848 #ifndef ITK_MANUAL_INSTANTIATION
849 # include "itkKdTree.hxx"
void GetWeightedCentroid(CentroidType ¢roid) override
unsigned int Size() const override
InstanceIdentifier GetNeighbor(unsigned int index) const
This class provides methods for k-nearest neighbor search and related data structures for a k-d tree.
unsigned int m_FarthestNeighborIndex
std::vector< double > & m_Distances
void AddInstanceIdentifier(InstanceIdentifier valueId) override
typename TSample::MeasurementType MeasurementType
Represent a n-dimensional size (bounds) of a n-dimensional image.
AbsoluteFrequencyType GetFrequency(InstanceIdentifier id) const
unsigned int MeasurementVectorSizeType
void GetWeightedCentroid(CentroidType &) override
typename TSample::InstanceIdentifier InstanceIdentifier
This is a subclass of the KdTreeNode.
NearestNeighbors(std::vector< double > &cache_vector)
DistanceMetricType * GetDistanceMetric()
std::pair< InstanceIdentifier, double > NeighborType
This is a subclass of the KdTreeNode.
static constexpr T min(const T &)
typename TSample::InstanceIdentifier InstanceIdentifier
std::vector< InstanceIdentifier > InstanceIdentifierVectorType
unsigned int Size() const override
void GetCentroid(CentroidType &) override
const Superclass * Left() const override
typename TSample::MeasurementVectorSizeType MeasurementVectorSizeType
Control indentation during Print() invocation.
double GetLargestDistance()
Superclass * Left() override
typename TSample::MeasurementVectorType MeasurementVectorType
Superclass * Left() override
~KdTreeTerminalNode() override
KdTreeNodeType * GetEmptyTerminalNode()
const Superclass * Right() const override
const InstanceIdentifierVectorType & GetNeighbors() const
bool IsTerminal() const override
Light weight base class for most itk classes.
void ReplaceFarthestNeighbor(InstanceIdentifier id, double distance)
void resize(unsigned int k)
void AddInstanceIdentifier(InstanceIdentifier valueId) override
unsigned int Size() const override
bool IsTerminal() const override
This class is the node that doesn't have any child node. The IsTerminal method returns true for this ...
SizeValueType Size() const
InstanceIdentifierVectorType m_Identifiers
InstanceIdentifier GetInstanceIdentifier(InstanceIdentifier) const override
const TSample * GetSample() const
void GetCentroid(CentroidType ¢roid) override
void GetCentroid(CentroidType &) override
typename TSample::MeasurementType MeasurementType
void SetRoot(KdTreeNodeType *root)
const Superclass * Right() const override
const Superclass * Left() const override
Euclidean distance function.
const Superclass * Right() const override
void GetWeightedCentroid(CentroidType &) override
typename TSample::ConstIterator ConstIterator
Define additional traits for native types such as int or float.
InstanceIdentifier GetInstanceIdentifier(InstanceIdentifier index) const override
InstanceIdentifier GetInstanceIdentifier(InstanceIdentifier) const override
void GetParameters(unsigned int &, MeasurementType &) const override
Superclass * Right() override
Superclass * Right() override
typename TSample::Iterator Iterator
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Superclass * Left() override
Superclass * Right() override
bool IsTerminal() const override
Base class for most ITK classes.
KdTreeNodeType * GetRoot()
const Superclass * Left() const override
const MeasurementVectorType & GetMeasurementVector(InstanceIdentifier id) const
MeasurementVectorSizeType GetMeasurementVectorSize() const
BinaryGeneratorImageFilter< TInputImage1, TInputImage2, TOutputImage > Superclass
void AddInstanceIdentifier(InstanceIdentifier id) override
data structure for storing k-nearest neighbor search result (k number of Neighbors)
unsigned long SizeValueType
typename TSample::AbsoluteFrequencyType AbsoluteFrequencyType
This class defines the interface of its derived classes.