Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitk::PointLocator Class Reference

#include <mitkPointLocator.h>

Inheritance diagram for mitk::PointLocator:
Collaboration diagram for mitk::PointLocator:

Public Types

typedef int IdType
 
typedef ScalarType DistanceType
 
typedef float PixelType
 
typedef double CoordRepType
 
typedef itk::DefaultStaticMeshTraits< PixelType, 3, 2, CoordRepType, CoordRepType, PixelTypeMeshTraits
 
typedef itk::PointSet< PixelType, 3, MeshTraitsITKPointSet
 

Public Member Functions

 mitkClassMacroItkParent (PointLocator, itk::Object)
 
Pointer Clone () const
 
void SetPoints (vtkPointSet *points)
 
void SetPoints (mitk::PointSet *points)
 
void SetPoints (ITKPointSet *pointSet)
 
IdType FindClosestPoint (const double point[3])
 
IdType FindClosestPoint (double x, double y, double z)
 
IdType FindClosestPoint (mitk::PointSet::PointType point)
 
DistanceType GetMinimalDistance (mitk::PointSet::PointType point)
 
bool FindClosestPointAndDistance (mitk::PointSet::PointType point, IdType *id, DistanceType *dist)
 

Static Public Member Functions

static Pointer New ()
 

Protected Types

typedef std::vector< IdTypeIdVectorType
 
typedef double * MyANNpoint
 
typedef int MyANNidx
 
typedef double MyANNdist
 
typedef MyANNpointMyANNpointArray
 
typedef MyANNidxMyANNidxArray
 
typedef MyANNdistMyANNdistArray
 

Protected Member Functions

 PointLocator ()
 
 ~PointLocator () override
 
void InitANN ()
 
void DestroyANN ()
 
IdType FindClosestANNPoint (const MyANNpoint &point)
 
DistanceType GetMinimalDistance (const MyANNpoint &point)
 

Protected Attributes

bool m_SearchTreeInitialized
 
IdVectorType m_IndexToPointIdContainer
 
vtkPoints * m_VtkPoints
 
mitk::PointSetm_MitkPoints
 
ITKPointSetm_ItkPoints
 
unsigned int m_ANNK
 
unsigned int m_ANNDimension
 
double m_ANNEpsilon
 
MyANNpointArray m_ANNDataPoints
 
MyANNpoint m_ANNQueryPoint
 
MyANNidxArray m_ANNPointIndexes
 
MyANNdistArray m_ANNDistances
 
ANNkd_tree * m_ANNTree
 

Detailed Description

Convenience wrapper around ANN to provide fast nearest neighbour searches. Usage: set your points via SetPoints( vtkPointSet* Points ) or SetPoints(mitk::PointSet*). Then, you may query the closest point to an arbitrary coordinate by FindClosestPoint(). There is no further call to update etc. needed. Currently only calls for 1 nearest neighbour are supported. Feel free to add functions for K nearest neighbours. NOTE: At least 1 point must be contained in the point set.

Definition at line 39 of file mitkPointLocator.h.

Member Typedef Documentation

◆ CoordRepType

Definition at line 52 of file mitkPointLocator.h.

◆ DistanceType

◆ IdType

Definition at line 46 of file mitkPointLocator.h.

◆ IdVectorType

typedef std::vector<IdType> mitk::PointLocator::IdVectorType
protected

Definition at line 139 of file mitkPointLocator.h.

◆ ITKPointSet

Definition at line 54 of file mitkPointLocator.h.

◆ MeshTraits

typedef itk::DefaultStaticMeshTraits<PixelType, 3, 2, CoordRepType, CoordRepType, PixelType> mitk::PointLocator::MeshTraits

Definition at line 53 of file mitkPointLocator.h.

◆ MyANNdist

typedef double mitk::PointLocator::MyANNdist
protected

Definition at line 149 of file mitkPointLocator.h.

◆ MyANNdistArray

Definition at line 152 of file mitkPointLocator.h.

◆ MyANNidx

typedef int mitk::PointLocator::MyANNidx
protected

Definition at line 148 of file mitkPointLocator.h.

◆ MyANNidxArray

Definition at line 151 of file mitkPointLocator.h.

◆ MyANNpoint

typedef double* mitk::PointLocator::MyANNpoint
protected

Definition at line 147 of file mitkPointLocator.h.

◆ MyANNpointArray

Definition at line 150 of file mitkPointLocator.h.

◆ PixelType

Definition at line 51 of file mitkPointLocator.h.

Constructor & Destructor Documentation

◆ PointLocator()

mitk::PointLocator::PointLocator ( )
protected

constructor

Definition at line 17 of file mitkPointLocator.cpp.

◆ ~PointLocator()

mitk::PointLocator::~PointLocator ( )
overrideprotected

destructor

Definition at line 33 of file mitkPointLocator.cpp.

References DestroyANN(), and m_SearchTreeInitialized.

