Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

# itk::AffineTransform< TScalarType, NDimensions > Class Template Reference [Transforms]

#include <itkAffineTransform.h>

Inheritance diagram for itk::AffineTransform< TScalarType, NDimensions >:

[legend]
Collaboration diagram for itk::AffineTransform< TScalarType, NDimensions >:

[legend]
List of all members.

## Detailed Description

### template<class TScalarType = double, unsigned int NDimensions = 3> class itk::AffineTransform< TScalarType, NDimensions >

Affine transformation of a vector space (e.g. space coordinates)

This class allows the definition and manipulation of affine transformations of an n-dimensional affine space (and its associated vector space) onto itself. One common use is to define and manipulate Euclidean coordinate transformations in two and three dimensions, but other uses are possible as well.

An affine transformation is defined mathematically as a linear transformation plus a constant offset. If A is a constant n x n matrix and b is a constant n-vector, then y = Ax+b defines an affine transformation from the n-vector x to the n-vector y.

The difference between two points is a vector and transforms linearly, using the matrix only. That is, (y1-y2) = A*(x1-x2).

The AffineTransform class determines whether to transform an object as a point or a vector by examining its type. An object of type Point transforms as a point; an object of type Vector transforms as a vector.

One common use of affine transformations is to define coordinate conversions in two- and three-dimensional space. In this application, x is a two- or three-dimensional vector containing the "source" coordinates of a point, y is a vector containing the "target" coordinates, the matrix A defines the scaling and rotation of the coordinate systems from the source to the target, and b defines the translation of the origin from the source to the target. More generally, A can also define anisotropic scaling and shearing transformations. Any good textbook on computer graphics will discuss coordinate transformations in more detail. Several of the methods in this class are designed for this purpose and use the language appropriate to coordinate conversions.

Any two affine transformations may be composed and the result is another affine transformation. However, the order is important. Given two affine transformations T1 and T2, we will say that "precomposing T1 with T2" yields the transformation which applies T1 to the source, and then applies T2 to that result to obtain the target. Conversely, we will say that "postcomposing T1 with T2" yields the transformation which applies T2 to the source, and then applies T1 to that result to obtain the target. (Whether T1 or T2 comes first lexicographically depends on whether you choose to write mappings from right-to-left or vice versa; we avoid the whole problem by referring to the order of application rather than the textual order.)

There are two template parameters for this class:

ScalarT The type to be used for scalar numeric values. Either float or double.

NDimensions The number of dimensions of the vector space.

This class provides several methods for setting the matrix and vector defining the transform. To support the registration framework, the transform parameters can also be set as an Array<double> of size (NDimension + 1) * NDimension using method SetParameters(). The first (NDimension x NDimension) parameters defines the matrix in column-major order (where the column index) varies the fastest). The last NDimension parameters defines the translation in each dimensions.

This class also supports the specification of a center of rotation (center) and a translation that is applied with respect to that centered rotation. By default the center of rotation is set to the origin.

Definition at line 109 of file itkAffineTransform.h.

## Public Types

typedef Superclass::CenterType CenterType
typedef SmartPointer< const
Self
ConstPointer
typedef Superclass::InputCovariantVectorType InputCovariantVectorType
typedef Superclass::InputPointType InputPointType
typedef Superclass::InputVectorType InputVectorType
typedef Superclass::InputVnlVectorType InputVnlVectorType
typedef Superclass::InverseMatrixType InverseMatrixType
typedef Superclass::JacobianType JacobianType
typedef Superclass::MatrixType MatrixType
typedef Superclass::OffsetType OffsetType
typedef Superclass::OutputCovariantVectorType OutputCovariantVectorType
typedef Superclass::OutputPointType OutputPointType
typedef Superclass::OutputVectorType OutputVectorType
typedef Superclass::OutputVnlVectorType OutputVnlVectorType
typedef Superclass::ParametersType ParametersType
typedef SmartPointer< SelfPointer
typedef Superclass::ScalarType ScalarType
typedef AffineTransform Self
typedef MatrixOffsetTransformBase<
TScalarType, NDimensions,
NDimensions >
Superclass
typedef Superclass::TranslationType TranslationType

## Public Member Functions

