VTK
vtkIterativeClosestPointTransform.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkIterativeClosestPointTransform.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
41 #ifndef __vtkIterativeClosestPointTransform_h
42 #define __vtkIterativeClosestPointTransform_h
43 
44 #include "vtkLinearTransform.h"
45 
46 #define VTK_ICP_MODE_RMS 0
47 #define VTK_ICP_MODE_AV 1
48 
49 class vtkCellLocator;
51 class vtkDataSet;
52 
54 {
55 public:
58  void PrintSelf(ostream& os, vtkIndent indent);
59 
61 
62  void SetSource(vtkDataSet *source);
63  void SetTarget(vtkDataSet *target);
64  vtkGetObjectMacro(Source, vtkDataSet);
65  vtkGetObjectMacro(Target, vtkDataSet);
67 
69 
71  void SetLocator(vtkCellLocator *locator);
72  vtkGetObjectMacro(Locator,vtkCellLocator);
74 
76 
77  vtkSetMacro(MaximumNumberOfIterations, int);
78  vtkGetMacro(MaximumNumberOfIterations, int);
80 
82 
83  vtkGetMacro(NumberOfIterations, int);
85 
87 
89  vtkSetMacro(CheckMeanDistance, int);
90  vtkGetMacro(CheckMeanDistance, int);
91  vtkBooleanMacro(CheckMeanDistance, int);
93 
95 
100  vtkSetClampMacro(MeanDistanceMode,int,
102  vtkGetMacro(MeanDistanceMode,int);
104  {this->SetMeanDistanceMode(VTK_ICP_MODE_RMS);}
106  {this->SetMeanDistanceMode(VTK_ICP_MODE_AV);}
107  const char *GetMeanDistanceModeAsString();
109 
111 
114  vtkSetMacro(MaximumMeanDistance, double);
115  vtkGetMacro(MaximumMeanDistance, double);
117 
119 
120  vtkGetMacro(MeanDistance, double);
122 
124 
127  vtkSetMacro(MaximumNumberOfLandmarks, int);
128  vtkGetMacro(MaximumNumberOfLandmarks, int);
130 
132 
134  vtkSetMacro(StartByMatchingCentroids, int);
135  vtkGetMacro(StartByMatchingCentroids, int);
136  vtkBooleanMacro(StartByMatchingCentroids, int);
138 
140 
143  vtkGetObjectMacro(LandmarkTransform,vtkLandmarkTransform);
145 
148  void Inverse();
149 
152 
153 protected:
154 
156 
157  void ReleaseSource(void);
158  void ReleaseTarget(void);
160 
162  void ReleaseLocator(void);
163 
165  void CreateDefaultLocator(void);
166 
168  unsigned long int GetMTime();
169 
172 
173  void InternalUpdate();
174 
176  void InternalDeepCopy(vtkAbstractTransform *transform);
177 
187 
189  double MeanDistance;
191 private:
193  void operator=(const vtkIterativeClosestPointTransform&); // Not implemented.
194 };
195 
196 #endif
unsigned long GetMTime()
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
abstract class to specify dataset behavior
Definition: vtkDataSet.h:58
virtual vtkAbstractTransform * MakeTransform()=0
#define VTK_ICP_MODE_RMS
octree-based spatial search object to quickly locate cells
a simple class to control print indentation
Definition: vtkIndent.h:37
void InternalDeepCopy(vtkAbstractTransform *transform)
a linear transform specified by two corresponding point sets
superclass for all geometric transformations
virtual void Inverse()=0
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Implementation of the ICP algorithm.
static vtkObject * New()
#define VTK_HYBRID_EXPORT
void PrintSelf(ostream &os, vtkIndent indent)
abstract superclass for linear transformations