Member Function Documentation

◆ Clone()

Pointer mitk::PointLocator::Clone ( ) const

◆ DestroyANN()

void mitk::PointLocator::DestroyANN ( )
protected

releases all memory occupied by the ann search tree and internal point set arrays

Definition at line 215 of file mitkPointLocator.cpp.

References m_ANNDataPoints, m_ANNDistances, m_ANNPointIndexes, m_ANNQueryPoint, m_ANNTree, and m_SearchTreeInitialized.

Referenced by InitANN(), and ~PointLocator().

◆ FindClosestANNPoint()

mitk::PointLocator::IdType mitk::PointLocator::FindClosestANNPoint ( const MyANNpoint point)
protected

Finds the nearest neighbour in the point set previously defined by SetPoints(). The Id of the point is returned. Please note, that there is no case, in which no point is found, since as a precondition at least one point has to be contained in the point set.

Parameters
pointthe query point, for whom the nearest neighbour will be determined
Returns
the id of the nearest neighbour of the given point. The id corresponds to the id which is given in the original point set.

Definition at line 178 of file mitkPointLocator.cpp.

References m_ANNDistances, m_ANNK, m_ANNPointIndexes, m_ANNTree, m_IndexToPointIdContainer, and m_SearchTreeInitialized.

Referenced by FindClosestPoint().

◆ FindClosestPoint() [1/3]

mitk::PointLocator::IdType mitk::PointLocator::FindClosestPoint ( const double  point[3])

Finds the nearest neighbour in the point set previously defined by SetPoints(). The Id of the point is returned. Please note, that there is no case, in which no point is found, since as a precondition at least one point has to be contained in the point set.

Parameters
pointthe query point, for whom the nearest neighbour will be determined
Returns
the id of the nearest neighbour of the given point. The id corresponds to the id which is given in the original point set.

Definition at line 154 of file mitkPointLocator.cpp.

References FindClosestANNPoint(), and m_ANNQueryPoint.

◆ FindClosestPoint() [2/3]

mitk::PointLocator::IdType mitk::PointLocator::FindClosestPoint ( double  x,
double  y,
double  z 
)

Finds the nearest neighbour in the point set previously defined by SetPoints(). The Id of the point is returned. Please note, that there is no case, in which no point is found, since as a precondition at least one point has to be contained in the point set.

Parameters
xthe x coordinated of the query point, for whom the nearest neighbour will be determined
ythe x coordinated of the query point, for whom the nearest neighbour will be determined
zthe x coordinated of the query point, for whom the nearest neighbour will be determined
Returns
the id of the nearest neighbour of the given point. The id corresponds to the id which is given in the original point set.

Definition at line 162 of file mitkPointLocator.cpp.

References FindClosestANNPoint(), and m_ANNQueryPoint.

◆ FindClosestPoint() [3/3]

mitk::PointLocator::IdType mitk::PointLocator::FindClosestPoint ( mitk::PointSet::PointType  point)

Finds the nearest neighbour in the point set previously defined by SetPoints(). The Id of the point is returned. Please note, that there is no case, in which no point is found, since as a precondition at least one point has to be contained in the point set.

Parameters
pointthe query point, for whom the nearest neighbour will be determined
Returns
the id of the nearest neighbour of the given point. The id corresponds to the id which is given in the original point set.

Definition at line 170 of file mitkPointLocator.cpp.

References FindClosestANNPoint(), and m_ANNQueryPoint.

◆ FindClosestPointAndDistance()

bool mitk::PointLocator::FindClosestPointAndDistance ( mitk::PointSet::PointType  point,
IdType id,
DistanceType dist 
)

Finds the nearest neighbour in the point set previously defined by SetPoints(). The Index and minimal distance between this point and the closest point of the point set is returned. Please note, that there is no case, in which no point is found, since as a precondition at least one point has to be contained in the point set.

Parameters
pointthe query point, for whom the minimal distance will be determined
Returns
the index of and distance (in world coordinates) between the nearest point in point set and the given point

Definition at line 230 of file mitkPointLocator.cpp.

References m_ANNDistances, m_ANNK, m_ANNPointIndexes, m_ANNQueryPoint, m_ANNTree, and m_IndexToPointIdContainer.

◆ GetMinimalDistance() [1/2]

mitk::PointLocator::DistanceType mitk::PointLocator::GetMinimalDistance ( mitk::PointSet::PointType  point)

Finds the nearest neighbour in the point set previously defined by SetPoints(). The minimal distance between this point and the closest point of the point set is returned. Please note, that there is no case, in which no point is found, since as a precondition at least one point has to be contained in the point set.

Parameters
pointthe query point, for whom the minimal distance will be determined
Returns
the distance in world coordinates between the nearest point in point set and the given point

Definition at line 186 of file mitkPointLocator.cpp.

References m_ANNQueryPoint.

◆ GetMinimalDistance() [2/2]

