ITK
4.6.0
Insight Segmentation and Registration Toolkit
|
#include <itkLandmarkBasedTransformInitializer.h>
LandmarkBasedTransformInitializer is a helper class intended to The class computes the transform that aligns the fixed and moving images given a set of landmarks. The class is templated over the Transform type. 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. An equal number of fixed and moving landmarks need to be specified using SetFixedLandmarks() SetMovingLandmarks(). Any number of landmarks may be specified. Call InitializeTransform() to initialize the transform.
Currently, the following transforms are supported by the class: VersorRigid3DTransform Rigid2DTransform
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 70 of file itkLandmarkBasedTransformInitializer.h.
Public Types | |
typedef AffineTransform < ParameterValueType, FixedImageType::ImageDimension > | AffineTransformType |
typedef SmartPointer< const Self > | ConstPointer |
typedef FixedImageType::ConstPointer | FixedImagePointer |
typedef TFixedImage | FixedImageType |
typedef TransformType::InputPointType | InputPointType |
typedef std::vector < LandmarkPointType > | LandmarkPointContainer |
typedef Point< double, itkGetStaticConstMacro(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 | ParameterValueType |
typedef SmartPointer< Self > | Pointer |
typedef LandmarkPointContainer::const_iterator | PointsContainerConstIterator |
typedef Rigid2DTransform < ParameterValueType > | Rigid2DTransformType |
typedef LandmarkBasedTransformInitializer | Self |
typedef Object | Superclass |
typedef TransformType::Pointer | TransformPointer |
typedef TTransform | TransformType |
typedef VersorRigid3DTransform < ParameterValueType > | 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 (void) const |
virtual const char * | GetNameOfClass () const |
virtual void | InitializeTransform () |
void | SetFixedLandmarks (const LandmarkPointContainer &fixedLandmarks) |
void | SetLandmarkWeight (LandmarkWeightType &landmarkWeight) |
void | SetMovingLandmarks (const LandmarkPointContainer &movingLandmarks) |
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 (void) |
const MetaDataDictionary & | GetMetaDataDictionary (void) 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 ITK_OVERRIDE |
void | RemoveAllObservers () |
void | RemoveObserver (unsigned long tag) |
void | SetDebug (bool debugFlag) const |
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
virtual void | SetReferenceCount (int) ITK_OVERRIDE |
virtual void | UnRegister () const ITK_OVERRIDE |
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 | InputSpaceDimension = TransformType::InputSpaceDimension |
static const unsigned int | OutputSpaceDimension = TransformType::OutputSpaceDimension |
Protected Types | |
enum | InputTransformType { VersorRigid3Dtransform = 1, Rigid2Dtransfrom, Else } |
Protected Types inherited from itk::LightObject | |
typedef int | InternalReferenceCountType |
Protected Member Functions | |
LandmarkBasedTransformInitializer () | |
virtual void | PrintSelf (std::ostream &os, Indent indent) const ITK_OVERRIDE |
~LandmarkBasedTransformInitializer () | |
Protected Member Functions inherited from itk::Object | |
Object () | |
bool | PrintObservers (std::ostream &os, Indent indent) const |
virtual void | SetTimeStamp (const TimeStamp &time) |
virtual | ~Object () |
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 (TTransform *) |
void | InternalInitializeTransform (VersorRigid3DTransformType *) |
void | InternalInitializeTransform (Rigid2DTransformType *) |
void | InternalInitializeTransform (AffineTransformType *) |
LandmarkBasedTransformInitializer (const Self &) | |
void | operator= (const Self &) |
Additional Inherited Members | |
Protected Attributes inherited from itk::LightObject | |
InternalReferenceCountType | m_ReferenceCount |
SimpleFastMutexLock | m_ReferenceCountLock |
typedef AffineTransform< ParameterValueType, FixedImageType::ImageDimension > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::AffineTransformType |
Definition at line 143 of file itkLandmarkBasedTransformInitializer.h.
typedef SmartPointer< const Self > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::ConstPointer |
Definition at line 78 of file itkLandmarkBasedTransformInitializer.h.
typedef FixedImageType::ConstPointer itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::FixedImagePointer |
Definition at line 103 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 96 of file itkLandmarkBasedTransformInitializer.h.
typedef TransformType::InputPointType itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::InputPointType |
Convenience typedefs
Definition at line 110 of file itkLandmarkBasedTransformInitializer.h.
typedef std::vector< LandmarkPointType > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::LandmarkPointContainer |
Definition at line 113 of file itkLandmarkBasedTransformInitializer.h.
typedef Point< double, itkGetStaticConstMacro(ImageDimension) > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::LandmarkPointType |
Definition at line 112 of file itkLandmarkBasedTransformInitializer.h.
typedef LandmarkWeightType::const_iterator itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::LandmarkWeightConstIterator |
Definition at line 118 of file itkLandmarkBasedTransformInitializer.h.
typedef std::vector< double > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::LandmarkWeightType |
Definition at line 117 of file itkLandmarkBasedTransformInitializer.h.
typedef MovingImageType::ConstPointer itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::MovingImagePointer |
Definition at line 104 of file itkLandmarkBasedTransformInitializer.h.
typedef TMovingImage itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::MovingImageType |
Definition at line 100 of file itkLandmarkBasedTransformInitializer.h.
typedef TransformType::OutputVectorType itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::OutputVectorType |
Definition at line 111 of file itkLandmarkBasedTransformInitializer.h.
typedef TransformType::ParametersType itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::ParametersType |
Definition at line 115 of file itkLandmarkBasedTransformInitializer.h.
typedef ParametersType::ValueType itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::ParameterValueType |
Definition at line 116 of file itkLandmarkBasedTransformInitializer.h.
typedef SmartPointer< Self > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::Pointer |
Definition at line 77 of file itkLandmarkBasedTransformInitializer.h.
typedef LandmarkPointContainer::const_iterator itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::PointsContainerConstIterator |
Definition at line 114 of file itkLandmarkBasedTransformInitializer.h.
typedef Rigid2DTransform< ParameterValueType > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::Rigid2DTransformType |
Definition at line 142 of file itkLandmarkBasedTransformInitializer.h.
typedef LandmarkBasedTransformInitializer itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::Self |
Standard class typedefs.
Definition at line 75 of file itkLandmarkBasedTransformInitializer.h.
typedef Object itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::Superclass |
Definition at line 76 of file itkLandmarkBasedTransformInitializer.h.
typedef TransformType::Pointer itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::TransformPointer |
Definition at line 88 of file itkLandmarkBasedTransformInitializer.h.
typedef TTransform itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::TransformType |
Type of the transform to initialize
Definition at line 84 of file itkLandmarkBasedTransformInitializer.h.
typedef VersorRigid3DTransform< ParameterValueType > itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::VersorRigid3DTransformType |
Supported Transform typedefs
Definition at line 141 of file itkLandmarkBasedTransformInitializer.h.
|
protected |
Enumerator | |
---|---|
VersorRigid3Dtransform | |
Rigid2Dtransfrom | |
Else |
Definition at line 155 of file itkLandmarkBasedTransformInitializer.h.
|
protected |
|
inlineprotected |
Definition at line 150 of file itkLandmarkBasedTransformInitializer.h.
|
private |
|
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
|
static |
New macro for creation of through a Smart Pointer.
|
private |
|
protectedvirtual |
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.
|
inline |
Set the Fixed landmark point containers
Definition at line 121 of file itkLandmarkBasedTransformInitializer.h.
References itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::m_FixedLandmarks.
|
inline |
Set the landmark weight point containers Weight includes diagonal elements of weight matrix
Definition at line 135 of file itkLandmarkBasedTransformInitializer.h.
References itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::m_LandmarkWeight.
|
inline |
Set the Moving landmark point containers
Definition at line 127 of file itkLandmarkBasedTransformInitializer.h.
References itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::m_MovingLandmarks.
|
virtual |
Set the transform to be initialized
|
static |
Determine the image dimension.
Definition at line 107 of file itkLandmarkBasedTransformInitializer.h.
|
static |
Dimension of parameters.
Definition at line 91 of file itkLandmarkBasedTransformInitializer.h.
|
private |
Definition at line 179 of file itkLandmarkBasedTransformInitializer.h.
|
private |
Definition at line 182 of file itkLandmarkBasedTransformInitializer.h.
Referenced by itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::SetFixedLandmarks().
|
private |
weights for affine landmarks
Definition at line 187 of file itkLandmarkBasedTransformInitializer.h.
Referenced by itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::SetLandmarkWeight().
|
private |
Definition at line 180 of file itkLandmarkBasedTransformInitializer.h.
|
private |
Definition at line 183 of file itkLandmarkBasedTransformInitializer.h.
Referenced by itk::LandmarkBasedTransformInitializer< TTransform, TFixedImage, TMovingImage >::SetMovingLandmarks().
|
private |
Definition at line 185 of file itkLandmarkBasedTransformInitializer.h.
|
static |
Dimension of parameters.
Definition at line 92 of file itkLandmarkBasedTransformInitializer.h.