ITK
4.13.0
Insight Segmentation and Registration Toolkit
|
#include <itkLandmarkBasedTransformInitializer.h>
This class computes the transform that aligns the fixed and moving images given a set of pair landmarks. The class is templated over the Transform type as well as fixed image and moving image types. The transform computed gives the best fit transform that maps the fixed and moving images in a least squares sense. The indices are taken to correspond, so point 1 in the first set will get mapped close to point 1 in the second set, etc.
Currently, the following transforms are supported by the class: VersorRigid3DTransform Rigid2DTransform AffineTransform BSplineTransform
An equal number of fixed and moving landmarks need to be specified using SetFixedLandmarks() and SetMovingLandmarks(). Any number of landmarks may be specified. In the case of the Affine transformation the number of landmarks must be greater than the landmark dimensionality. If this is not the case an exception is thrown. In the case of the VersorRigid3DTransform and Rigid2DTransform the number of landmarks must be equal or greater than the landmark dimensionality. If this is not the case, only the translational component of the transformation is computed and the rotation is the identity. In the case of using Affine or BSpline transforms, each landmark pair can contribute in the final transform based on its defined weight. Number of weights should be equal to the number of landmarks and can be specified using SetLandmarkWeight(). By defaults are weights are set to one. Call InitializeTransform() to initialize the transform.
The class is based in part on Hybrid/vtkLandmarkTransform originally implemented in python by David G. Gobbi.
The solution is based on Berthold K. P. Horn (1987), "Closed-form solution of absolute orientation using unit quaternions," http://people.csail.mit.edu/bkph/papers/Absolute_Orientation.pdf
The Affine Transform initializer is based on an algorithm by H Spaeth, and is described in the Insight Journal Article "Affine Transformation for Landmark Based Registration Initializer in ITK" by Kim E.Y., Johnson H., Williams N. available at http://midasjournal.com/browse/publication/825
Definition at line 88 of file itkLandmarkBasedTransformInitializer.h.
Public Types | |
typedef AffineTransform < ParametersValueType, FixedImageType::ImageDimension > | AffineTransformType |
typedef BSplineTransform < ParametersValueType, FixedImageType::ImageDimension, SplineOrder > | BSplineTransformType |
typedef SmartPointer< const Self > | ConstPointer |
typedef FixedImageType::ConstPointer | FixedImagePointer |
typedef TFixedImage | FixedImageType |
typedef TransformType::InputPointType | InputPointType |
typedef std::vector < LandmarkPointType > | LandmarkPointContainer |
typedef Point< double, ImageDimension > | LandmarkPointType |
typedef LandmarkWeightType::const_iterator | LandmarkWeightConstIterator |
typedef std::vector< double > | LandmarkWeightType |
typedef MovingImageType::ConstPointer | MovingImagePointer |
typedef TMovingImage | MovingImageType |
typedef TransformType::OutputVectorType | OutputVectorType |
typedef TransformType::ParametersType | ParametersType |
typedef ParametersType::ValueType | ParametersValueType |
typedef SmartPointer< Self > | Pointer |
typedef LandmarkPointContainer::const_iterator | PointsContainerConstIterator |
typedef Rigid2DTransform < ParametersValueType > | Rigid2DTransformType |
typedef LandmarkBasedTransformInitializer | Self |
typedef Object | Superclass |
typedef TransformType::Pointer | TransformPointer |
typedef TTransform | TransformType |
typedef VersorRigid3DTransform < ParametersValueType > | VersorRigid3DTransformType |
Public Types inherited from itk::Object | |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef Object | Self |
typedef LightObject | Superclass |
Public Types inherited from itk::LightObject | |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef LightObject | Self |
Public Member Functions | |
virtual ::itk::LightObject::Pointer | CreateAnother () const |
virtual const char * | GetNameOfClass () const |
virtual void | InitializeTransform () |
virtual void | SetBSplineNumberOfControlPoints (unsigned int _arg) |
void | SetFixedLandmarks (const LandmarkPointContainer &fixedLandmarks) |
void | SetLandmarkWeight (LandmarkWeightType &landmarkWeight) |
void | SetMovingLandmarks (const LandmarkPointContainer &movingLandmarks) |
virtual void | SetReferenceImage (const FixedImageType *_arg) |
virtual void | SetTransform (TransformType *_arg) |
Public Member Functions inherited from itk::Object | |
unsigned long | AddObserver (const EventObject &event, Command *) |
unsigned long | AddObserver (const EventObject &event, Command *) const |
virtual void | DebugOff () const |
virtual void | DebugOn () const |
Command * | GetCommand (unsigned long tag) |
bool | GetDebug () const |
MetaDataDictionary & | GetMetaDataDictionary () |
const MetaDataDictionary & | GetMetaDataDictionary () const |
virtual ModifiedTimeType | GetMTime () const |
virtual const TimeStamp & | GetTimeStamp () const |
bool | HasObserver (const EventObject &event) const |
void | InvokeEvent (const EventObject &) |
void | InvokeEvent (const EventObject &) const |
virtual void | Modified () const |
virtual void | Register () const override |
void | RemoveAllObservers () |
void | RemoveObserver (unsigned long tag) |
void | SetDebug (bool debugFlag) const |
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
virtual void | SetReferenceCount (int) override |
virtual void | UnRegister () const noexceptoverride |
virtual void | SetObjectName (std::string _arg) |
virtual const std::string & | GetObjectName () const |
Public Member Functions inherited from itk::LightObject | |
virtual void | Delete () |
virtual int | GetReferenceCount () const |
itkCloneMacro (Self) | |
void | Print (std::ostream &os, Indent indent=0) const |
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::Object | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool flag) |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
Static Public Attributes | |
static const unsigned int | ImageDimension = FixedImageType::ImageDimension |
static const unsigned int | SplineOrder = 3 |
static const unsigned int | InputSpaceDimension = TransformType::InputSpaceDimension |
static const unsigned int | OutputSpaceDimension = TransformType::OutputSpaceDimension |
Protected Member Functions | |
LandmarkBasedTransformInitializer () | |
virtual void | PrintSelf (std::ostream &os, Indent indent) const override |
~LandmarkBasedTransformInitializer () override | |
Protected Member Functions inherited from itk::Object | |
Object () | |
bool | PrintObservers (std::ostream &os, Indent indent) const |
virtual void | SetTimeStamp (const TimeStamp &time) |
virtual | ~Object () override |
Protected Member Functions inherited from itk::LightObject | |
virtual LightObject::Pointer | InternalClone () const |
LightObject () | |
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
virtual | ~LightObject () |
Private Member Functions | |
template<typename TTransform2 > | |
void | InternalInitializeTransform (TTransform2 *) |
void | InternalInitializeTransform (VersorRigid3DTransformType *) |
void | InternalInitializeTransform (Rigid2DTransformType *) |
void | InternalInitializeTransform (AffineTransformType *) |
void | InternalInitializeTransform (BSplineTransformType *) |
Additional Inherited Members | |
Protected Attributes inherited from itk::LightObject | |
AtomicInt< int > | m_ReferenceCount |
typedef AffineTransform< ParametersValueType, FixedImageType::ImageDimension > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::AffineTransformType |
Definition at line 168 of file itkLandmarkBasedTransformInitializer.h.
typedef BSplineTransform< ParametersValueType, FixedImageType::ImageDimension, SplineOrder> itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::BSplineTransformType |
Definition at line 173 of file itkLandmarkBasedTransformInitializer.h.
typedef SmartPointer<const Self> itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::ConstPointer |
Definition at line 96 of file itkLandmarkBasedTransformInitializer.h.
typedef FixedImageType::ConstPointer itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::FixedImagePointer |
Definition at line 124 of file itkLandmarkBasedTransformInitializer.h.
typedef TFixedImage itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::FixedImageType |
Image Types to use in the initialization of the transform
Definition at line 114 of file itkLandmarkBasedTransformInitializer.h.
typedef TransformType::InputPointType itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::InputPointType |
Convenience typedefs
Definition at line 133 of file itkLandmarkBasedTransformInitializer.h.
typedef std::vector< LandmarkPointType > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::LandmarkPointContainer |
Definition at line 137 of file itkLandmarkBasedTransformInitializer.h.
typedef Point< double, ImageDimension > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::LandmarkPointType |
Definition at line 136 of file itkLandmarkBasedTransformInitializer.h.
typedef LandmarkWeightType::const_iterator itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::LandmarkWeightConstIterator |
Definition at line 143 of file itkLandmarkBasedTransformInitializer.h.
typedef std::vector< double > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::LandmarkWeightType |
Definition at line 142 of file itkLandmarkBasedTransformInitializer.h.
typedef MovingImageType::ConstPointer itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::MovingImagePointer |
Definition at line 127 of file itkLandmarkBasedTransformInitializer.h.
typedef TMovingImage itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::MovingImageType |
Definition at line 118 of file itkLandmarkBasedTransformInitializer.h.
typedef TransformType::OutputVectorType itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::OutputVectorType |
Definition at line 134 of file itkLandmarkBasedTransformInitializer.h.
typedef TransformType::ParametersType itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::ParametersType |
Definition at line 140 of file itkLandmarkBasedTransformInitializer.h.
typedef ParametersType::ValueType itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::ParametersValueType |
Definition at line 141 of file itkLandmarkBasedTransformInitializer.h.
typedef SmartPointer<Self> itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::Pointer |
Definition at line 95 of file itkLandmarkBasedTransformInitializer.h.
typedef LandmarkPointContainer::const_iterator itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::PointsContainerConstIterator |
Definition at line 138 of file itkLandmarkBasedTransformInitializer.h.
typedef Rigid2DTransform< ParametersValueType > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::Rigid2DTransformType |
Definition at line 167 of file itkLandmarkBasedTransformInitializer.h.
typedef LandmarkBasedTransformInitializer itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::Self |
Standard class typedefs.
Definition at line 93 of file itkLandmarkBasedTransformInitializer.h.
typedef Object itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::Superclass |
Definition at line 94 of file itkLandmarkBasedTransformInitializer.h.
typedef TransformType::Pointer itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::TransformPointer |
Definition at line 106 of file itkLandmarkBasedTransformInitializer.h.
typedef TTransform itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::TransformType |
Type of the transform to initialize
Definition at line 102 of file itkLandmarkBasedTransformInitializer.h.
typedef VersorRigid3DTransform< ParametersValueType > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::VersorRigid3DTransformType |
Supported Transform typedefs
Definition at line 166 of file itkLandmarkBasedTransformInitializer.h.
|
protected |
|
inlineoverrideprotected |
Definition at line 180 of file itkLandmarkBasedTransformInitializer.h.
|
virtual |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::Object.
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::Object.
|
virtual |
Initialize the transform from the landmarks
|
private |
fallback Initializer just sets transform to identity
|
private |
Initializer for VersorRigid3D
|
private |
Initializer for Rigid2DTransform
|
private |
Initializer for AffineTransform
|
private |
Initializer for BSplineTransform
|
static |
New macro for creation of through a Smart Pointer.
|
overrideprotectedvirtual |
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 itk::Object.
|
virtual |
Set the number of control points to define the parametric domain for the BSpline transform
|
inline |
Set the Fixed landmark point containers
Definition at line 146 of file itkLandmarkBasedTransformInitializer.h.
|
inline |
Set the landmark weight point containers Weight includes diagonal elements of weight matrix
Definition at line 160 of file itkLandmarkBasedTransformInitializer.h.
|
inline |
Set the Moving landmark point containers
Definition at line 152 of file itkLandmarkBasedTransformInitializer.h.
|
virtual |
Set the reference image to define the parametric domain for the BSpline transform
|
virtual |
Set the transform to be initialized
|
static |
Determine the image dimension.
Definition at line 130 of file itkLandmarkBasedTransformInitializer.h.
|
static |
Dimension of parameters.
Definition at line 109 of file itkLandmarkBasedTransformInitializer.h.
|
private |
Definition at line 210 of file itkLandmarkBasedTransformInitializer.h.
|
private |
Definition at line 206 of file itkLandmarkBasedTransformInitializer.h.
|
private |
weights for affine landmarks
Definition at line 209 of file itkLandmarkBasedTransformInitializer.h.
|
private |
Definition at line 207 of file itkLandmarkBasedTransformInitializer.h.
|
private |
Definition at line 204 of file itkLandmarkBasedTransformInitializer.h.
|
private |
Definition at line 205 of file itkLandmarkBasedTransformInitializer.h.
|
static |
Dimension of parameters.
Definition at line 110 of file itkLandmarkBasedTransformInitializer.h.
|
static |
Definition at line 170 of file itkLandmarkBasedTransformInitializer.h.