mitk::PointLocator::DistanceType mitk::PointLocator::GetMinimalDistance ( const MyANNpoint point)
protected

Finds the minimal distance between the given point and a point in the previously defined point set. The distance is returned. Please note, that there is no case, in which no distance is found, since as a precondition at least one point has to be contained in the point set.

Parameters
pointthe query point, for whom the minimal distance to a point in the previously defined point set will be determined
Returns
the squared distance in world coordinates between the given point and the nearest neighbour.

Definition at line 194 of file mitkPointLocator.cpp.

References m_ANNDistances, m_ANNK, m_ANNPointIndexes, m_ANNTree, and m_SearchTreeInitialized.

◆ InitANN()

void mitk::PointLocator::InitANN ( )
protected

Initializes the ann search tree using previously defined points

Definition at line 202 of file mitkPointLocator.cpp.

References DestroyANN(), m_ANNDataPoints, m_ANNDimension, m_ANNDistances, m_ANNK, m_ANNPointIndexes, m_ANNQueryPoint, m_ANNTree, m_IndexToPointIdContainer, and m_SearchTreeInitialized.

Referenced by SetPoints().

◆ mitkClassMacroItkParent()

mitk::PointLocator::mitkClassMacroItkParent ( PointLocator  ,
itk::Object   
)

◆ New()

static Pointer mitk::PointLocator::New ( )
static

◆ SetPoints() [1/3]

void mitk::PointLocator::SetPoints ( vtkPointSet *  points)

Sets the point which will be used for nearest-neighbour searches. Note there must be at least one point in the point set.

Parameters
pointsthe point set containing points for nearest neighbours searches.

Definition at line 39 of file mitkPointLocator.cpp.

References InitANN(), m_ANNDataPoints, m_ANNDimension, m_IndexToPointIdContainer, and m_VtkPoints.

◆ SetPoints() [2/3]

void mitk::PointLocator::SetPoints ( mitk::PointSet points)

Sets the point which will be used for nearest-neighbour searches. Note there must be at least one point in the point set.

Parameters
pointsthe point set containing points for nearest neighbours searches.

Definition at line 74 of file mitkPointLocator.cpp.

References mitk::BaseData::GetMTime(), mitk::PointSet::GetPointSet(), mitk::PointSet::GetSize(), InitANN(), m_ANNDataPoints, m_ANNDimension, m_IndexToPointIdContainer, and m_MitkPoints.

◆ SetPoints() [3/3]

void mitk::PointLocator::SetPoints ( ITKPointSet pointSet)

Sets the point which will be used for nearest-neighbour searches. Note there must be at least one point in the point set.

Parameters
pointSetthe point set containing points for nearest neighbours searches.

Definition at line 114 of file mitkPointLocator.cpp.

References InitANN(), m_ANNDataPoints, m_ANNDimension, m_IndexToPointIdContainer, and m_ItkPoints.

Member Data Documentation

◆ m_ANNDataPoints

MyANNpointArray mitk::PointLocator::m_ANNDataPoints
protected

Definition at line 210 of file mitkPointLocator.h.

Referenced by DestroyANN(), InitANN(), and SetPoints().

◆ m_ANNDimension

unsigned int mitk::PointLocator::m_ANNDimension
protected

Definition at line 208 of file mitkPointLocator.h.

Referenced by InitANN(), and SetPoints().

◆ m_ANNDistances

MyANNdistArray mitk::PointLocator::m_ANNDistances
protected

◆ m_ANNEpsilon

double mitk::PointLocator::m_ANNEpsilon
protected

Definition at line 209 of file mitkPointLocator.h.

◆ m_ANNK

unsigned int mitk::PointLocator::m_ANNK
protected

◆ m_ANNPointIndexes

MyANNidxArray mitk::PointLocator::m_ANNPointIndexes
protected

◆ m_ANNQueryPoint

MyANNpoint mitk::PointLocator::m_ANNQueryPoint
protected

◆ m_ANNTree

ANNkd_tree* mitk::PointLocator::m_ANNTree
protected

◆ m_IndexToPointIdContainer

IdVectorType mitk::PointLocator::m_IndexToPointIdContainer
protected

◆ m_ItkPoints

ITKPointSet* mitk::PointLocator::m_ItkPoints
protected

Definition at line 202 of file mitkPointLocator.h.

Referenced by SetPoints().

◆ m_MitkPoints

mitk::PointSet* mitk::PointLocator::m_MitkPoints
protected

Definition at line 201 of file mitkPointLocator.h.

Referenced by SetPoints().

◆ m_SearchTreeInitialized

bool mitk::PointLocator::m_SearchTreeInitialized
protected

◆ m_VtkPoints

vtkPoints* mitk::PointLocator::m_VtkPoints
protected

Definition at line 200 of file mitkPointLocator.h.

Referenced by SetPoints().


The documentation for this class was generated from the following files: