ITK  4.4.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
itk::Transform< TScalarType, NInputDimensions, NOutputDimensions > Class Template Referenceabstract

#include <itkTransform.h>

+ Inheritance diagram for itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >:
+ Collaboration diagram for itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >:

Detailed Description

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
class itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >

Transform points and vectors from an input space to an output space.

This abstract class defines the generic interface for a geometric transformation from one space to another. The class provides methods for mapping points, vectors and covariant vectors from the input space to the output space.

Given that transformations are not necessarily invertible, this basic class does not provide the methods for back transformation. Back transform methods are implemented in derived classes where appropriate.

Registration Framework Support
Typically a Transform class has several methods for setting its parameters. For use in the registration framework, the parameters must also be represented by an array of doubles to allow communication with generic optimizers. The Array of transformation parameters is set using the SetParameters() method.

Another requirement of the registration framework is the computation of the transform Jacobian. In general, an ImageToImageMetric requires the knowledge of the Jacobian in order to compute the metric derivatives. The Jacobian is a matrix whose element are the partial derivatives of the output point with respect to the array of parameters that defines the transform.

Subclasses must provide implementations for: virtual OutputPointType TransformPoint(const InputPointType &) const virtual OutputVectorType TransformVector(const InputVectorType &) const virtual OutputVnlVectorType TransformVector(const InputVnlVectorType &) const virtual OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType &) const virtual void SetParameters(const ParametersType &) virtual void SetFixedParameters(const ParametersType &) virtual void ComputeJacobianWithRespectToParameters( const InputPointType &, JacobianType &) const virtual void ComputeJacobianWithRespectToPosition( const InputPointType & x, JacobianType &jacobian ) const;

Since TranformVector and TransformCovariantVector have multiple overloaded methods from the base class, subclasses must specify: using Superclass::TransformVector; using Superclass::TransformCovariantVector;

Definition at line 82 of file itkTransform.h.

Public Types

typedef SmartPointer< const SelfConstPointer
 
typedef Array
< ParametersValueType
DerivativeType
 
typedef Matrix< double,
itkGetStaticConstMacro(OutputSpaceDimension),
itkGetStaticConstMacro(InputSpaceDimension)> 
DirectionChangeMatrix
 
typedef CovariantVector
< TScalarType,
NInputDimensions > 
InputCovariantVectorType
 
typedef DiffusionTensor3D
< TScalarType > 
InputDiffusionTensor3DType
 
typedef Matrix< double,
itkGetStaticConstMacro(InputSpaceDimension),
itkGetStaticConstMacro(InputSpaceDimension)> 
InputDirectionMatrix
 
typedef Point< TScalarType,
NInputDimensions > 
InputPointType
 
typedef
SymmetricSecondRankTensor
< TScalarType,
NInputDimensions > 
InputSymmetricSecondRankTensorType
 
typedef VariableLengthVector
< TScalarType > 
InputVectorPixelType
 
typedef Vector< TScalarType,
NInputDimensions > 
InputVectorType
 
typedef vnl_vector_fixed
< TScalarType,
NInputDimensions > 
InputVnlVectorType
 
typedef
InverseTransformBaseType::Pointer 
InverseTransformBasePointer
 
typedef Transform< TScalarType,
NOutputDimensions,
NInputDimensions > 
InverseTransformBaseType
 
typedef Array2D
< ParametersValueType
JacobianType
 
typedef Matrix< TScalarType,
itkGetStaticConstMacro(OutputSpaceDimension),
itkGetStaticConstMacro(InputSpaceDimension)> 
MatrixType
 
typedef
Superclass::NumberOfParametersType 
NumberOfParametersType
 
typedef CovariantVector
< TScalarType,
NOutputDimensions > 
OutputCovariantVectorType
 
typedef DiffusionTensor3D
< TScalarType > 
OutputDiffusionTensor3DType
 
typedef Matrix< double,
itkGetStaticConstMacro(OutputSpaceDimension),
itkGetStaticConstMacro(OutputSpaceDimension)> 
OutputDirectionMatrix
 
typedef Point< TScalarType,
NOutputDimensions > 
OutputPointType
 
typedef
SymmetricSecondRankTensor
< TScalarType,
NOutputDimensions > 
OutputSymmetricSecondRankTensorType
 
typedef VariableLengthVector
< TScalarType > 
OutputVectorPixelType
 
typedef Vector< TScalarType,
NOutputDimensions > 
OutputVectorType
 
typedef vnl_vector_fixed
< TScalarType,
NOutputDimensions > 
OutputVnlVectorType
 
typedef Superclass::ParametersType ParametersType
 
typedef
Superclass::ParametersValueType 
ParametersValueType
 
typedef SmartPointer< SelfPointer
 
typedef TScalarType ScalarType
 
typedef Transform Self
 
typedef TransformBase Superclass
 
- Public Types inherited from itk::TransformBase
typedef SmartPointer< const SelfConstPointer
 
typedef IdentifierType NumberOfParametersType
 
typedef OptimizerParameters
< ParametersValueType
ParametersType
 
typedef double ParametersValueType
 
typedef SmartPointer< SelfPointer
 
typedef TransformBase Self
 
typedef Object Superclass
 
enum  TransformCategoryType {
  UnknownTransformCategory =0,
  Linear =1,
  BSpline =2,
  Spline =3,
  DisplacementField =4,
  VelocityField =5
}
 
- Public Types inherited from itk::Object
typedef SmartPointer< const SelfConstPointer
 
typedef SmartPointer< SelfPointer
 
typedef Object Self
 
typedef LightObject Superclass
 
- Public Types inherited from itk::LightObject
typedef SmartPointer< const SelfConstPointer
 
typedef SmartPointer< SelfPointer
 
typedef LightObject Self
 

Public Member Functions

virtual void ComputeInverseJacobianWithRespectToPosition (const InputPointType &x, JacobianType &jacobian) const
 
virtual void ComputeJacobianWithRespectToPosition (const InputPointType &, JacobianType &) const
 
virtual const ParametersTypeGetFixedParameters (void) const
 
unsigned int GetInputSpaceDimension (void) const
 
bool GetInverse (Self *) const
 
virtual InverseTransformBasePointer GetInverseTransform () const
 
virtual const char * GetNameOfClass () const
 
virtual NumberOfParametersType GetNumberOfLocalParameters (void) const
 
virtual NumberOfParametersType GetNumberOfParameters (void) const
 
unsigned int GetOutputSpaceDimension (void) const
 
virtual const ParametersTypeGetParameters (void) const
 
virtual TransformCategoryType GetTransformCategory () const
 
virtual std::string GetTransformTypeAsString () const
 
virtual bool IsLinear () const
 
 itkCloneMacro (Self)
 
virtual void SetFixedParameters (const ParametersType &)=0
 
virtual void SetParameters (const ParametersType &)=0
 
virtual void SetParametersByValue (const ParametersType &p)
 
virtual OutputCovariantVectorType TransformCovariantVector (const InputCovariantVectorType &) const
 
virtual OutputCovariantVectorType TransformCovariantVector (const InputCovariantVectorType &vector, const InputPointType &point) const
 
virtual OutputVectorPixelType TransformCovariantVector (const InputVectorPixelType &) const
 
virtual OutputVectorPixelType TransformCovariantVector (const InputVectorPixelType &vector, const InputPointType &point) const
 
virtual OutputDiffusionTensor3DType TransformDiffusionTensor3D (const InputDiffusionTensor3DType &) const
 
virtual OutputDiffusionTensor3DType TransformDiffusionTensor3D (const InputDiffusionTensor3DType &tensor, const InputPointType &point) const
 
virtual OutputVectorPixelType TransformDiffusionTensor3D (const InputVectorPixelType &) const
 
virtual OutputVectorPixelType TransformDiffusionTensor3D (const InputVectorPixelType &tensor, const InputPointType &point) const
 
