Medical Imaging Interaction Toolkit  2022.04.99-194dd5d8
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 __ANISOTROPICITERATIVECLOSESTPOINTREGISTRATION_H__
14 #define __ANISOTROPICITERATIVECLOSESTPOINTREGISTRATION_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 
115  {
116  protected:
118  typedef itk::Matrix<double, 3, 3> CovarianceMatrix;
120  typedef std::vector<CovarianceMatrix> CovarianceMatrixList;
124  typedef CovarianceMatrix Rotation;
126  typedef std::pair<unsigned int, double> Correspondence;
128  typedef std::vector<Correspondence> CorrespondenceList;
129 
132 
134  unsigned int m_MaxIterations;
135 
137  double m_Threshold;
138 
141 
144 
149 
151  double m_FRE;
152 
155 
157  unsigned int m_NumberOfIterations;
158 
163 
166 
168  CovarianceMatrixList m_CovarianceMatricesMovingSurface;
169 
171  CovarianceMatrixList m_CovarianceMatricesFixedSurface;
172 
174  Translation m_Translation;
176  Rotation m_Rotation;
177 
200  void ComputeCorrespondences(vtkPoints *X,
201  vtkPoints *Z,
202  vtkKdTreePointLocator *Y,
203  const CovarianceMatrixList &sigma_X,
204  const CovarianceMatrixList &sigma_Y,
205  CovarianceMatrixList &sigma_Z,
206  CorrespondenceList &correspondences,
207  const double radius);
208 
209  public:
211  itkFactorylessNewMacro(Self);
212  itkCloneMacro(Self);
213 
215  itkSetMacro(MaxIterations, unsigned int);
216 
218  itkSetMacro(Threshold, double);
219 
232  itkSetMacro(FRENormalizationFactor, double);
233 
235  itkSetMacro(SearchRadius, double);
236 
240  itkSetMacro(MaxIterationsInWeightedPointTransform, double);
241 
243  itkGetMacro(FRE, double);
244 
246  itkGetMacro(NumberOfIterations, unsigned int);
247 
254  itkSetMacro(TrimmFactor, double);
255 
259  itkSetMacro(MovingSurface, itk::SmartPointer<Surface>);
260 
264  itkSetMacro(FixedSurface, itk::SmartPointer<Surface>);
265 
269  itkGetConstReferenceMacro(Translation, Translation);
270 
274  itkGetConstReferenceMacro(Rotation, Rotation);
275 
283  void SetCovarianceMatricesMovingSurface(CovarianceMatrixList &list)
284  {
285  m_CovarianceMatricesMovingSurface = list;
286  }
287 
295  void SetCovarianceMatricesFixedSurface(CovarianceMatrixList &list) { m_CovarianceMatricesFixedSurface = list; }
306  void Update();
307  };
308 }
309 #endif
Implementation of the anisotropic iterative closest point (A-ICP) algoritm.
DataCollection - Class to facilitate loading/accessing structured data.
#define MITKALGORITHMSEXT_EXPORT
#define mitkClassMacroItkParent(className, SuperClassName)
Definition: mitkCommon.h:45