Loading...
Searching...
No Matches
itk::KernelTransform2< TScalarType, NDimensions > Class Template Reference
Components » Transforms

`#include <itkKernelTransform2.h>`

## Detailed Description

template<class TScalarType, unsigned int NDimensions>
class itk::KernelTransform2< TScalarType, NDimensions >

Intended to be a base class for elastic body spline and thin plate spline. This is implemented in as straightforward a manner as possible from the IEEE TMI paper by Davis, Khotanzad, Flamig, and Harms, Vol. 16, No. 3 June 1997. Notation closely follows their paper, so if you have it in front of you, this code will make a lot more sense.

KernelTransform2: Provides support for defining source and target landmarks Defines a number of data types used in the computations Defines the mathematical framework used to compute all splines, so that subclasses need only provide a kernel specific to that spline

This formulation allows the stiffness of the spline to be adjusted, allowing the spline to vary from interpolating the landmarks to approximating the landmarks. This part of the formulation is based on the short paper by R. Sprengel, K. Rohr, H. Stiehl. "Thin-Plate Spline Approximation for Image Registration". In 18th International Conference of the IEEE Engineering in Medicine and Biology Society. 1996.

This class was modified to support its use in the ITK registration framework by Rupert Brooks, McGill Centre for Intelligent Machines, Montreal, Canada March 2007. See the Insight Journal Paper by Brooks, R., Arbel, T. "Improvements to the itk::KernelTransform and its subclasses."

Modified to include it in elastix:

- style
- make it inherit from AdvancedTransform
- make it threadsafe, like was done in the itk as well.
- Support for matrix inversion by QR decomposition, instead of SVD. QR is much faster. Used in SetParameters() and SetFixedParameters().
- Much faster Jacobian computation for some of the derived kernel transforms.

Definition at line 97 of file itkKernelTransform2.h.

Inheritance diagram for itk::KernelTransform2< TScalarType, NDimensions >:
[legend]

## Public Types

using | AMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>
using | BMatrixType = vnl_vector_fixed<TScalarType, NDimensions>
using | ColumnMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, 1>
using | ConstPointer = SmartPointer<const Self>
using | DMatrixType = vnl_matrix<TScalarType>
using | GMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>
using | IMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>
using | InternalMatrixType
using | JacobianOfSpatialHessianType
using | JacobianOfSpatialJacobianType
using | KMatrixType = vnl_matrix<TScalarType>
using | LMatrixType = vnl_matrix<TScalarType>
using | NonZeroJacobianIndicesType
using | PMatrixType = vnl_matrix<TScalarType>
using | Pointer = SmartPointer<Self>
using | PointsConstIterator = typename PointSetType::PointsContainerConstIterator
using | PointsContainer = typename PointSetType::PointsContainer
using | PointSetPointer = typename PointSetType::Pointer
using | PointSetTraitsType = DefaultStaticMeshTraits<TScalarType, NDimensions, NDimensions, TScalarType, TScalarType>
using | PointSetType = PointSet<InputPointType, NDimensions, PointSetTraitsType>
using | PointsIterator = typename PointSetType::PointsContainerIterator
using | RowMatrixType = vnl_matrix_fixed<TScalarType, 1, NDimensions>
using | Self = KernelTransform2
using | SpatialHessianType
using | SpatialJacobianType
using | Superclass = AdvancedTransform<TScalarType, NDimensions, NDimensions>
using | VectorSetPointer = typename VectorSetType::Pointer
using | VectorSetType = VectorContainer<unsigned long, InputVectorType>
using | WMatrixType = vnl_matrix<TScalarType>
using | YMatrixType = vnl_matrix<TScalarType>
Public Types inherited from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >
using | ConstPointer
using | InternalMatrixType
using | InverseTransformBaseType
using | JacobianOfSpatialHessianType
using | JacobianOfSpatialJacobianType
using | MovingImageGradientType
using | MovingImageGradientValueType
using | NonZeroJacobianIndicesType
using | Pointer
using | Self
using | SpatialHessianType
using | SpatialJacobianType
using | Superclass
using | TransformType
using | TransformTypeConstPointer
using | TransformTypePointer

## Public Member Functions

void | ComputeLInverse ()
void | ComputeWMatrix ()
virtual const char * | GetClassName () const
const ParametersType & | GetFixedParameters () const override
void | GetJacobian (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const override
void | GetJacobianOfSpatialHessian (const InputPointType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const override
void | GetJacobianOfSpatialHessian (const InputPointType &, SpatialHessianType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const override
void | GetJacobianOfSpatialJacobian (const InputPointType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const override
void | GetJacobianOfSpatialJacobian (const InputPointType &, SpatialJacobianType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const override
virtual const std::string & | GetMatrixInversionMethod ()
NumberOfParametersType | GetNumberOfParameters () const override
const ParametersType & | GetParameters () const override
virtual const TScalarType | GetPoissonRatio () const
void | GetSpatialHessian (const InputPointType &, SpatialHessianType &) const override
void | GetSpatialJacobian (const InputPointType &, SpatialJacobianType &) const override
virtual double | GetStiffness () const
| ITK_DISALLOW_COPY_AND_MOVE (KernelTransform2)
| itkGetModifiableObjectMacro (Displacements, VectorSetType)
| itkGetModifiableObjectMacro (SourceLandmarks, PointSetType)
| itkGetModifiableObjectMacro (TargetLandmarks, PointSetType)
| itkStaticConstMacro (SpaceDimension, unsigned int, NDimensions)
virtual void | SetAlpha (TScalarType)
void | SetFixedParameters (const ParametersType &) override
virtual void | SetIdentity ()
virtual void | SetMatrixInversionMethod (std::string _arg)
void | SetParameters (const ParametersType &) override
virtual void | SetPoissonRatio (TScalarType _arg)
virtual void | SetSourceLandmarks (PointSetType *)
virtual void | SetStiffness (double stiffness)
virtual void | SetTargetLandmarks (PointSetType *)
OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &) const override
OutputPointType | TransformPoint (const InputPointType &thisPoint) const override
OutputVectorType | TransformVector (const InputVectorType &) const override
OutputVnlVectorType | TransformVector (const InputVnlVectorType &) const override
virtual void | UpdateParameters ()
Public Member Functions inherited from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >
void | ComputeJacobianWithRespectToParameters (const InputPointType &, JacobianType &) const override
virtual void | EvaluateJacobianWithImageGradientProduct (const InputPointType &inputPoint, const MovingImageGradientType &movingImageGradient, DerivativeType &imageJacobian, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
virtual bool | GetHasNonZeroJacobianOfSpatialHessian () const
virtual bool | GetHasNonZeroSpatialHessian () const
virtual NumberOfParametersType | GetNumberOfNonZeroJacobianIndices () const
| ITK_DISALLOW_COPY_AND_MOVE (AdvancedTransform)
| itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions)
| itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions)

## Static Public Member Functions

static Pointer | New ()

## Data Fields

PointSetPointer | m_SourceLandmarks {}
PointSetPointer | m_TargetLandmarks {}

## Protected Types

using | QRDecompositionType = vnl_qr<ScalarType>
using | SVDDecompositionType = vnl_svd<ScalarType>

## Protected Member Functions

void | ComputeD ()
virtual void | ComputeDeformationContribution (const InputPointType &inputPoint, OutputPointType &result) const
virtual void | ComputeG (const InputVectorType &landmarkVector, GMatrixType &GMatrix) const
void | ComputeK ()
void | ComputeL ()
void | ComputeP ()
virtual void | ComputeReflexiveG (PointsIterator, GMatrixType &GMatrix) const
void | ComputeY ()
| KernelTransform2 ()
void | PrintSelf (std::ostream &os, Indent indent) const override
void | ReorganizeW ()
| ~KernelTransform2 () override
Protected Member Functions inherited from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >
| AdvancedTransform ()=default
| ~AdvancedTransform () override=default

## Protected Attributes

AMatrixType | m_AMatrix {}
BMatrixType | m_BVector {}
VectorSetPointer | m_Displacements {}
DMatrixType | m_DMatrix {}
bool | m_FastComputationPossible {}
IMatrixType | m_I {}
KMatrixType | m_KMatrix {}
bool | m_LInverseComputed {}
LMatrixType | m_LMatrix {}
bool | m_LMatrixComputed {}
bool | m_LMatrixDecompositionComputed {}
QRDecompositionType * | m_LMatrixDecompositionQR {}
SVDDecompositionType * | m_LMatrixDecompositionSVD {}
LMatrixType | m_LMatrixInverse {}
NonZeroJacobianIndicesType | m_NonZeroJacobianIndices {}
PMatrixType | m_PMatrix {}
double | m_Stiffness {}
WMatrixType | m_WMatrix {}
bool | m_WMatrixComputed {}
YMatrixType | m_YMatrix {}
Protected Attributes inherited from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >
bool | m_HasNonZeroJacobianOfSpatialHessian
bool | m_HasNonZeroSpatialHessian

## Private Attributes

std::string | m_MatrixInversionMethod {}
TScalarType | m_PoissonRatio {}

## Member Typedef Documentation

## AMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::AMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>

'A' matrix typedef. Rotational part of the Affine component

Definition at line 386 of file itkKernelTransform2.h.

## BMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::BMatrixType = vnl_vector_fixed<TScalarType, NDimensions>

'B' matrix typedef. Translational part of the Affine component

Definition at line 389 of file itkKernelTransform2.h.

## ColumnMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::ColumnMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, 1>

Column matrix typedef.

Definition at line 395 of file itkKernelTransform2.h.

## ConstPointer

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::ConstPointer = SmartPointer<const Self>

Definition at line 106 of file itkKernelTransform2.h.

## DMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::DMatrixType = vnl_matrix<TScalarType>

'D' matrix typedef. Deformation component

Definition at line 383 of file itkKernelTransform2.h.

## GMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::GMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>

'G' matrix typedef.

Definition at line 365 of file itkKernelTransform2.h.

## IMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::IMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>

'I' (identity) matrix typedef.

Definition at line 154 of file itkKernelTransform2.h.

## InternalMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::InternalMatrixType

Definition at line 140 of file itkAdvancedTransform.h.

## JacobianOfSpatialHessianType

template<class TScalarType, unsigned int NDimensions>

using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::JacobianOfSpatialHessianType

Definition at line 139 of file itkAdvancedTransform.h.

## JacobianOfSpatialJacobianType

template<class TScalarType, unsigned int NDimensions>

using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::JacobianOfSpatialJacobianType

Definition at line 135 of file itkAdvancedTransform.h.

## KMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::KMatrixType = vnl_matrix<TScalarType>

'K' matrix typedef.

Definition at line 371 of file itkKernelTransform2.h.

## LMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::LMatrixType = vnl_matrix<TScalarType>

'L' matrix typedef.

Definition at line 368 of file itkKernelTransform2.h.

## NonZeroJacobianIndicesType

template<class TScalarType, unsigned int NDimensions>

using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::NonZeroJacobianIndicesType

Types for the (Spatial)Jacobian/Hessian. Using an itk::FixedArray instead of an std::vector gives a performance gain for the SpatialHessianType.

Definition at line 133 of file itkAdvancedTransform.h.

## PMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::PMatrixType = vnl_matrix<TScalarType>

'P' matrix typedef.

Definition at line 374 of file itkKernelTransform2.h.

## Pointer

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::Pointer = SmartPointer<Self>

Definition at line 105 of file itkKernelTransform2.h.

## PointsConstIterator

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::PointsConstIterator = typename PointSetType::PointsContainerConstIterator

Definition at line 147 of file itkKernelTransform2.h.

## PointsContainer

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::PointsContainer = typename PointSetType::PointsContainer

Definition at line 145 of file itkKernelTransform2.h.

## PointSetPointer

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::PointSetPointer = typename PointSetType::Pointer

Definition at line 144 of file itkKernelTransform2.h.

## PointSetTraitsType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::PointSetTraitsType = DefaultStaticMeshTraits<TScalarType, NDimensions, NDimensions, TScalarType, TScalarType>

PointList typedef. This type is used for maintaining lists of points, specifically, the source and target landmark lists.

Definition at line 142 of file itkKernelTransform2.h.

## PointSetType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::PointSetType = PointSet<InputPointType, NDimensions, PointSetTraitsType>

Definition at line 143 of file itkKernelTransform2.h.

## PointsIterator

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::PointsIterator = typename PointSetType::PointsContainerIterator

Definition at line 146 of file itkKernelTransform2.h.

## QRDecompositionType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::QRDecompositionType = vnl_qr<ScalarType>

protected

Definition at line 519 of file itkKernelTransform2.h.

## RowMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::RowMatrixType = vnl_matrix_fixed<TScalarType, 1, NDimensions>

Row matrix typedef.

Definition at line 392 of file itkKernelTransform2.h.

## Self

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::Self = KernelTransform2

Standard class typedefs.

Definition at line 103 of file itkKernelTransform2.h.

## SpatialHessianType

template<class TScalarType, unsigned int NDimensions>

using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::SpatialHessianType

Definition at line 137 of file itkAdvancedTransform.h.

## SpatialJacobianType

template<class TScalarType, unsigned int NDimensions>

using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::SpatialJacobianType

Definition at line 134 of file itkAdvancedTransform.h.

## Superclass

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::Superclass = AdvancedTransform<TScalarType, NDimensions, NDimensions>

Definition at line 104 of file itkKernelTransform2.h.

## SVDDecompositionType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::SVDDecompositionType = vnl_svd<ScalarType>

protected

Decompositions, needed for the L matrix. These decompositions are cached for performance reasons during registration. During registration, in every iteration SetParameters() is called, which in turn calls ComputeWMatrix(). The L matrix is not changed however, and therefore it is not needed to redo the decomposition.

Definition at line 518 of file itkKernelTransform2.h.

## VectorSetPointer

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::VectorSetPointer = typename VectorSetType::Pointer

Definition at line 151 of file itkKernelTransform2.h.

## VectorSetType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::VectorSetType = VectorContainer<unsigned long, InputVectorType>

VectorSet typedef.

Definition at line 150 of file itkKernelTransform2.h.

## WMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::WMatrixType = vnl_matrix<TScalarType>

'W' matrix typedef.

Definition at line 380 of file itkKernelTransform2.h.

## YMatrixType

template<class TScalarType, unsigned int NDimensions>

using itk::KernelTransform2< TScalarType, NDimensions >::YMatrixType = vnl_matrix<TScalarType>

'Y' matrix typedef.

Definition at line 377 of file itkKernelTransform2.h.

## Constructor & Destructor Documentation

## KernelTransform2()

template<class TScalarType, unsigned int NDimensions>

itk::KernelTransform2< TScalarType, NDimensions >::KernelTransform2 | ( |  | ) |

protected

## ~KernelTransform2()

template<class TScalarType, unsigned int NDimensions>

itk::KernelTransform2< TScalarType, NDimensions >::~KernelTransform2 | ( |  | ) |

override protected

## Member Function Documentation

## ComputeD()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::ComputeD | ( |  | ) |

protected

Compute displacements .

## ComputeDeformationContribution()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::ComputeDeformationContribution | ( | const InputPointType & | inputPoint,
|  | OutputPointType & | result ) const

protected virtual

Compute the contribution of the landmarks weighted by the kernel function to the global deformation of the space.

Reimplemented in itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateR2LogRSplineKernelTransform2< CoordRepType, Self::SpaceDimension >, itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateSplineKernelTransform2< CoordRepType, Self::SpaceDimension >, itk::VolumeSplineKernelTransform2< TScalarType, NDimensions >, and itk::VolumeSplineKernelTransform2< CoordRepType, Self::SpaceDimension >.

## ComputeG()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::ComputeG | ( | const InputVectorType & | landmarkVector,
|  | GMatrixType & | GMatrix ) const

protected virtual

Compute G(x) This is essentially the kernel of the transform. By overriding this method, we can obtain (among others): Elastic body spline Thin plate spline Volume spline.

Reimplemented in itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >, and itk::VolumeSplineKernelTransform2< TScalarType, NDimensions >.

## ComputeK()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::ComputeK | ( |  | ) |

protected

Compute K matrix.

## ComputeL()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::ComputeL | ( |  | ) |

protected

Compute L matrix.

## ComputeLInverse()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::ComputeLInverse | ( |  | ) |

Compute L matrix inverse.

## ComputeP()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::ComputeP | ( |  | ) |

protected

Compute P matrix.

## ComputeReflexiveG()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::ComputeReflexiveG | ( | PointsIterator | ,
|  | GMatrixType & | GMatrix ) const