virtual OutputPointType TransformPoint (const InputPointType &) const =0
 
virtual
OutputSymmetricSecondRankTensorType 
TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &tensor, const InputPointType &point) const
 
virtual
OutputSymmetricSecondRankTensorType 
TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &) const
 
virtual OutputVectorPixelType TransformSymmetricSecondRankTensor (const InputVectorPixelType &) const
 
virtual OutputVectorPixelType TransformSymmetricSecondRankTensor (const InputVectorPixelType &tensor, const InputPointType &point) const
 
virtual OutputVectorType TransformVector (const InputVectorType &) const
 
virtual OutputVectorType TransformVector (const InputVectorType &vector, const InputPointType &point) const
 
virtual OutputVnlVectorType TransformVector (const InputVnlVectorType &) const
 
virtual OutputVnlVectorType TransformVector (const InputVnlVectorType &vector, const InputPointType &point) const
 
virtual OutputVectorPixelType TransformVector (const InputVectorPixelType &) const
 
virtual OutputVectorPixelType TransformVector (const InputVectorPixelType &vector, const InputPointType &point) const
 
virtual void UpdateTransformParameters (const DerivativeType &update, TScalarType factor=1.0)
 
virtual void ComputeJacobianWithRespectToParameters (const InputPointType &, JacobianType &) const
 
- Public Member Functions inherited from itk::TransformBase
virtual void SetFixedParameters (const ParametersType &)=0
 
virtual void SetParameters (const ParametersType &)=0
 
virtual void SetParametersByValue (const ParametersType &p)=0
 
- Public Member Functions inherited from itk::Object
unsigned long AddObserver (const EventObject &event, Command *)
 
unsigned long AddObserver (const EventObject &event, Command *) const
 
virtual LightObject::Pointer CreateAnother () const
 
virtual void DebugOff () const
 
virtual void DebugOn () const
 
CommandGetCommand (unsigned long tag)
 
bool GetDebug () const
 
MetaDataDictionaryGetMetaDataDictionary (void)
 
const MetaDataDictionaryGetMetaDataDictionary (void) const
 
virtual ModifiedTimeType GetMTime () const
 
virtual const TimeStampGetTimeStamp () const
 
bool HasObserver (const EventObject &event) const
 
void InvokeEvent (const EventObject &)
 
void InvokeEvent (const EventObject &) const
 
virtual void Modified () const
 
virtual void Register () const
 
void RemoveAllObservers ()
 
void RemoveObserver (unsigned long tag)
 
void SetDebug (bool debugFlag) const
 
void SetMetaDataDictionary (const MetaDataDictionary &rhs)
 
virtual void SetReferenceCount (int)
 
virtual void UnRegister () 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 Attributes

static const unsigned int InputSpaceDimension = NInputDimensions
 
static const unsigned int OutputSpaceDimension = NOutputDimensions
 

Protected Member Functions

virtual LightObject::Pointer InternalClone () const
 
OutputDiffusionTensor3DType PreservationOfPrincipalDirectionDiffusionTensor3DReorientation (const InputDiffusionTensor3DType, const JacobianType) const
 
 Transform ()
 
 Transform (NumberOfParametersType NumberOfParameters)
 
virtual ~Transform ()
 
- Protected Member Functions inherited from itk::TransformBase
 TransformBase ()
 
virtual ~TransformBase ()
 
- Protected Member Functions inherited from itk::Object
 Object ()
 
bool PrintObservers (std::ostream &os, Indent indent) const
 
virtual void PrintSelf (std::ostream &os, Indent indent) const
 
virtual void SetTimeStamp (const TimeStamp &time)
 
virtual ~Object ()
 
- Protected Member Functions inherited from itk::LightObject
 LightObject ()
 
virtual void PrintHeader (std::ostream &os, Indent indent) const
 
virtual void PrintTrailer (std::ostream &os, Indent indent) const
 
virtual ~LightObject ()
 

Protected Attributes