InputPointType BackTransformPoint (const OutputPointType &point) const
void Compose (const Self *other, bool pre=0)
virtual LightObject::Pointer CreateAnother () const
virtual void DebugOff () const
virtual void DebugOn () const
virtual void Delete ()
const InputPointTypeGetCenter () const
CommandGetCommand (unsigned long tag)
bool GetDebug () const
virtual const ParametersTypeGetFixedParameters (void) const
unsigned int GetInputSpaceDimension (void) const
bool GetInverse (Self *inverse) const
const InverseMatrixTypeGetInverseMatrix (void) const
const JacobianTypeGetJacobian (const InputPointType &point) const
const MatrixTypeGetMatrix () const
virtual unsigned long GetMTime () const
virtual const char * GetNameOfClass () const
virtual unsigned int GetNumberOfParameters (void) const
const OutputVectorTypeGetOffset (void) const
unsigned int GetOutputSpaceDimension (void) const
const ParametersTypeGetParameters (void) const
virtual int GetReferenceCount () const
virtual std::string GetTransformTypeAsString () const
const OutputVectorTypeGetTranslation (void) const
bool HasObserver (const EventObject &event) const
void InvokeEvent (const EventObject &) const
void InvokeEvent (const EventObject &)
virtual bool IsLinear () const
itkStaticConstMacro (ParametersDimension, unsigned int, NOutputDimensions *(NInputDimensions+1))
itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions)
itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions)
ScalarType Metric (void) const
ScalarType Metric (const Self *other) const
virtual void Modified () const
void Print (std::ostream &os, Indent indent=0) const
virtual void Register () const
void RemoveAllObservers ()
void RemoveObserver (unsigned long tag)
void Rotate2D (TScalarType angle, bool pre=0)
void Rotate3D (const OutputVectorType &axis, TScalarType angle, bool pre=0)
void SetCenter (const InputPointType &center)
void SetDebug (bool debugFlag) const
virtual void SetFixedParameters (const ParametersType &)=0
virtual void SetFixedParameters (const ParametersType &)
virtual void SetIdentity (void)
virtual void SetMatrix (const MatrixType &matrix)
void SetOffset (const OutputVectorType &offset)
virtual void SetParameters (const ParametersType &)=0
void SetParameters (const ParametersType &parameters)
virtual void SetParametersByValue (const ParametersType &p)=0
virtual void SetParametersByValue (const ParametersType &p)
virtual void SetReferenceCount (int)
void SetTranslation (const OutputVectorType &translation)
void Shear (int axis1, int axis2, TScalarType coef, bool pre=0)
OutputCovariantVectorType TransformCovariantVector (const InputCovariantVectorType &vector) const
OutputPointType TransformPoint (const InputPointType &point) const
virtual OutputVnlVectorType TransformVector (const InputVnlVectorType &) const
OutputVnlVectorType TransformVector (const InputVnlVectorType &vector) const
OutputVectorType TransformVector (const InputVectorType &vector) const
void Translate (const OutputVectorType &offset, bool pre=0)
virtual void UnRegister () const
unsigned long AddObserver (const EventObject &event, Command *) const
unsigned long AddObserver (const EventObject &event, Command *)
InputCovariantVectorType BackTransform (const OutputCovariantVectorType &vector) const
InputVnlVectorType BackTransform (const OutputVnlVectorType &vector) const
InputVectorType BackTransform (const OutputVectorType &vector) const
InputPointType BackTransform (const OutputPointType &point) const
itkStaticConstMacro (ParametersDimension, unsigned int, NDimensions *(NDimensions+1))
itkStaticConstMacro (SpaceDimension, unsigned int, NDimensions)
itkStaticConstMacro (OutputSpaceDimension, unsigned int, NDimensions)
itkStaticConstMacro (InputSpaceDimension, unsigned int, NDimensions)
void Rotate (int axis1, int axis2, TScalarType angle, bool pre=0)
void Scale (const TScalarType &factor, bool pre=0)
void Scale (const OutputVectorType &factor, bool pre=0)

## Static Public Member Functions

static void BreakOnError ()
static Pointer New ()
static bool GetGlobalWarningDisplay ()
static void GlobalWarningDisplayOff ()
static void GlobalWarningDisplayOn ()
static void SetGlobalWarningDisplay (bool flag)

## Protected Types

typedef int InternalReferenceCountType

## Protected Member Functions

virtual void ComputeMatrix (void)
virtual void ComputeMatrixParameters (void)
virtual void ComputeOffset (void)
virtual void ComputeTranslation (void)
const InverseMatrixTypeGetVarInverseMatrix (void) const
bool InverseMatrixIsOld (void) const
bool PrintObservers (std::ostream &os, Indent indent) const
void PrintSelf (std::ostream &s, Indent indent) const
void SetVarCenter (const InputPointType &center)
void SetVarInverseMatrix (const InverseMatrixType &matrix) const
void SetVarMatrix (const MatrixType &matrix)
void SetVarOffset (const OutputVectorType &offset)
void SetVarTranslation (const OutputVectorType &translation)
virtual ~AffineTransform ()
virtual void PrintHeader (std::ostream &os, Indent indent) const
virtual void PrintTrailer (std::ostream &os, Indent indent) const

## Protected Attributes

ParametersType m_FixedParameters
JacobianType m_Jacobian
ParametersType m_Parameters
InternalReferenceCountType m_ReferenceCount
SimpleFastMutexLock m_ReferenceCountLock

## Member Typedef Documentation

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::CenterType itk::AffineTransform< TScalarType, NDimensions >::CenterType

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 152 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef SmartPointer itk::AffineTransform< TScalarType, NDimensions >::ConstPointer

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::InputCovariantVectorType itk::AffineTransform< TScalarType, NDimensions >::InputCovariantVectorType

Standard covariant vector type for this class

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 147 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::InputPointType itk::AffineTransform< TScalarType, NDimensions >::InputPointType

Standard coordinate point type for this class

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 140 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::InputVectorType itk::AffineTransform< TScalarType, NDimensions >::InputVectorType

Standard vector type for this class

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 142 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::InputVnlVectorType itk::AffineTransform< TScalarType, NDimensions >::InputVnlVectorType

Standard vnl_vector type for this class

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 144 of file itkAffineTransform.h.

 typedef int itk::LightObject::InternalReferenceCountType [protected, inherited]

Define the type of the reference count according to the target. This allows the use of atomic operations

Definition at line 139 of file itkLightObject.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::InverseMatrixType itk::AffineTransform< TScalarType, NDimensions >::InverseMatrixType

Standard inverse matrix type for this class

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 151 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::JacobianType itk::AffineTransform< TScalarType, NDimensions >::JacobianType

Jacobian Type

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 138 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::MatrixType itk::AffineTransform< TScalarType, NDimensions >::MatrixType

Standard matrix type for this class

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 150 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::OffsetType itk::AffineTransform< TScalarType, NDimensions >::OffsetType

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 153 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::OutputCovariantVectorType itk::AffineTransform< TScalarType, NDimensions >::OutputCovariantVectorType

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 149 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::OutputPointType itk::AffineTransform< TScalarType, NDimensions >::OutputPointType

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::OutputVectorType itk::AffineTransform< TScalarType, NDimensions >::OutputVectorType

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 143 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::OutputVnlVectorType itk::AffineTransform< TScalarType, NDimensions >::OutputVnlVectorType

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 145 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::ParametersType itk::AffineTransform< TScalarType, NDimensions >::ParametersType

Parameters Type

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 137 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef SmartPointer itk::AffineTransform< TScalarType, NDimensions >::Pointer

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::ScalarType itk::AffineTransform< TScalarType, NDimensions >::ScalarType

Standard scalar type for this class

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 139 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef AffineTransform itk::AffineTransform< TScalarType, NDimensions >::Self

Standard typedefs

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 114 of file itkAffineTransform.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions > itk::AffineTransform< TScalarType, NDimensions >::Superclass

template<class TScalarType = double, unsigned int NDimensions = 3>
 typedef Superclass::TranslationType itk::AffineTransform< TScalarType, NDimensions >::TranslationType

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

Definition at line 154 of file itkAffineTransform.h.

## Constructor & Destructor Documentation

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::AffineTransform ( const MatrixType & matrix, const OutputVectorType & offset ) [protected]

Construct an AffineTransform object

This method constructs a new AffineTransform object and initializes the matrix and offset parts of the transformation to values specified by the caller. If the arguments are omitted, then the AffineTransform is initialized to an identity transformation in the appropriate number of dimensions.

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::AffineTransform ( unsigned int outputDims, unsigned int paramDims ) [protected]

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::AffineTransform ( ) [protected]

template<class TScalarType = double, unsigned int NDimensions = 3>
 virtual itk::AffineTransform< TScalarType, NDimensions >::~AffineTransform ( ) [protected, virtual]

Destroy an AffineTransform object

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::AffineTransform ( ) [protected]

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::AffineTransform ( unsigned int outputDims, unsigned int paramDims ) [protected]

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::AffineTransform ( const MatrixType & matrix, const OutputVectorType & offset ) [protected]

Construct an AffineTransform object

This method constructs a new AffineTransform object and initializes the matrix and offset parts of the transformation to values specified by the caller. If the arguments are omitted, then the AffineTransform is initialized to an identity transformation in the appropriate number of dimensions.

## Member Function Documentation

 unsigned long itk::Object::AddObserver ( const EventObject & event, Command * ) const [inherited]

 unsigned long itk::Object::AddObserver ( const EventObject & event, Command * ) [inherited]

Allow people to add/remove/invoke observers (callbacks) to any ITK object. This is an implementation of the subject/observer design pattern. An observer is added by specifying an event to respond to and an itk::Command to execute. It returns an unsigned long tag which can be used later to remove the event or retrieve the command. The memory for the Command becomes the responsibility of this object, so don't pass the same instance of a command to two different objects