protected virtual

Compute a G(x) for a point to itself (i.e. for the block diagonal elements of the matrix K. Parameter indicates for which landmark the reflexive G is to be computed. The default implementation for the reflexive contribution is a diagonal matrix where the diagonal elements are the stiffness of the spline.

## ComputeWMatrix()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::ComputeWMatrix | ( |  | ) |

Compute W matrix.

## ComputeY()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::ComputeY | ( |  | ) |

protected

Compute Y matrix.

## GetClassName()

template<class TScalarType, unsigned int NDimensions>

virtual const char * itk::KernelTransform2< TScalarType, NDimensions >::GetClassName | ( |  | ) | const

virtual

Run-time type information (and related methods).

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

Reimplemented in itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, itk::ElasticBodyReciprocalSplineKernelTransform2< CoordRepType, Self::SpaceDimension >, itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >, itk::ElasticBodySplineKernelTransform2< CoordRepType, Self::SpaceDimension >, itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateR2LogRSplineKernelTransform2< CoordRepType, Self::SpaceDimension >, itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateSplineKernelTransform2< CoordRepType, Self::SpaceDimension >, itk::VolumeSplineKernelTransform2< TScalarType, NDimensions >, and itk::VolumeSplineKernelTransform2< CoordRepType, Self::SpaceDimension >.

## GetFixedParameters()

template<class TScalarType, unsigned int NDimensions>

const ParametersType & itk::KernelTransform2< TScalarType, NDimensions >::GetFixedParameters | ( |  | ) | const

override

Get Transform Fixed Parameters - Gets the target landmarks.

## GetJacobian()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::GetJacobian | ( | const InputPointType & | ,
|  | JacobianType & | ,
|  | NonZeroJacobianIndicesType & | ) const

override virtual

Compute the Jacobian of the transformation.

Implements itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.

## GetJacobianOfSpatialHessian() [1/2]

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::GetJacobianOfSpatialHessian | ( | const InputPointType & | ,
|  | JacobianOfSpatialHessianType & | ,
|  | NonZeroJacobianIndicesType & | ) const

inline override virtual

Implements itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.

Definition at line 339 of file itkKernelTransform2.h.

## GetJacobianOfSpatialHessian() [2/2]

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::GetJacobianOfSpatialHessian | ( | const InputPointType & | ,
|  | SpatialHessianType & | ,
|  | JacobianOfSpatialHessianType & | ,
|  | NonZeroJacobianIndicesType & | ) const

inline override virtual

Implements itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.

Definition at line 348 of file itkKernelTransform2.h.

## GetJacobianOfSpatialJacobian() [1/2]

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::GetJacobianOfSpatialJacobian | ( | const InputPointType & | ,
|  | JacobianOfSpatialJacobianType & | ,
|  | NonZeroJacobianIndicesType & | ) const

inline override virtual

Implements itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.

Definition at line 320 of file itkKernelTransform2.h.

## GetJacobianOfSpatialJacobian() [2/2]

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::GetJacobianOfSpatialJacobian | ( | const InputPointType & | ,
|  | SpatialJacobianType & | ,
|  | JacobianOfSpatialJacobianType & | ,
|  | NonZeroJacobianIndicesType & | ) const

inline override virtual

Implements itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.

Definition at line 329 of file itkKernelTransform2.h.

## GetMatrixInversionMethod()

template<class TScalarType, unsigned int NDimensions>

virtual const std::string & itk::KernelTransform2< TScalarType, NDimensions >::GetMatrixInversionMethod | ( |  | ) |

virtual

## GetNumberOfParameters()

template<class TScalarType, unsigned int NDimensions>

NumberOfParametersType itk::KernelTransform2< TScalarType, NDimensions >::GetNumberOfParameters | ( |  | ) | const

inline override

Return the number of parameters that completely define the Transform.

Definition at line 158 of file itkKernelTransform2.h.

## GetParameters()

template<class TScalarType, unsigned int NDimensions>

const ParametersType & itk::KernelTransform2< TScalarType, NDimensions >::GetParameters | ( |  | ) | const

override

Get the Transformation Parameters - Gets the source landmarks.

## GetPoissonRatio()

template<class TScalarType, unsigned int NDimensions>

virtual const TScalarType itk::KernelTransform2< TScalarType, NDimensions >::GetPoissonRatio | ( |  | ) | const

inline virtual

Reimplemented in itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, itk::ElasticBodyReciprocalSplineKernelTransform2< CoordRepType, Self::SpaceDimension >, itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >, and itk::ElasticBodySplineKernelTransform2< CoordRepType, Self::SpaceDimension >.

Definition at line 294 of file itkKernelTransform2.h.

## GetSpatialHessian()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::GetSpatialHessian | ( | const InputPointType & | ,
|  | SpatialHessianType & | ) const

inline override virtual

Implements itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.

Definition at line 313 of file itkKernelTransform2.h.

## GetSpatialJacobian()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::GetSpatialJacobian | ( | const InputPointType & | ,
|  | SpatialJacobianType & | ) const

inline override virtual

Must be provided.

Implements itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.

Definition at line 306 of file itkKernelTransform2.h.

## GetStiffness()

template<class TScalarType, unsigned int NDimensions>

virtual double itk::KernelTransform2< TScalarType, NDimensions >::GetStiffness | ( |  | ) | const

virtual

## ITK_DISALLOW_COPY_AND_MOVE()

template<class TScalarType, unsigned int NDimensions>

itk::KernelTransform2< TScalarType, NDimensions >::ITK_DISALLOW_COPY_AND_MOVE | ( | KernelTransform2< TScalarType, NDimensions > |  | ) |

## itkGetModifiableObjectMacro() [1/3]

template<class TScalarType, unsigned int NDimensions>

itk::KernelTransform2< TScalarType, NDimensions >::itkGetModifiableObjectMacro | ( | Displacements | ,
|  | VectorSetType | )

Get the displacements list, which we will denote , where .

## itkGetModifiableObjectMacro() [2/3]

template<class TScalarType, unsigned int NDimensions>

itk::KernelTransform2< TScalarType, NDimensions >::itkGetModifiableObjectMacro | ( | SourceLandmarks | ,
|  | PointSetType | )

Get the source landmarks list, which we will denote .

## itkGetModifiableObjectMacro() [3/3]

template<class TScalarType, unsigned int NDimensions>

itk::KernelTransform2< TScalarType, NDimensions >::itkGetModifiableObjectMacro | ( | TargetLandmarks | ,
|  | PointSetType | )

Get the target landmarks list, which we will denote .

## itkStaticConstMacro()

template<class TScalarType, unsigned int NDimensions>

itk::KernelTransform2< TScalarType, NDimensions >::itkStaticConstMacro | ( | SpaceDimension | ,
|  | unsigned int | ,
|  | NDimensions | )

Dimension of the domain space.

## New()

template<class TScalarType, unsigned int NDimensions>

Pointer itk::KernelTransform2< TScalarType, NDimensions >::New | ( |  | ) |

static

New macro for creation of through a Smart Pointer.

## PrintSelf()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::PrintSelf | ( | std::ostream & | os,
|  | Indent | indent ) const

override protected

## ReorganizeW()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::ReorganizeW | ( |  | ) |

protected

Reorganize the components of W into D (deformable), A (rotation part of affine) and B (translational part of affine ) components.

Warning
  This method release the memory of the W Matrix.

## SetAlpha()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::SetAlpha | ( | TScalarType |  | ) |

inline virtual

This method makes only sense for the ElasticBody splines. Declare here, so that you can always call it if you don't know the type of kernel beforehand. It will be overridden in the ElasticBodySplineKernelTransform and in the ElasticBodyReciprocalSplineKernelTransform.

Definition at line 283 of file itkKernelTransform2.h.

## SetFixedParameters()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::SetFixedParameters | ( | const ParametersType & |  | ) |

override

Set Transform Fixed Parameters: To support the transform file writer this function was added to set the target landmarks similar to the SetParameters function setting the source landmarks

## SetIdentity()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::SetIdentity | ( |  | ) |

virtual

Set the Transformation Parameters to be an identity transform.

## SetMatrixInversionMethod()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::SetMatrixInversionMethod | ( | std::string | _arg | ) |

virtual

Matrix inversion by SVD or QR decomposition.

## SetParameters()

template<class TScalarType, unsigned int NDimensions>

void itk::KernelTransform2< TScalarType, NDimensions >::SetParameters | ( | const ParametersType & |  | ) |

override

Set the Transformation Parameters and update the internal transformation. The parameters represent the source landmarks. Each landmark point is represented by NDimensions doubles. All the landmarks are concatenated to form one flat Array<double>.

## SetPoissonRatio()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::SetPoissonRatio | ( | TScalarType | _arg | ) |

virtual

This method makes only sense for the ElasticBody splines. Declare here, so that you can always call it if you don't know the type of kernel beforehand. It will be overridden in the ElasticBodySplineKernelTransform and in the ElasticBodyReciprocalSplineKernelTransform.

## SetSourceLandmarks()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::SetSourceLandmarks | ( | PointSetType * |  | ) |

virtual

Set the source landmarks list.

## SetStiffness()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::SetStiffness | ( | double | stiffness | ) |

inline virtual

Stiffness of the spline. A stiffness of zero results in the standard interpolating spline. A non-zero stiffness allows the spline to approximate rather than interpolate the landmarks. Stiffness values are usually rather small, typically in the range of 0.001 to 0.1. The approximating spline formulation is based on the short paper by R. Sprengel, K. Rohr, H. Stiehl. "Thin-Plate Spline Approximation for Image Registration". In 18th International Conference of the IEEE Engineering in Medicine and Biology Society. 1996.

Definition at line 265 of file itkKernelTransform2.h.

## SetTargetLandmarks()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::SetTargetLandmarks | ( | PointSetType * |  | ) |

virtual

Set the target landmarks list.

## TransformCovariantVector()

template<class TScalarType, unsigned int NDimensions>

OutputCovariantVectorType itk::KernelTransform2< TScalarType, NDimensions >::TransformCovariantVector | ( | const InputCovariantVectorType & |  | ) | const

inline override

Definition at line 211 of file itkKernelTransform2.h.

## TransformPoint()

template<class TScalarType, unsigned int NDimensions>

OutputPointType itk::KernelTransform2< TScalarType, NDimensions >::TransformPoint | ( | const InputPointType & | thisPoint | ) | const

override

Compute the position of point in the new space

## TransformVector() [1/2]

template<class TScalarType, unsigned int NDimensions>

OutputVectorType itk::KernelTransform2< TScalarType, NDimensions >::TransformVector | ( | const InputVectorType & |  | ) | const

inline override

These vector transforms are not implemented for this transform.

Definition at line 197 of file itkKernelTransform2.h.

## TransformVector() [2/2]

template<class TScalarType, unsigned int NDimensions>

OutputVnlVectorType itk::KernelTransform2< TScalarType, NDimensions >::TransformVector | ( | const InputVnlVectorType & |  | ) | const

inline override

Definition at line 204 of file itkKernelTransform2.h.

## UpdateParameters()

template<class TScalarType, unsigned int NDimensions>

virtual void itk::KernelTransform2< TScalarType, NDimensions >::UpdateParameters | ( |  | ) |

virtual

Update the Parameters array from the landmarks coordinates.

## Field Documentation

## m_AMatrix

template<class TScalarType, unsigned int NDimensions>

AMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_AMatrix {}

protected

Rotational/Shearing part of the Affine component of the Transformation.

Definition at line 491 of file itkKernelTransform2.h.

## m_BVector

template<class TScalarType, unsigned int NDimensions>

BMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_BVector {}

protected

Translational part of the Affine component of the Transformation.

Definition at line 494 of file itkKernelTransform2.h.

## m_Displacements

template<class TScalarType, unsigned int NDimensions>

VectorSetPointer itk::KernelTransform2< TScalarType, NDimensions >::m_Displacements {}

protected

The list of displacements. d[i] = q[i] - p[i];

Definition at line 463 of file itkKernelTransform2.h.

## m_DMatrix

template<class TScalarType, unsigned int NDimensions>

DMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_DMatrix {}

protected

The Deformation matrix. This is an auxiliary matrix that will hold the Deformation (non-affine) part of the transform. Those are the coefficients that will multiply the Kernel function.

Definition at line 488 of file itkKernelTransform2.h.

## m_FastComputationPossible

template<class TScalarType, unsigned int NDimensions>

bool itk::KernelTransform2< TScalarType, NDimensions >::m_FastComputationPossible {}

protected

The Jacobian can be computed much faster for some of the derived kerbel transforms, most notably the TPS.

Definition at line 533 of file itkKernelTransform2.h.

## m_I

template<class TScalarType, unsigned int NDimensions>

IMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_I {}

protected

Identity matrix.

Definition at line 525 of file itkKernelTransform2.h.

## m_KMatrix

template<class TScalarType, unsigned int NDimensions>

KMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_KMatrix {}

protected

The K matrix.

Definition at line 472 of file itkKernelTransform2.h.

## m_LInverseComputed

template<class TScalarType, unsigned int NDimensions>

bool itk::KernelTransform2< TScalarType, NDimensions >::m_LInverseComputed {}

protected

Has the L inverse matrix been computed?

Definition at line 508 of file itkKernelTransform2.h.

## m_LMatrix

template<class TScalarType, unsigned int NDimensions>

LMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_LMatrix {}

protected

The L matrix.

Definition at line 466 of file itkKernelTransform2.h.

## m_LMatrixComputed

template<class TScalarType, unsigned int NDimensions>

bool itk::KernelTransform2< TScalarType, NDimensions >::m_LMatrixComputed {}

protected

Has the L matrix been computed?

Definition at line 506 of file itkKernelTransform2.h.

## m_LMatrixDecompositionComputed

template<class TScalarType, unsigned int NDimensions>

bool itk::KernelTransform2< TScalarType, NDimensions >::m_LMatrixDecompositionComputed {}

protected

Has the L matrix decomposition been computed?

Definition at line 510 of file itkKernelTransform2.h.

## m_LMatrixDecompositionQR

template<class TScalarType, unsigned int NDimensions>

QRDecompositionType* itk::KernelTransform2< TScalarType, NDimensions >::m_LMatrixDecompositionQR {}

protected

Definition at line 522 of file itkKernelTransform2.h.

## m_LMatrixDecompositionSVD

template<class TScalarType, unsigned int NDimensions>

SVDDecompositionType* itk::KernelTransform2< TScalarType, NDimensions >::m_LMatrixDecompositionSVD {}

protected

Definition at line 521 of file itkKernelTransform2.h.

## m_LMatrixInverse

template<class TScalarType, unsigned int NDimensions>

LMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_LMatrixInverse {}

protected

The inverse of L, which we also cache.

Definition at line 469 of file itkKernelTransform2.h.

## m_MatrixInversionMethod

template<class TScalarType, unsigned int NDimensions>

std::string itk::KernelTransform2< TScalarType, NDimensions >::m_MatrixInversionMethod {}

private

Using SVD or QR decomposition.

Definition at line 543 of file itkKernelTransform2.h.

## m_NonZeroJacobianIndices

template<class TScalarType, unsigned int NDimensions>

NonZeroJacobianIndicesType itk::KernelTransform2< TScalarType, NDimensions >::m_NonZeroJacobianIndices {}

protected

Precomputed nonzero Jacobian indices (simply all params)

Definition at line 528 of file itkKernelTransform2.h.

## m_PMatrix

template<class TScalarType, unsigned int NDimensions>

PMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_PMatrix {}

protected

The P matrix.

Definition at line 475 of file itkKernelTransform2.h.

## m_PoissonRatio

template<class TScalarType, unsigned int NDimensions>

TScalarType itk::KernelTransform2< TScalarType, NDimensions >::m_PoissonRatio {}

private

Definition at line 540 of file itkKernelTransform2.h.

## m_SourceLandmarks

template<class TScalarType, unsigned int NDimensions>

PointSetPointer itk::KernelTransform2< TScalarType, NDimensions >::m_SourceLandmarks {}

The list of source landmarks, denoted 'p'.

Definition at line 398 of file itkKernelTransform2.h.

## m_Stiffness

template<class TScalarType, unsigned int NDimensions>

double itk::KernelTransform2< TScalarType, NDimensions >::m_Stiffness {}

protected

Stiffness parameter.

Definition at line 458 of file itkKernelTransform2.h.

## m_TargetLandmarks

template<class TScalarType, unsigned int NDimensions>

PointSetPointer itk::KernelTransform2< TScalarType, NDimensions >::m_TargetLandmarks {}

The list of target landmarks, denoted 'q'.

Definition at line 401 of file itkKernelTransform2.h.

## m_WMatrix

template<class TScalarType, unsigned int NDimensions>

WMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_WMatrix {}

protected

The W matrix.

Definition at line 481 of file itkKernelTransform2.h.

## m_WMatrixComputed

template<class TScalarType, unsigned int NDimensions>

bool itk::KernelTransform2< TScalarType, NDimensions >::m_WMatrixComputed {}

protected

The G matrix. It used to be mutable because m_GMatrix was made an ivar only to avoid copying the matrix at return time but this is not necessary. SK: we don't need this matrix anymore as a member. Has the W matrix been computed?

Definition at line 504 of file itkKernelTransform2.h.

## m_YMatrix

template<class TScalarType, unsigned int NDimensions>

YMatrixType itk::KernelTransform2< TScalarType, NDimensions >::m_YMatrix {}

protected

The Y matrix.

Definition at line 478 of file itkKernelTransform2.h.

Generated on 1768596610 for elastix by 1.15.0 |