DirectionChangeMatrix m_DirectionChange
 
ParametersType m_FixedParameters
 
ParametersType m_Parameters
 

Private Member Functions

template<typename TType >
std::string GetTransformTypeAsString (TType *) const
 
std::string GetTransformTypeAsString (float *) const
 
std::string GetTransformTypeAsString (double *) const
 
void operator= (const Self &)
 
 Transform (const Self &)
 

Additional Inherited Members

- 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)
 
- Protected Types inherited from itk::LightObject
typedef int InternalReferenceCountType
 

Member Typedef Documentation

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef SmartPointer<const Self> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::ConstPointer

Definition at line 89 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Array<ParametersValueType> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::DerivativeType

Definition at line 120 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Matrix<double, itkGetStaticConstMacro(OutputSpaceDimension), itkGetStaticConstMacro(InputSpaceDimension)> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::DirectionChangeMatrix

Definition at line 182 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef CovariantVector<TScalarType, NInputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InputCovariantVectorType

Standard covariant vector type for this class

Definition at line 146 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef DiffusionTensor3D<TScalarType> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InputDiffusionTensor3DType

Definition at line 141 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Matrix<double, itkGetStaticConstMacro(InputSpaceDimension), itkGetStaticConstMacro(InputSpaceDimension)> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InputDirectionMatrix

Definition at line 178 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Point<TScalarType, NInputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InputPointType

Standard coordinate point type for this class

Definition at line 156 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef SymmetricSecondRankTensor<TScalarType,NInputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InputSymmetricSecondRankTensorType

Definition at line 136 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef VariableLengthVector<TScalarType> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InputVectorPixelType

Standard variable length vector type for this class this provides an interface for the VectorImage class

Definition at line 131 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Vector<TScalarType, NInputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InputVectorType

Standard vector type for this class.

Definition at line 126 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef vnl_vector_fixed<TScalarType, NInputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InputVnlVectorType

Standard vnl_vector type for this class.

Definition at line 151 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef InverseTransformBaseType::Pointer itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InverseTransformBasePointer

Definition at line 165 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Transform< TScalarType, NOutputDimensions, NInputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InverseTransformBaseType

Base inverse transform type. This type should not be changed to the concrete inverse transform type or inheritance would be lost.

Definition at line 162 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Array2D<ParametersValueType> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::JacobianType

Type of the Jacobian matrix.

Definition at line 123 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Matrix<TScalarType, itkGetStaticConstMacro(OutputSpaceDimension), itkGetStaticConstMacro(InputSpaceDimension)> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::MatrixType

Definition at line 169 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Superclass::NumberOfParametersType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::NumberOfParametersType

Definition at line 184 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef CovariantVector<TScalarType, NOutputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::OutputCovariantVectorType

Definition at line 148 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef DiffusionTensor3D<TScalarType> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::OutputDiffusionTensor3DType

Definition at line 142 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Matrix<double, itkGetStaticConstMacro(OutputSpaceDimension), itkGetStaticConstMacro(OutputSpaceDimension)> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::OutputDirectionMatrix

Definition at line 174 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Point<TScalarType, NOutputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::OutputPointType

Definition at line 157 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef SymmetricSecondRankTensor<TScalarType,NOutputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::OutputSymmetricSecondRankTensorType

Definition at line 138 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef VariableLengthVector<TScalarType> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::OutputVectorPixelType

Definition at line 132 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Vector<TScalarType, NOutputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::OutputVectorType

Definition at line 127 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef vnl_vector_fixed<TScalarType, NOutputDimensions> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::OutputVnlVectorType

Definition at line 153 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Superclass::ParametersType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::ParametersType

Type of the input parameters.

Definition at line 118 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Superclass::ParametersValueType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::ParametersValueType

Definition at line 119 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef SmartPointer<Self> itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::Pointer

Definition at line 88 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef TScalarType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::ScalarType

Type of the scalar representing coordinate and vector elements.

