VTK
|
Implementation of the ICP algorithm. More...
#include <vtkIterativeClosestPointTransform.h>
Public Types | |
typedef vtkLinearTransform | Superclass |
![]() | |
typedef vtkHomogeneousTransform | Superclass |
![]() | |
typedef vtkAbstractTransform | Superclass |
![]() | |
typedef vtkObject | Superclass |
![]() | |
typedef vtkObjectBase | Superclass |
Public Member Functions | |
virtual const char * | GetClassName () |
virtual int | IsA (const char *type) |
void | PrintSelf (ostream &os, vtkIndent indent) |
void | Inverse () |
vtkAbstractTransform * | MakeTransform () |
void | SetSource (vtkDataSet *source) |
void | SetTarget (vtkDataSet *target) |
virtual vtkDataSet * | GetSource () |
virtual vtkDataSet * | GetTarget () |
void | SetLocator (vtkCellLocator *locator) |
virtual vtkCellLocator * | GetLocator () |
virtual void | SetMaximumNumberOfIterations (int) |
virtual int | GetMaximumNumberOfIterations () |
virtual int | GetNumberOfIterations () |
virtual void | SetCheckMeanDistance (int) |
virtual int | GetCheckMeanDistance () |
virtual void | CheckMeanDistanceOn () |
virtual void | CheckMeanDistanceOff () |
virtual void | SetMeanDistanceMode (int) |
virtual int | GetMeanDistanceMode () |
void | SetMeanDistanceModeToRMS () |
void | SetMeanDistanceModeToAbsoluteValue () |
const char * | GetMeanDistanceModeAsString () |
virtual void | SetMaximumMeanDistance (double) |
virtual double | GetMaximumMeanDistance () |
virtual double | GetMeanDistance () |
virtual void | SetMaximumNumberOfLandmarks (int) |
virtual int | GetMaximumNumberOfLandmarks () |
virtual void | SetStartByMatchingCentroids (int) |
virtual int | GetStartByMatchingCentroids () |
virtual void | StartByMatchingCentroidsOn () |
virtual void | StartByMatchingCentroidsOff () |
virtual vtkLandmarkTransform * | GetLandmarkTransform () |
![]() | |
void | TransformPoints (vtkPoints *inPts, vtkPoints *outPts) |
virtual void | TransformNormals (vtkDataArray *inNms, vtkDataArray *outNms) |
virtual void | TransformVectors (vtkDataArray *inVrs, vtkDataArray *outVrs) |
void | TransformNormal (const float in[3], float out[3]) |
void | TransformNormal (const double in[3], double out[3]) |
double * | TransformNormal (double x, double y, double z) |
double * | TransformNormal (const double normal[3]) |
float * | TransformFloatNormal (float x, float y, float z) |
float * | TransformFloatNormal (const float normal[3]) |
double * | TransformDoubleNormal (double x, double y, double z) |
double * | TransformDoubleNormal (const double normal[3]) |
double * | TransformVector (double x, double y, double z) |
double * | TransformVector (const double normal[3]) |
void | TransformVector (const float in[3], float out[3]) |
void | TransformVector (const double in[3], double out[3]) |
float * | TransformFloatVector (float x, float y, float z) |
float * | TransformFloatVector (const float vec[3]) |
double * | TransformDoubleVector (double x, double y, double z) |
double * | TransformDoubleVector (const double vec[3]) |
void | TransformPointsNormalsVectors (vtkPoints *inPts, vtkPoints *outPts, vtkDataArray *inNms, vtkDataArray *outNms, vtkDataArray *inVrs, vtkDataArray *outVrs) |
vtkLinearTransform * | GetLinearInverse () |
void | InternalTransformPoint (const float in[3], float out[3]) |
void | InternalTransformPoint (const double in[3], double out[3]) |
virtual void | InternalTransformNormal (const float in[3], float out[3]) |
virtual void | InternalTransformNormal (const double in[3], double out[3]) |
virtual void | InternalTransformVector (const float in[3], float out[3]) |
virtual void | InternalTransformVector (const double in[3], double out[3]) |
void | InternalTransformDerivative (const float in[3], float out[3], float derivative[3][3]) |
void | InternalTransformDerivative (const double in[3], double out[3], double derivative[3][3]) |
![]() | |
void | GetMatrix (vtkMatrix4x4 *m) |
vtkMatrix4x4 * | GetMatrix () |
vtkHomogeneousTransform * | GetHomogeneousInverse () |
![]() | |
double * | TransformNormalAtPoint (const double point[3], const double normal[3]) |
double * | TransformVectorAtPoint (const double point[3], const double vector[3]) |
vtkAbstractTransform * | GetInverse () |
void | SetInverse (vtkAbstractTransform *transform) |
void | DeepCopy (vtkAbstractTransform *) |
void | Update () |
virtual int | CircuitCheck (vtkAbstractTransform *transform) |
virtual void | UnRegister (vtkObjectBase *O) |
void | Identity () |
void | TransformPoint (const float in[3], float out[3]) |
void | TransformPoint (const double in[3], double out[3]) |
double * | TransformPoint (double x, double y, double z) |
double * | TransformPoint (const double point[3]) |
float * | TransformFloatPoint (float x, float y, float z) |
float * | TransformFloatPoint (const float point[3]) |
double * | TransformDoublePoint (double x, double y, double z) |
double * | TransformDoublePoint (const double point[3]) |
void | TransformNormalAtPoint (const float point[3], const float in[3], float out[3]) |
void | TransformNormalAtPoint (const double point[3], const double in[3], double out[3]) |
double * | TransformDoubleNormalAtPoint (const double point[3], const double normal[3]) |
float * | TransformFloatNormalAtPoint (const float point[3], const float normal[3]) |
void | TransformVectorAtPoint (const float point[3], const float in[3], float out[3]) |
void | TransformVectorAtPoint (const double point[3], const double in[3], double out[3]) |
double * | TransformDoubleVectorAtPoint (const double point[3], const double vector[3]) |
float * | TransformFloatVectorAtPoint (const float point[3], const float vector[3]) |
![]() | |
virtual void | DebugOn () |
virtual void | DebugOff () |
unsigned char | GetDebug () |
void | SetDebug (unsigned char debugFlag) |
virtual void | Modified () |
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
vtkCommand * | GetCommand (unsigned long tag) |
void | RemoveObserver (vtkCommand *) |
void | RemoveObservers (unsigned long event, vtkCommand *) |
void | RemoveObservers (const char *event, vtkCommand *) |
int | HasObserver (unsigned long event, vtkCommand *) |
int | HasObserver (const char *event, vtkCommand *) |
void | RemoveObserver (unsigned long tag) |
void | RemoveObservers (unsigned long event) |
void | RemoveObservers (const char *event) |
void | RemoveAllObservers () |
int | HasObserver (unsigned long event) |
int | HasObserver (const char *event) |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
int | InvokeEvent (unsigned long event, void *callData) |
int | InvokeEvent (const char *event, void *callData) |
int | InvokeEvent (unsigned long event) |
int | InvokeEvent (const char *event) |
![]() | |
const char * | GetClassName () const |
virtual void | Delete () |
virtual void | FastDelete () |
void | Print (ostream &os) |
virtual void | Register (vtkObjectBase *o) |
void | SetReferenceCount (int) |
void | PrintRevisions (ostream &os) |
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
int | GetReferenceCount () |
Static Public Member Functions | |
static vtkIterativeClosestPointTransform * | New () |
static int | IsTypeOf (const char *type) |
static vtkIterativeClosestPointTransform * | SafeDownCast (vtkObject *o) |
![]() | |
static int | IsTypeOf (const char *type) |
static vtkLinearTransform * | SafeDownCast (vtkObject *o) |
![]() | |
static int | IsTypeOf (const char *type) |
static vtkHomogeneousTransform * | SafeDownCast (vtkObject *o) |
![]() | |
static int | IsTypeOf (const char *type) |
static vtkAbstractTransform * | SafeDownCast (vtkObject *o) |
![]() | |
static int | IsTypeOf (const char *type) |
static vtkObject * | SafeDownCast (vtkObject *o) |
static vtkObject * | New () |
static void | BreakOnError () |
static void | SetGlobalWarningDisplay (int val) |
static void | GlobalWarningDisplayOn () |
static void | GlobalWarningDisplayOff () |
static int | GetGlobalWarningDisplay () |
![]() | |
static int | IsTypeOf (const char *name) |
static vtkObjectBase * | New () |
Protected Attributes | |
vtkDataSet * | Source |
vtkDataSet * | Target |
vtkCellLocator * | Locator |
int | MaximumNumberOfIterations |
int | CheckMeanDistance |
int | MeanDistanceMode |
double | MaximumMeanDistance |
int | MaximumNumberOfLandmarks |
int | StartByMatchingCentroids |
int | NumberOfIterations |
double | MeanDistance |
vtkLandmarkTransform * | LandmarkTransform |
Implementation of the ICP algorithm.
Match two surfaces using the iterative closest point (ICP) algorithm. The core of the algorithm is to match each vertex in one surface with the closest surface point on the other, then apply the transformation that modify one surface to best match the other (in a least square sense). This has to be iterated to get proper convergence of the surfaces.
Definition at line 53 of file vtkIterativeClosestPointTransform.h.
Definition at line 57 of file vtkIterativeClosestPointTransform.h.
|
protected |
|
protected |
|
static |
|
virtual |
Reimplemented from vtkLinearTransform.
|
static |
|
virtual |
Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkLinearTransform.
|
static |
|
virtual |
Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from vtkLinearTransform.
void vtkIterativeClosestPointTransform::SetSource | ( | vtkDataSet * | source | ) |
Specify the source and target data sets.
void vtkIterativeClosestPointTransform::SetTarget | ( | vtkDataSet * | target | ) |
Specify the source and target data sets.
|
virtual |
Specify the source and target data sets.
|
virtual |
Specify the source and target data sets.
void vtkIterativeClosestPointTransform::SetLocator | ( | vtkCellLocator * | locator | ) |
Set/Get a spatial locator for speeding up the search process. An instance of vtkCellLocator is used by default.
|
virtual |
Set/Get a spatial locator for speeding up the search process. An instance of vtkCellLocator is used by default.
|
virtual |
Set/Get the maximum number of iterations. Default is 50.
|
virtual |
Set/Get the maximum number of iterations. Default is 50.
|
virtual |
Get the number of iterations since the last update
|
virtual |
Force the algorithm to check the mean distance between two iterations. Default is Off.
|
virtual |
Force the algorithm to check the mean distance between two iterations. Default is Off.
|
virtual |
Force the algorithm to check the mean distance between two iterations. Default is Off.
|
virtual |
Force the algorithm to check the mean distance between two iterations. Default is Off.
|
virtual |
Specify the mean distance mode. This mode expresses how the mean distance is computed. The RMS mode is the square root of the average of the sum of squares of the closest point distances. The Absolute Value mode is the mean of the sum of absolute values of the closest point distances. The default is VTK_ICP_MODE_RMS
|
virtual |
Specify the mean distance mode. This mode expresses how the mean distance is computed. The RMS mode is the square root of the average of the sum of squares of the closest point distances. The Absolute Value mode is the mean of the sum of absolute values of the closest point distances. The default is VTK_ICP_MODE_RMS
|
inline |
Specify the mean distance mode. This mode expresses how the mean distance is computed. The RMS mode is the square root of the average of the sum of squares of the closest point distances. The Absolute Value mode is the mean of the sum of absolute values of the closest point distances. The default is VTK_ICP_MODE_RMS
Definition at line 103 of file vtkIterativeClosestPointTransform.h.
|
inline |
Specify the mean distance mode. This mode expresses how the mean distance is computed. The RMS mode is the square root of the average of the sum of squares of the closest point distances. The Absolute Value mode is the mean of the sum of absolute values of the closest point distances. The default is VTK_ICP_MODE_RMS
Definition at line 105 of file vtkIterativeClosestPointTransform.h.
const char* vtkIterativeClosestPointTransform::GetMeanDistanceModeAsString | ( | ) |
Specify the mean distance mode. This mode expresses how the mean distance is computed. The RMS mode is the square root of the average of the sum of squares of the closest point distances. The Absolute Value mode is the mean of the sum of absolute values of the closest point distances. The default is VTK_ICP_MODE_RMS
|
virtual |
Set/Get the maximum mean distance between two iteration. If the mean distance is lower than this, the convergence stops. The default is 0.01.
|
virtual |
Set/Get the maximum mean distance between two iteration. If the mean distance is lower than this, the convergence stops. The default is 0.01.
|
virtual |
Get the mean distance between the last two iterations.
|
virtual |
Set/Get the maximum number of landmarks sampled in your dataset. If your dataset is dense, then you will typically not need all the points to compute the ICP transform. The default is 200.
|
virtual |
Set/Get the maximum number of landmarks sampled in your dataset. If your dataset is dense, then you will typically not need all the points to compute the ICP transform. The default is 200.
|
virtual |
Starts the process by translating source centroid to target centroid. The default is Off.
|
virtual |
Starts the process by translating source centroid to target centroid. The default is Off.
|
virtual |
Starts the process by translating source centroid to target centroid. The default is Off.
|
virtual |
Starts the process by translating source centroid to target centroid. The default is Off.
|
virtual |
Get the internal landmark transform. Use it to constrain the number of degrees of freedom of the solution (i.e. rigid body, similarity, etc.).
|
virtual |
Invert the transformation. This is done by switching the source and target.
Implements vtkAbstractTransform.
|
virtual |
Make another transform of the same type.
Implements vtkAbstractTransform.
|
protected |
Release source and target
|
protected |
Release source and target
|
protected |
Release locator
|
protected |
Create default locator. Used to create one when none is specified.
|
protectedvirtual |
Get the MTime of this object also considering the locator.
Reimplemented from vtkAbstractTransform.
|
protectedvirtual |
Perform any subclass-specific Update.
Reimplemented from vtkAbstractTransform.
|
protectedvirtual |
This method does no type checking, use DeepCopy instead.
Reimplemented from vtkHomogeneousTransform.
|
protected |
Definition at line 178 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 179 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 180 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 181 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 182 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 183 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 184 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 185 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 186 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 188 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 189 of file vtkIterativeClosestPointTransform.h.
|
protected |
Definition at line 190 of file vtkIterativeClosestPointTransform.h.