Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkAnisotropicIterativeClosestPointRegistration.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkAnisotropicIterativeClosestPointRegistration_h
14 #define mitkAnisotropicIterativeClosestPointRegistration_h
15 
16 // MITK
17 #include <mitkCommon.h>
18 #include <mitkVector.h>
19 
20 // EXPORTS
22 
23 // STL
24 #include <vector>
25 
26 // ITK
27 #include <itkMatrix.h>
28 
29 // forward declarations
30 class vtkPoints;
31 class vtkKdTreePointLocator;
32 
33 namespace mitk
34 {
35  class Surface;
36  class WeightedPointTransform;
37 
113  {
114  protected:
116  typedef itk::Matrix<double, 3, 3> CovarianceMatrix;
118  typedef std::vector<CovarianceMatrix> CovarianceMatrixList;
124  typedef std::pair<unsigned int, double> Correspondence;
126  typedef std::vector<Correspondence> CorrespondenceList;
127 
130 
132  unsigned int m_MaxIterations;
133 
135  double m_Threshold;
136 
139 
142 
147 
149  double m_FRE;
150 
153 
155  unsigned int m_NumberOfIterations;
156 
161 
164 
167 
170 
175 
198  void ComputeCorrespondences(vtkPoints *X,
199  vtkPoints *Z,
200  vtkKdTreePointLocator *Y,
201  const CovarianceMatrixList &sigma_X,
202  const CovarianceMatrixList &sigma_Y,
203  CovarianceMatrixList &sigma_Z,
204  CorrespondenceList &correspondences,
205  const double radius);
206 
207  public:
209  itkFactorylessNewMacro(Self);
210  itkCloneMacro(Self);
211 
213  itkSetMacro(MaxIterations, unsigned int);
214 
216  itkSetMacro(Threshold, double);
217 
230  itkSetMacro(FRENormalizationFactor, double);
231 
233  itkSetMacro(SearchRadius, double);
234 
238  itkSetMacro(MaxIterationsInWeightedPointTransform, double);
239 
241  itkGetMacro(FRE, double);
242 
244  itkGetMacro(NumberOfIterations, unsigned int);
245 
252  itkSetMacro(TrimmFactor, double);
253 
257  itkSetMacro(MovingSurface, itk::SmartPointer<Surface>);
258 
262  itkSetMacro(FixedSurface, itk::SmartPointer<Surface>);
263 
267  itkGetConstReferenceMacro(Translation, Translation);
268 
272  itkGetConstReferenceMacro(Rotation, Rotation);
273 
282  {
283  m_CovarianceMatricesMovingSurface = list;
284  }
285 
293  void SetCovarianceMatricesFixedSurface(CovarianceMatrixList &list) { m_CovarianceMatricesFixedSurface = list; }
304  void Update();
305  };
306 }
307 #endif
#define MITKALGORITHMSEXT_EXPORT
Implementation of the anisotropic iterative closest point (A-ICP) algorithm.
void ComputeCorrespondences(vtkPoints *X, vtkPoints *Z, vtkKdTreePointLocator *Y, const CovarianceMatrixList &sigma_X, const CovarianceMatrixList &sigma_Y, CovarianceMatrixList &sigma_Z, CorrespondenceList &correspondences, const double radius)
mitkClassMacroItkParent(AnisotropicIterativeClosestPointRegistration, itk::Object)
Find image slices visible on a given plane.