Definition at line 115 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef Transform itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::Self

Standard class typedefs.

Definition at line 86 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
typedef TransformBase itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::Superclass

Definition at line 87 of file itkTransform.h.

Constructor & Destructor Documentation

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::Transform ( )
protected
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::Transform ( NumberOfParametersType  NumberOfParameters)
protected
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::~Transform ( )
inlineprotectedvirtual

Definition at line 540 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::Transform ( const Self )
private

Member Function Documentation

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::ComputeInverseJacobianWithRespectToPosition ( const InputPointType x,
JacobianType jacobian 
) const
virtual

This provides the ability to get a local jacobian value in a dense/local transform, e.g. DisplacementFieldTransform. For such transforms it would be unclear what parameters would refer to. Generally, global transforms should return an indentity jacobian since there is no change with respect to position.

Reimplemented in itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >, itk::MatrixOffsetTransformBase< TScalarType, 2, 2 >, and itk::MatrixOffsetTransformBase< TScalarType, 3, 3 >.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::ComputeJacobianWithRespectToParameters ( const InputPointType ,
JacobianType  
) const
inlinevirtual

Compute the Jacobian of the transformation

This method computes the Jacobian matrix of the transformation at a given input point. The rank of the Jacobian will also indicate if the transform is invertible at this point.

The Jacobian is be expressed as a matrix of partial derivatives of the output point components with respect to the parameters that defined the transform:

\[ J=\left[ \begin{array}{cccc} \frac{\partial x_{1}}{\partial p_{1}} & \frac{\partial x_{1}}{\partial p_{2}} & \cdots & \frac{\partial x_{1}}{\partial p_{m}}\\ \frac{\partial x_{2}}{\partial p_{1}} & \frac{\partial x_{2}}{\partial p_{2}} & \cdots & \frac{\partial x_{2}}{\partial p_{m}}\\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial x_{n}}{\partial p_{1}} & \frac{\partial x_{n}}{\partial p_{2}} & \cdots & \frac{\partial x_{n}}{\partial p_{m}} \end{array}\right] \]

This is also used for efficient computation of a point-local jacobian for dense transforms. jacobian is assumed to be thread-local variable, otherwise memory corruption will most likely occur during multi-threading. To avoid repeatitive memory allocation, pass in 'jacobian' with its size already set.

Reimplemented in itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >, itk::MatrixOffsetTransformBase< TScalarType, 2, 2 >, and itk::MatrixOffsetTransformBase< TScalarType, 3, 3 >.

Definition at line 501 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::ComputeJacobianWithRespectToPosition ( const InputPointType ,
JacobianType  
) const
inlinevirtual

This provides the ability to get a local jacobian value in a dense/local transform, e.g. DisplacementFieldTransform. For such transforms it would be unclear what parameters would refer to. Generally, global transforms should return an indentity jacobian since there is no change with respect to position.

Reimplemented in itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >, itk::MatrixOffsetTransformBase< TScalarType, 2, 2 >, and itk::MatrixOffsetTransformBase< TScalarType, 3, 3 >.