template<class TScalarType, unsigned int NDimensions>
 AffineTransform< TScalarType, NDimensions >::InputCovariantVectorType itk::AffineTransform< TScalarType, NDimensions >::BackTransform ( const OutputCovariantVectorType & vec ) const [inline]

Definition at line 348 of file itkAffineTransform.h.

References itkWarningMacro.

template<class TScalarType, unsigned int NDimensions>
 AffineTransform< TScalarType, NDimensions >::InputVnlVectorType itk::AffineTransform< TScalarType, NDimensions >::BackTransform ( const OutputVnlVectorType & vect ) const [inline]

Back transform a vnl_vector

Definition at line 333 of file itkAffineTransform.h.

template<class TScalarType, unsigned int NDimensions>
 AffineTransform< TScalarType, NDimensions >::InputVectorType itk::AffineTransform< TScalarType, NDimensions >::BackTransform ( const OutputVectorType & vect ) const [inline]

Back transform a vector

Definition at line 318 of file itkAffineTransform.h.

template<class TScalarType, unsigned int NDimensions>
 AffineTransform< TScalarType, NDimensions >::InputPointType itk::AffineTransform< TScalarType, NDimensions >::BackTransform ( const OutputPointType & point ) const [inline]

Back transform by an affine transformation

This method finds the point or vector that maps to a given point or vector under the affine transformation defined by self. If no such point exists, an exception is thrown.

Deprecated:
Please use GetInverseTransform and then call the forward transform function

Definition at line 383 of file itkAffineTransform.h.

References itkWarningMacro.

template<class TScalarType, unsigned int NDimensions>
 AffineTransform< TScalarType, NDimensions >::InputPointType itk::AffineTransform< TScalarType, NDimensions >::BackTransformPoint ( const OutputPointType & point ) const [inline]

Back transform a point by an affine transform

This method finds the point that maps to a given point under the affine transformation defined by self. If no such point exists, an exception is thrown. The returned value is (a pointer to) a brand new point created with new.

Deprecated:
Please use GetInverseTransform and then call the forward transform function

Definition at line 373 of file itkAffineTransform.h.

 static void itk::LightObject::BreakOnError ( ) [static, inherited]

This method is called when itkExceptionMacro executes. It allows the debugger to break on error.

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::Compose ( const Self * other, bool pre = 0 ) [inherited]

Compose with another MatrixOffsetTransformBase

This method composes self with another MatrixOffsetTransformBase of the same dimension, modifying self to be the composition of self and other. If the argument pre is true, then other is precomposed with self; that is, the resulting transformation consists of first applying other to the source, followed by self. If pre is false or omitted, then other is post-composed with self; that is the resulting transformation consists of first applying self to the source, followed by other. This updates the Translation based on current center.

 virtual void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::ComputeMatrix ( void ) [protected, virtual, inherited]

Reimplemented in itk::ScalableAffineTransform< TScalarType, NDimensions >.

 virtual void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::ComputeMatrixParameters ( void ) [protected, virtual, inherited]

 virtual void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::ComputeOffset ( void ) [protected, virtual, inherited]

 virtual void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::ComputeTranslation ( void ) [protected, virtual, inherited]

 virtual LightObject::Pointer itk::Object::CreateAnother ( ) const [virtual, inherited]

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::LightObject.

 virtual void itk::Object::DebugOff ( ) const [virtual, inherited]

Turn debugging output off.

 virtual void itk::Object::DebugOn ( ) const [virtual, inherited]

Turn debugging output on.

 virtual void itk::LightObject::Delete ( ) [virtual, inherited]

Delete an itk object. This method should always be used to delete an object when the new operator was used to create it. Using the C delete method will not work with reference counting.

 const InputPointType& itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetCenter ( void ) const [inline, inherited]

Get center of rotation of the MatrixOffsetTransformBase

This method returns the point used as the fixed center of rotation for the MatrixOffsetTransformBase. To define an affine transform, you must set the matrix, center, and translation OR the matrix and offset

Definition at line 250 of file itkMatrixOffsetTransformBase.h.

 Command* itk::Object::GetCommand ( unsigned long tag ) [inherited]

Get the command associated with the given tag. NOTE: This returns a pointer to a Command, but it is safe to asign this to a Command::Pointer. Since Command inherits from LightObject, at this point in the code, only a pointer or a reference to the Command can be used.

 bool itk::Object::GetDebug ( ) const [inherited]

Get the value of the debug flag.

 virtual const ParametersType& itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetFixedParameters ( void ) const [virtual, inherited]

Get the Fixed Parameters.

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

 static bool itk::Object::GetGlobalWarningDisplay ( ) [static, inherited]

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
 unsigned int itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetInputSpaceDimension ( void ) const [inline, virtual, inherited]

Get the size of the input space

Implements itk::TransformBase.

Definition at line 87 of file itkTransform.h.

 bool itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetInverse ( Self * inverse ) const [inherited]

Create inverse of an affine transformation

This populates the parameters an affine transform such that the transform is the inverse of self. If self is not invertible, an exception is thrown. Note that by default the inverese transform is centered at the origin. If you need to compute the inverse centered at a point, p,

transform2->SetCenter( p );
transform1->GetInverse( transform2 );

transform2 will now contain the inverse of transform1 and will with its center set to p. Flipping the two statements will produce an incorrect transform.

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

 const InverseMatrixType& itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetInverseMatrix ( void ) const [inherited]

Deprecated:
Method will eventually be made a protected member function

 const JacobianType& itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetJacobian ( const InputPointType & point ) const [virtual, inherited]

Compute the Jacobian of the transformation

This method computes the Jacobian matrix of the transformation. given point or vector, returning the transformed point or vector. The rank of the Jacobian will also indicate if the transform is invertible at this point.

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

 const MatrixType& itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetMatrix ( void ) const [inline, inherited]

Get matrix of an MatrixOffsetTransformBase

This method returns the value of the matrix of the MatrixOffsetTransformBase. To define an affine transform, you must set the matrix, center, and translation OR the matrix and offset

Definition at line 193 of file itkMatrixOffsetTransformBase.h.

Returns:

Returns:
Warning:
This reference may be changed.

template<class TScalarType = double, unsigned int NDimensions = 3>
 virtual const char* itk::AffineTransform< TScalarType, NDimensions >::GetNameOfClass ( ) const [virtual]

Run-time type information (and related methods).

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
 virtual unsigned int itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetNumberOfParameters ( void ) const [inline, virtual, inherited]

Return the number of parameters that completely define the Transfom

Implements itk::TransformBase.

Definition at line 216 of file itkTransform.h.

 const OutputVectorType& itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetOffset ( void ) const [inline, inherited]

Get offset of an MatrixOffsetTransformBase

This method returns the offset value of the MatrixOffsetTransformBase. To define an affine transform, you must set the matrix, center, and translation OR the matrix and offset

Definition at line 214 of file itkMatrixOffsetTransformBase.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
 unsigned int itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetOutputSpaceDimension ( void ) const [inline, virtual, inherited]

Get the size of the output space

Implements itk::TransformBase.

Definition at line 90 of file itkTransform.h.

 const ParametersType& itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetParameters ( void ) const [virtual, inherited]

Get the Transformation Parameters.

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

Reimplemented in itk::CenteredAffineTransform< TScalarType, NDimensions >.

 virtual int itk::LightObject::GetReferenceCount ( ) const [inline, virtual, inherited]

Gets the reference count on this object.

Definition at line 106 of file itkLightObject.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
 virtual std::string itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::GetTransformTypeAsString ( ) const [virtual, inherited]

Generate a platform independant name

Implements itk::TransformBase.

 const OutputVectorType& itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetTranslation ( void ) const [inline, inherited]

Get translation component of the MatrixOffsetTransformBase

This method returns the translation used after rotation about the center point. To define an affine transform, you must set the matrix, center, and translation OR the matrix and offset

Definition at line 270 of file itkMatrixOffsetTransformBase.h.

 const InverseMatrixType& itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::GetVarInverseMatrix ( void ) const [inline, protected, inherited]

Definition at line 380 of file itkMatrixOffsetTransformBase.h.

 static void itk::Object::GlobalWarningDisplayOff ( ) [inline, static, inherited]

Definition at line 100 of file itkObject.h.

References itk::Object::SetGlobalWarningDisplay().

 static void itk::Object::GlobalWarningDisplayOn ( ) [inline, static, inherited]

Definition at line 98 of file itkObject.h.

References itk::Object::SetGlobalWarningDisplay().

 bool itk::Object::HasObserver ( const EventObject & event ) const [inherited]

Return true if an observer is registered for this event.

 bool itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::InverseMatrixIsOld ( void ) const [inline, protected, inherited]

Definition at line 384 of file itkMatrixOffsetTransformBase.h.

 void itk::Object::InvokeEvent ( const EventObject & ) const [inherited]

Call Execute on all the Commands observing this event id. The actions triggered by this call doesn't modify this object.

 void itk::Object::InvokeEvent ( const EventObject & ) [inherited]

Call Execute on all the Commands observing this event id.

 virtual bool itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::IsLinear ( ) const [inline, virtual, inherited]

Indicates that this transform is linear. That is, given two points P and Q, and scalar coefficients a and b, then

T( a*P + b*Q ) = a * T(P) + b * T(Q)

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

Definition at line 357 of file itkMatrixOffsetTransformBase.h.

 itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::itkStaticConstMacro ( ParametersDimension , unsigned int, NOutputDimensions * (NInputDimensions+1) ) [inherited]

 itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::itkStaticConstMacro ( OutputSpaceDimension , unsigned int, NOutputDimensions ) [inherited]

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

 itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::itkStaticConstMacro ( InputSpaceDimension , unsigned int, NInputDimensions ) [inherited]

Dimension of the domain space.

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::itkStaticConstMacro ( ParametersDimension , unsigned int, NDimensions * (NDimensions+1) )

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::itkStaticConstMacro ( SpaceDimension , unsigned int, NDimensions )

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::itkStaticConstMacro ( OutputSpaceDimension , unsigned int, NDimensions )

template<class TScalarType = double, unsigned int NDimensions = 3>
 itk::AffineTransform< TScalarType, NDimensions >::itkStaticConstMacro ( InputSpaceDimension , unsigned int, NDimensions )

Dimension of the domain space.

template<class TScalarType = double, unsigned int NDimensions = 3>
 ScalarType itk::AffineTransform< TScalarType, NDimensions >::Metric ( void ) const

This method computes the distance from self to the identity transformation, using the same metric as the one-argument form of the Metric() method.

template<class TScalarType = double, unsigned int NDimensions = 3>
 ScalarType itk::AffineTransform< TScalarType, NDimensions >::Metric ( const Self * other ) const

Compute distance between two affine transformations

This method computes a ``distance'' between two affine transformations. This distance is guaranteed to be a metric, but not any particular metric. (At the moment, the algorithm is to collect all the elements of the matrix and offset into a vector, and compute the euclidean (L2) norm of that vector. Some metric which could be used to estimate the distance between two points transformed by the affine transformation would be more useful, but I don't have time right now to work out the mathematical details.)

template<class TScalarType = double, unsigned int NDimensions = 3>
 static Pointer itk::AffineTransform< TScalarType, NDimensions >::New ( ) [static]

New macro for creation of through a Smart Pointer

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

 void itk::LightObject::Print ( std::ostream & os, Indent indent = 0 ) const [inherited]

Cause the object to print itself out.

Referenced by itk::WeakPointer< itk::ProcessObject >::Print().

 virtual void itk::LightObject::PrintHeader ( std::ostream & os, Indent indent ) const [protected, virtual, inherited]

 bool itk::Object::PrintObservers ( std::ostream & os, Indent indent ) const [protected, inherited]

template<class TScalarType = double, unsigned int NDimensions = 3>
 void itk::AffineTransform< TScalarType, NDimensions >::PrintSelf ( std::ostream & s, Indent indent ) const [protected, virtual]

Print contents of an AffineTransform

Reimplemented from itk::MatrixOffsetTransformBase< TScalarType, NDimensions, NDimensions >.

 virtual void itk::LightObject::PrintTrailer ( std::ostream & os, Indent indent ) const [protected, virtual, inherited]

 virtual void itk::Object::Register ( ) const [virtual, inherited]

Increase the reference count (mark as used by another object).

Reimplemented from itk::LightObject.

 void itk::Object::RemoveAllObservers ( ) [inherited]

Remove all observers .

 void itk::Object::RemoveObserver ( unsigned long tag ) [inherited]

Remove the observer with this tag value.

template<class TScalarType = double, unsigned int NDimensions = 3>
 void itk::AffineTransform< TScalarType, NDimensions >::Rotate ( int axis1, int axis2, TScalarType angle, bool pre = 0 )

Compose affine transformation with an elementary rotation

This method composes self with a rotation that affects two specified axes, replacing the current value of self. The rotation angle is in radians. The axis of rotation goes through the origin. The transformation is given by

y[axis1] = vcl_cos(angle)*x[axis1] + vcl_sin(angle)*x[axis2] y[axis2] = -sin(angle)*x[axis1] + vcl_cos(angle)*x[axis2].

All coordinates other than axis1 and axis2 are unchanged; a rotation of pi/2 radians will carry +axis1 into +axis2. The rotation is precomposed with self if pre is true, and postcomposed otherwise. Note that the rotation is applied centered at the origin.

template<class TScalarType = double, unsigned int NDimensions = 3>
 void itk::AffineTransform< TScalarType, NDimensions >::Rotate2D ( TScalarType angle, bool pre = 0 )

Compose 2D affine transformation with a rotation

This method composes self, which must be a 2D affine transformation, with a clockwise rotation through a given angle in radians. The center of rotation is the origin. The rotation is precomposed with self if pre is true, and postcomposed otherwise. Note that the rotation is applied centered at the origin.

Warning:
Only to be use in two dimensions
Todo:
Find a way to generate a compile-time error is this is used with NDimensions != 2.

template<class TScalarType = double, unsigned int NDimensions = 3>
 void itk::AffineTransform< TScalarType, NDimensions >::Rotate3D ( const OutputVectorType & axis, TScalarType angle, bool pre = 0 )

Compose 3D affine transformation with a rotation

This method composes self, which must be a 3D affine transformation, with a clockwise rotation around a specified axis. The rotation angle is in radians; the axis of rotation goes through the origin. The rotation is precomposed with self if pre is true, and postcomposed otherwise. Note that the rotation is applied centered at the origin.

Warning:
Only to be used in dimension 3
Todo:
Find a way to generate a compile-time error is this is used with NDimensions != 3.

template<class TScalarType = double, unsigned int NDimensions = 3>
 void itk::AffineTransform< TScalarType, NDimensions >::Scale ( const TScalarType & factor, bool pre = 0 )

template<class TScalarType = double, unsigned int NDimensions = 3>
 void itk::AffineTransform< TScalarType, NDimensions >::Scale ( const OutputVectorType & factor, bool pre = 0 )

Compose affine transformation with a scaling

This method modifies self to magnify the source by a given factor along each axis. If all factors are the same, or only a single factor is given, then the scaling is isotropic; otherwise it is anisotropic. If an odd number of factors are negative, then the parity of the image changes. If any of the factors is zero, then the transformation becomes a projection and is not invertible. The scaling is precomposed with self if pre is true, and postcomposed otherwise. Note that the scaling is applied centered at the origin.

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetCenter ( const InputPointType & center ) [inline, inherited]

Set center of rotation of an MatrixOffsetTransformBase

This method sets the center of rotation of an MatrixOffsetTransformBase to a fixed point - for most transforms derived from this class, this point is not a "parameter" of the transform - the exception is that "centered" transforms have center as a parameter during optimization.

This method updates offset wrt to current translation and matrix. That is, changing the center changes the transform!

WARNING: When using the Center, we strongly recommend only changing the matrix and translation to define a transform. Changing a transform's center, changes the mapping between spaces - specifically, translation is not changed with respect to that new center, and so the offset is updated to * maintain the consistency with translation. If a center is not used, or is set before the matrix and the offset, then it is safe to change the offset directly. As a rule of thumb, if you wish to set the center explicitly, set before Offset computations are done.

To define an affine transform, you must set the matrix, center, and translation OR the matrix and offset

Definition at line 239 of file itkMatrixOffsetTransformBase.h.

 void itk::Object::SetDebug ( bool debugFlag ) const [inherited]

Set the value of the debug flag. A non-zero value turns debugging on.

 virtual void itk::TransformBase::SetFixedParameters ( const ParametersType & ) [pure virtual, inherited]

Set the fixed parameters.

 virtual void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetFixedParameters ( const ParametersType & ) [virtual, inherited]

Set the fixed parameters and update internal transformation.

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

 static void itk::Object::SetGlobalWarningDisplay ( bool flag ) [static, inherited]

This is a global flag that controls whether any debug, warning or error messages are displayed.

Referenced by itk::Object::GlobalWarningDisplayOff(), and itk::Object::GlobalWarningDisplayOn().

 virtual void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetIdentity ( void ) [virtual, inherited]

Set the transformation to an Identity

This sets the matrix to identity and the Offset to null.

Reimplemented in itk::ScalableAffineTransform< TScalarType, NDimensions >.

 virtual void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetMatrix ( const MatrixType & matrix ) [inline, virtual, inherited]

Set matrix of an MatrixOffsetTransformBase

This method sets the matrix of an MatrixOffsetTransformBase to a value specified by the user.

This updates the Offset wrt to current translation and center. See the warning regarding offset-versus-translation in the documentation for SetCenter.

To define an affine transform, you must set the matrix, center, and translation OR the matrix and offset

Definition at line 181 of file itkMatrixOffsetTransformBase.h.

Returns:

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetOffset ( const OutputVectorType & offset ) [inline, inherited]

Set offset (origin) of an MatrixOffset TransformBase.

This method sets the offset of an MatrixOffsetTransformBase to a value specified by the user. This updates Translation wrt current center. See the warning regarding offset-versus-translation in the documentation for SetCenter. To define an affine transform, you must set the matrix, center, and translation OR the matrix and offset

Definition at line 204 of file itkMatrixOffsetTransformBase.h.

 virtual void itk::TransformBase::SetParameters ( const ParametersType & ) [pure virtual, inherited]

Set the transformation parameters and update internal transformation.

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetParameters ( const ParametersType & parameters ) [virtual, inherited]

Set the transformation from a container of parameters. The first (NOutputDimension x NInputDimension) parameters define the matrix and the last NOutputDimension parameters the translation. Offset is updated based on current center.

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

Reimplemented in itk::CenteredAffineTransform< TScalarType, NDimensions >.

 virtual void itk::TransformBase::SetParametersByValue ( const ParametersType & p ) [pure virtual, inherited]

Set the transformation by copying 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.

SetParameters

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
 virtual void itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::SetParametersByValue ( const ParametersType & p ) [inline, virtual, inherited]

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.

SetParameters

Definition at line 151 of file itkTransform.h.

 virtual void itk::Object::SetReferenceCount ( int ) [virtual, inherited]

Sets the reference count (use with care)

Reimplemented from itk::LightObject.

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetTranslation ( const OutputVectorType & translation ) [inline, inherited]

Set translation of an MatrixOffsetTransformBase

This method sets the translation of an MatrixOffsetTransformBase. This updates Offset to reflect current translation. To define an affine transform, you must set the matrix, center, and translation OR the matrix and offset

Definition at line 259 of file itkMatrixOffsetTransformBase.h.

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetVarCenter ( const InputPointType & center ) [inline, protected, inherited]

Definition at line 402 of file itkMatrixOffsetTransformBase.h.

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetVarInverseMatrix ( const InverseMatrixType & matrix ) const [inline, protected, inherited]

Definition at line 382 of file itkMatrixOffsetTransformBase.h.

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetVarMatrix ( const MatrixType & matrix ) [inline, protected, inherited]

Definition at line 391 of file itkMatrixOffsetTransformBase.h.

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetVarOffset ( const OutputVectorType & offset ) [inline, protected, inherited]

Definition at line 399 of file itkMatrixOffsetTransformBase.h.

 void itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::SetVarTranslation ( const OutputVectorType & translation ) [inline, protected, inherited]

Definition at line 395 of file itkMatrixOffsetTransformBase.h.

template<class TScalarType = double, unsigned int NDimensions = 3>
 void itk::AffineTransform< TScalarType, NDimensions >::Shear ( int axis1, int axis2, TScalarType coef, bool pre = 0 )

Compose affine transformation with a shear

This method composes self with a shear transformation, replacing the original contents of self. The shear is precomposed with self if pre is true, and postcomposed otherwise. The transformation is given by

y[axis1] = x[axis1] + coef*x[axis2] y[axis2] = x[axis2].

Note that the shear is applied centered at the origin.

 OutputCovariantVectorType itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::TransformCovariantVector ( const InputCovariantVectorType & vector ) const [virtual, inherited]

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

 OutputPointType itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::TransformPoint ( const InputPointType & point ) const [virtual, inherited]

Transform by an affine transformation

This method applies the affine transform given by self to a given point or vector, returning the transformed point or vector. The TransformPoint method transforms its argument as an affine point, whereas the TransformVector method transforms its argument as a vector.

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
 virtual OutputVnlVectorType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::TransformVector ( const InputVnlVectorType & ) const [inline, virtual, inherited]

Method to transform a vnl_vector.

Definition at line 126 of file itkTransform.h.

 OutputVnlVectorType itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::TransformVector ( const InputVnlVectorType & vector ) const [inherited]

 OutputVectorType itk::MatrixOffsetTransformBase< TScalarType , NInputDimensions, NOutputDimensions >::TransformVector ( const InputVectorType & vector ) const [virtual, inherited]

Reimplemented from itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >.

template<class TScalarType = double, unsigned int NDimensions = 3>
 void itk::AffineTransform< TScalarType, NDimensions >::Translate ( const OutputVectorType & offset, bool pre = 0 )

Compose affine transformation with a translation

This method modifies self to include a translation of the origin. The translation is precomposed with self if pre is true, and postcomposed otherwise. This updates Translation based on current center.

 virtual void itk::Object::UnRegister ( ) const [virtual, inherited]

Decrease the reference count (release by another object).

Reimplemented from itk::LightObject.

## Member Data Documentation

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
 ParametersType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::m_FixedParameters [mutable, protected, inherited]

Definition at line 253 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
 JacobianType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::m_Jacobian [mutable, protected, inherited]

Definition at line 254 of file itkTransform.h.

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
 ParametersType itk::Transform< TScalarType, NInputDimensions, NOutputDimensions >::m_Parameters [mutable, protected, inherited]

Definition at line 252 of file itkTransform.h.

 InternalReferenceCountType itk::LightObject::m_ReferenceCount [mutable, protected, inherited]

Number of uses of this object by other objects.

Definition at line 144 of file itkLightObject.h.

 SimpleFastMutexLock itk::LightObject::m_ReferenceCountLock [mutable, protected, inherited]

Mutex lock to protect modification to the reference count

Definition at line 147 of file itkLightObject.h.

The documentation for this class was generated from the following file:
Generated at Thu Nov 6 01:22:41 2008 for ITK by 1.5.1 written by Dimitri van Heesch, © 1997-2000