Definition at line 515 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual const ParametersType& itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetFixedParameters ( void  ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
unsigned int itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetInputSpaceDimension ( void  ) const
inlinevirtual

Get the size of the input space

Implements itk::TransformBase.

Definition at line 103 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
bool itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetInverse ( Self ) const
inline

Returns a boolean indicating whether it is possible or not to compute the inverse of this current Transform. If it is possible, then the inverse of the transform is returned in the inverseTransform variable passed by the user. The inverse is recomputed if this current transform has been modified. This method is intended to be overriden as needed by derived classes.

Definition at line 413 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual InverseTransformBasePointer itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetInverseTransform ( ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual const char* itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from itk::TransformBase.

Reimplemented in itk::BSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::BSplineTransform< TScalarType, NDimensions, VSplineOrder >, itk::AffineTransform< TScalarType, NDimensions >, itk::AzimuthElevationToCartesianTransform< TScalarType, NDimensions >, itk::CompositeTransform< TScalar, NDimensions >, itk::DisplacementFieldTransform< TScalar, NDimensions >, itk::MatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >, itk::MatrixOffsetTransformBase< TScalarType, 2, 2 >, itk::MatrixOffsetTransformBase< TScalarType, 3, 3 >, itk::TimeVaryingBSplineVelocityFieldTransform< TScalar, NDimensions >, itk::Similarity2DTransform< TScalarType >, itk::MultiTransform< TScalar, NDimensions, NSubDimensions >, itk::MultiTransform< TScalar, NDimensions >, itk::KernelTransform< TScalarType, NDimensions >, itk::Rigid3DTransform< TScalarType >, itkv3::Rigid3DTransform< TScalarType >, itk::CenteredSimilarity2DTransform< TScalarType >, itk::Rigid2DTransform< TScalarType >, itk::GaussianExponentialDiffeomorphicTransform< TScalar, NDimensions >, itk::CenteredRigid2DTransform< TScalarType >, itk::BSplineExponentialDiffeomorphicTransform< TScalar, NDimensions >, itk::Rigid3DPerspectiveTransform< TScalarType >, itk::TimeVaryingVelocityFieldTransform< TScalar, NDimensions >, itk::IdentityTransform< TScalarType, NDimensions >, itk::QuaternionRigidTransform< TScalarType >, itk::ScaleSkewVersor3DTransform< TScalarType >, itk::BSplineSmoothingOnUpdateDisplacementFieldTransform< TScalar, NDimensions >, itk::Euler3DTransform< TScalarType >, itk::ScaleTransform< TScalarType, NDimensions >, itk::Similarity3DTransform< TScalarType >, itk::TranslationTransform< TScalarType, NDimensions >, itk::VersorRigid3DTransform< TScalarType >, itk::ScaleVersor3DTransform< TScalarType >, itk::VersorTransform< TScalarType >, itk::GaussianSmoothingOnUpdateDisplacementFieldTransform< TScalar, NDimensions >, itk::ElasticBodySplineKernelTransform< TScalarType, NDimensions >, itk::Euler2DTransform< TScalarType >, itk::ElasticBodyReciprocalSplineKernelTransform< TScalarType, NDimensions >, itk::ScaleLogarithmicTransform< TScalarType, NDimensions >, itk::CenteredEuler3DTransform< TScalarType >, itk::ThinPlateR2LogRSplineKernelTransform< TScalarType, NDimensions >, itk::GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform< TScalar, NDimensions >, itk::VolumeSplineKernelTransform< TScalarType, NDimensions >, itk::ThinPlateSplineKernelTransform< TScalarType, NDimensions >, itk::CenteredAffineTransform< TScalarType, NDimensions >, itk::FixedCenterOfRotationAffineTransform< TScalarType, NDimensions >, itk::ScalableAffineTransform< TScalarType, NDimensions >, itk::ConstantVelocityFieldTransform< TScalar, NDimensions >, itk::VelocityFieldTransform< TScalar, NDimensions >, and itk::BSplineBaseTransform< TScalarType, NDimensions, VSplineOrder >.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual NumberOfParametersType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetNumberOfLocalParameters ( void  ) const
inlinevirtual

Return the number of local parameters that completely defines the Transform at an individual voxel. For transforms with local support, this will enable downstream computation of the jacobian wrt only the local support region. For instance, in the case of a deformation field, this will be equal to the number of image dimensions. If it is an affine transform, this will be the same as the GetNumberOfParameters().

Reimplemented in itk::DisplacementFieldTransform< TScalar, NDimensions >, itk::CompositeTransform< TScalar, NDimensions >, itk::BSplineBaseTransform< TScalarType, NDimensions, VSplineOrder >, itk::MultiTransform< TScalar, NDimensions, NSubDimensions >, and itk::MultiTransform< TScalar, NDimensions >.

Definition at line 394 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual NumberOfParametersType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetNumberOfParameters ( void  ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
unsigned int itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetOutputSpaceDimension ( void  ) const
inlinevirtual

Get the size of the output space

Implements itk::TransformBase.

Definition at line 109 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual const ParametersType& itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetParameters ( void  ) const
inlinevirtual

Get the Transformation Parameters.

Implements itk::TransformBase.

Reimplemented in itk::CompositeTransform< TScalar, NDimensions >, itk::MatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >, itk::MatrixOffsetTransformBase< TScalarType, 2, 2 >, itk::MatrixOffsetTransformBase< TScalarType, 3, 3 >, itk::MultiTransform< TScalar, NDimensions, NSubDimensions >, itk::MultiTransform< TScalar, NDimensions >, itk::IdentityTransform< TScalarType, NDimensions >, itk::Rigid2DTransform< TScalarType >, itk::KernelTransform< TScalarType, NDimensions >, itk::BSplineBaseTransform< TScalarType, NDimensions, VSplineOrder >, itk::Similarity2DTransform< TScalarType >, itk::CenteredSimilarity2DTransform< TScalarType >, itk::Rigid3DPerspectiveTransform< TScalarType >, itk::CenteredRigid2DTransform< TScalarType >, itk::QuaternionRigidTransform< TScalarType >, itk::ScaleSkewVersor3DTransform< TScalarType >, itk::TranslationTransform< TScalarType, NDimensions >, itk::ScaleTransform< TScalarType, NDimensions >, itk::Similarity3DTransform< TScalarType >, itk::VersorTransform< TScalarType >, itk::ScaleVersor3DTransform< TScalarType >, itk::VersorRigid3DTransform< TScalarType >, itk::CenteredEuler3DTransform< TScalarType >, itk::ScaleLogarithmicTransform< TScalarType, NDimensions >, itk::CenteredAffineTransform< TScalarType, NDimensions >, and itk::Euler3DTransform< TScalarType >.

Definition at line 363 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual TransformCategoryType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetTransformCategory ( ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual std::string itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetTransformTypeAsString ( ) const
virtual

Generate a platform independent name

Implements itk::TransformBase.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
template<typename TType >
std::string itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetTransformTypeAsString ( TType *  ) const
inlineprivate

Definition at line 563 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
std::string itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetTransformTypeAsString ( float *  ) const
inlineprivate

Definition at line 570 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
std::string itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetTransformTypeAsString ( double *  ) const
inlineprivate

Definition at line 577 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual LightObject::Pointer itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InternalClone ( ) const
protectedvirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual bool itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::IsLinear ( ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::itkCloneMacro ( Self  )

define the Clone method

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::operator= ( const Self )
private
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
OutputDiffusionTensor3DType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::PreservationOfPrincipalDirectionDiffusionTensor3DReorientation ( const InputDiffusionTensor3DType  ,
const JacobianType   
) const
protected
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::SetFixedParameters ( const ParametersType )
pure virtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::SetParameters ( const ParametersType )
pure virtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::SetParametersByValue ( const ParametersType p)
inlinevirtual

Set the transformation parameters and update internal transformation. This method forces the transform to copy the parameters. The default implementation is to call SetParameters. This call must be overridden if the transform normally implements SetParameters by keeping a reference to the parameters.

See Also
SetParameters

Definition at line 357 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputCovariantVectorType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformCovariantVector ( const InputCovariantVectorType ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputCovariantVectorType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformCovariantVector ( const InputCovariantVectorType vector,
const InputPointType point 
) const
virtual

Method to transform a CovariantVector, using a point. Global transforms can ignore the point parameter. Local transforms (e.g. deformation field transform) must override and provide required behavior. By default, point is ignored and TransformCovariantVector(vector) is called

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorPixelType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformCovariantVector ( const InputVectorPixelType ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorPixelType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformCovariantVector ( const InputVectorPixelType vector,
const InputPointType point 
) const
virtual

Method to transform a CovariantVector, using a point. Global transforms can ignore the point parameter. Local transforms (e.g. deformation field transform) must override and provide required behavior. By default, point is ignored and TransformCovariantVector(vector) is called

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputDiffusionTensor3DType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformDiffusionTensor3D ( const InputDiffusionTensor3DType ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputDiffusionTensor3DType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformDiffusionTensor3D ( const InputDiffusionTensor3DType tensor,
const InputPointType point 
) const
virtual

Method to transform a diffusion tensor at a point. Global transforms can ignore the point parameter. Local transforms (e.g. deformation field transform) must override and provide required behavior. By default, point is ignored and TransformDiffusionTensor(tensor) is called

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorPixelType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformDiffusionTensor3D ( const InputVectorPixelType ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorPixelType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformDiffusionTensor3D ( const InputVectorPixelType tensor,
const InputPointType point 
) const
virtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputPointType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformPoint ( const InputPointType ) const
pure virtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputSymmetricSecondRankTensorType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformSymmetricSecondRankTensor ( const InputSymmetricSecondRankTensorType tensor,
const InputPointType point 
) const
virtual

Method to transform a diffusion tensor at a point. Global transforms can ignore the point parameter. Local transforms (e.g. deformation field transform) must override and provide required behavior. By default, point is ignored and TransformSymmetricSecondRankTensor(tensor) is called

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputSymmetricSecondRankTensorType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformSymmetricSecondRankTensor ( const InputSymmetricSecondRankTensorType ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorPixelType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformSymmetricSecondRankTensor ( const InputVectorPixelType ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorPixelType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformSymmetricSecondRankTensor ( const InputVectorPixelType tensor,
const InputPointType point 
) const
virtual

Method to transform a diffusion tensor stored in a VectorImage, at a point. Global transforms can ignore the point parameter. Local transforms (e.g. deformation field transform) must override and provide required behavior. By default, point is ignored and TransformDiffusionTensor(tensor) is called

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformVector ( const InputVectorType ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformVector ( const InputVectorType vector,
const InputPointType point 
) const
virtual

Method to transform a vector at a given location. For global transforms, point is ignored and TransformVector( vector ) is called. Local transforms (e.g. deformation field transform) must override and provide required behavior.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVnlVectorType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformVector ( const InputVnlVectorType ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVnlVectorType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformVector ( const InputVnlVectorType vector,
const InputPointType point 
) const
virtual

Method to transform a vnl_vector, at a point. For global transforms, point is ignored and TransformVector( vector ) is called. Local transforms (e.g. deformation field transform) must override and provide required behavior.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorPixelType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformVector ( const InputVectorPixelType ) const
inlinevirtual
template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual OutputVectorPixelType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformVector ( const InputVectorPixelType vector,
const InputPointType point 
) const
virtual

Method to transform a vector stored in a VectorImage, at a point. For global transforms, point is ignored and TransformVector( vector ) is called. Local transforms (e.g. deformation field transform) must override and provide required behavior.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::UpdateTransformParameters ( const DerivativeType update,
TScalarType  factor = 1.0 
)
virtual

Update the transform's parameters by the values in update.

Parameters
updatemust be of the same length as returned by GetNumberOfParameters(). Throw an exception otherwise.
factoris a scalar multiplier for each value in update. SetParameters is called at the end of this method, to allow the transform to perform any required operations on the updated parameters - typically a conversion to member variables for use in TransformPoint.

Member Data Documentation

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
const unsigned int itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::InputSpaceDimension = NInputDimensions
static

Dimension of the domain space.

Definition at line 95 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
DirectionChangeMatrix itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::m_DirectionChange
mutableprotected

Definition at line 556 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
ParametersType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::m_FixedParameters
mutableprotected

Definition at line 545 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
ParametersType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::m_Parameters
mutableprotected

Definition at line 544 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
const unsigned int itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::OutputSpaceDimension = NOutputDimensions
static

Dimension of the domain space.

Definition at line 96 of file itkTransform.h.


The documentation for this class was generated from the following file: