Skip to content

itk::ThinPlateSplineKernelTransform2

More...

#include <itkThinPlateSplineKernelTransform2.h>

Inherits from itk::KernelTransform2< TScalarType, 3 >, itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >, Transform< TScalarType, 3, 3 >

Public Types

Name
typedef ThinPlateSplineKernelTransform2 Self
typedef KernelTransform2< TScalarType, NDimensions > Superclass
typedef SmartPointer< Self > Pointer
typedef SmartPointer< const Self > ConstPointer
typedef Superclass::ScalarType ScalarType
typedef Superclass::ParametersType ParametersType
typedef Superclass::JacobianType JacobianType
typedef Superclass::InputPointType InputPointType
typedef Superclass::OutputPointType OutputPointType
typedef Superclass::InputVectorType InputVectorType
typedef Superclass::OutputVectorType OutputVectorType
typedef Superclass::InputCovariantVectorType InputCovariantVectorType
typedef Superclass::OutputCovariantVectorType OutputCovariantVectorType
typedef Superclass::PointsIterator PointsIterator

Protected Types

Name
typedef Superclass::GMatrixType GMatrixType

Public Functions

Name
itkNewMacro(Self )
itkTypeMacro(ThinPlateSplineKernelTransform2 , KernelTransform2 )
itkStaticConstMacro(SpaceDimension , unsigned int , Superclass::SpaceDimension )
void SetSigma(double sigma)

Protected Functions

Name
ThinPlateSplineKernelTransform2()
virtual ~ThinPlateSplineKernelTransform2()
virtual void ComputeG(const InputVectorType & x, GMatrixType & GMatrix) const
virtual void ComputeDeformationContribution(const InputPointType & inputPoint, OutputPointType & result) const

Additional inherited members

Public Types inherited from itk::KernelTransform2< TScalarType, 3 >

Name
typedef Superclass::NumberOfParametersType NumberOfParametersType
typedef Superclass::InputVnlVectorType InputVnlVectorType
typedef Superclass::OutputVnlVectorType OutputVnlVectorType
typedef Superclass ::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
typedef Superclass::SpatialJacobianType SpatialJacobianType
typedef Superclass ::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
typedef Superclass::SpatialHessianType SpatialHessianType
typedef Superclass ::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
typedef Superclass::InternalMatrixType InternalMatrixType
typedef DefaultStaticMeshTraits< TScalarType, NDimensions, NDimensions, TScalarType, TScalarType > PointSetTraitsType
typedef PointSet< InputPointType, NDimensions, PointSetTraitsType > PointSetType
typedef PointSetType::Pointer PointSetPointer
typedef PointSetType::PointsContainer PointsContainer
typedef PointSetType::PointsContainerConstIterator PointsConstIterator
typedef VectorContainer< unsigned long, InputVectorType > VectorSetType
typedef VectorSetType::Pointer VectorSetPointer
typedef vnl_matrix_fixed< TScalarType, NDimensions, NDimensions > IMatrixType
typedef vnl_matrix< TScalarType > LMatrixType
typedef vnl_matrix< TScalarType > KMatrixType
typedef vnl_matrix< TScalarType > PMatrixType
typedef vnl_matrix< TScalarType > YMatrixType
typedef vnl_matrix< TScalarType > WMatrixType
typedef vnl_matrix< TScalarType > DMatrixType
typedef vnl_matrix_fixed< TScalarType, NDimensions, NDimensions > AMatrixType
typedef vnl_vector_fixed< TScalarType, NDimensions > BMatrixType
typedef vnl_matrix_fixed< TScalarType, 1, NDimensions > RowMatrixType
typedef vnl_matrix_fixed< TScalarType, NDimensions, 1 > ColumnMatrixType

Protected Types inherited from itk::KernelTransform2< TScalarType, 3 >

Name
typedef vnl_svd< ScalarType > SVDDecompositionType
typedef vnl_qr< ScalarType > QRDecompositionType

Public Functions inherited from itk::KernelTransform2< TScalarType, 3 >

Name
virtual NumberOfParametersType GetNumberOfParameters(void ) const
itkGetObjectMacro(SourceLandmarks , PointSetType )
virtual void SetSourceLandmarks(PointSetType * )
itkGetObjectMacro(TargetLandmarks , PointSetType )
virtual void SetTargetLandmarks(PointSetType * )
itkGetObjectMacro(Displacements , VectorSetType )
void ComputeWMatrix(void )
void ComputeLInverse(void )
virtual OutputPointType TransformPoint(const InputPointType & thisPoint) const
virtual OutputVectorType TransformVector(const InputVectorType & ) const
virtual OutputVnlVectorType TransformVector(const InputVnlVectorType & ) const
virtual OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType & ) const
virtual void GetJacobian(const InputPointType & , JacobianType & , NonZeroJacobianIndicesType & ) const
virtual void SetIdentity(void )
virtual void SetParameters(const ParametersType & )
virtual void SetFixedParameters(const ParametersType & )
virtual void UpdateParameters(void )
virtual const ParametersType & GetParameters(void ) const
virtual const ParametersType & GetFixedParameters(void ) const
virtual void SetStiffness(double stiffness)
itkGetMacro(Stiffness , double )
virtual void SetAlpha(TScalarType itkNotUsedAlpha)
virtual TScalarType GetAlpha(void ) const
itkSetMacro(PoissonRatio , TScalarType )
virtual const TScalarType GetPoissonRatio(void ) const
itkSetMacro(MatrixInversionMethod , std::string )
itkGetConstReferenceMacro(MatrixInversionMethod , std::string )
virtual void GetSpatialJacobian(const InputPointType & ipp, SpatialJacobianType & sj) const
virtual void GetSpatialHessian(const InputPointType & ipp, SpatialHessianType & sh) const
virtual void GetJacobianOfSpatialJacobian(const InputPointType & ipp, JacobianOfSpatialJacobianType & jsj, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const
virtual void GetJacobianOfSpatialJacobian(const InputPointType & ipp, SpatialJacobianType & sj, JacobianOfSpatialJacobianType & jsj, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const
virtual void GetJacobianOfSpatialHessian(const InputPointType & ipp, JacobianOfSpatialHessianType & jsh, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const
virtual void GetJacobianOfSpatialHessian(const InputPointType & ipp, SpatialHessianType & sh, JacobianOfSpatialHessianType & jsh, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const

Protected Functions inherited from itk::KernelTransform2< TScalarType, 3 >

Name
KernelTransform2()
virtual ~KernelTransform2()
void PrintSelf(std::ostream & os, Indent indent) const
virtual void ComputeReflexiveG(PointsIterator , GMatrixType & GMatrix) const
void ComputeK(void )
void ComputeL(void )
void ComputeP(void )
void ComputeY(void )
void ComputeD(void )
void ReorganizeW(void )

Public Attributes inherited from itk::KernelTransform2< TScalarType, 3 >

Name
PointSetPointer m_SourceLandmarks
PointSetPointer m_TargetLandmarks

Protected Attributes inherited from itk::KernelTransform2< TScalarType, 3 >

Name
double m_Stiffness
VectorSetPointer m_Displacements
LMatrixType m_LMatrix
LMatrixType m_LMatrixInverse
KMatrixType m_KMatrix
PMatrixType m_PMatrix
YMatrixType m_YMatrix
WMatrixType m_WMatrix
DMatrixType m_DMatrix
AMatrixType m_AMatrix
BMatrixType m_BVector
bool m_WMatrixComputed
bool m_LMatrixComputed
bool m_LInverseComputed
bool m_LMatrixDecompositionComputed
SVDDecompositionType * m_LMatrixDecompositionSVD
QRDecompositionType * m_LMatrixDecompositionQR
IMatrixType m_I
NonZeroJacobianIndicesType m_NonZeroJacobianIndices
NonZeroJacobianIndicesType m_NonZeroJacobianIndicesTemp
bool m_FastComputationPossible

Public Types inherited from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >

Name
typedef Superclass::ParametersValueType ParametersValueType
typedef Superclass::NumberOfParametersType NumberOfParametersType
typedef Superclass::DerivativeType DerivativeType
typedef Superclass::InputVnlVectorType InputVnlVectorType
typedef Superclass::OutputVnlVectorType OutputVnlVectorType
typedef Superclass::InverseTransformBaseType InverseTransformBaseType
typedef Superclass::InverseTransformBasePointer InverseTransformBasePointer
typedef Transform< TScalarType, NInputDimensions, NOutputDimensions > TransformType
typedef TransformType::Pointer TransformTypePointer
typedef TransformType::ConstPointer TransformTypeConstPointer
typedef std::vector< unsigned long > NonZeroJacobianIndicesType
typedef Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
typedef std::vector< SpatialJacobianType > JacobianOfSpatialJacobianType
typedef FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > SpatialHessianType
typedef std::vector< SpatialHessianType > JacobianOfSpatialHessianType
typedef SpatialJacobianType::InternalMatrixType InternalMatrixType
typedef OutputCovariantVectorType MovingImageGradientType
typedef MovingImageGradientType::ValueType MovingImageGradientValueType

Public Functions inherited from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >

Name
virtual NumberOfParametersType GetNumberOfNonZeroJacobianIndices(void ) const
itkGetConstMacro(HasNonZeroSpatialHessian , bool )
itkGetConstMacro(HasNonZeroJacobianOfSpatialHessian , bool )
virtual void GetJacobian(const InputPointType & ipp, JacobianType & j, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const =0
virtual void EvaluateJacobianWithImageGradientProduct(const InputPointType & ipp, const MovingImageGradientType & movingImageGradient, DerivativeType & imageJacobian, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const
virtual void GetSpatialJacobian(const InputPointType & ipp, SpatialJacobianType & sj) const =0
virtual void ComputeJacobianWithRespectToParameters(const InputPointType & itkNotUsedp, JacobianType & itkNotUsedj) const
virtual void ComputeJacobianWithRespectToPosition(const InputPointType & itkNotUsedp, JacobianType & itkNotUsedj) const
virtual void GetSpatialHessian(const InputPointType & ipp, SpatialHessianType & sh) const =0
virtual void GetJacobianOfSpatialJacobian(const InputPointType & ipp, JacobianOfSpatialJacobianType & jsj, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const =0
virtual void GetJacobianOfSpatialJacobian(const InputPointType & ipp, SpatialJacobianType & sj, JacobianOfSpatialJacobianType & jsj, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const =0
virtual void GetJacobianOfSpatialHessian(const InputPointType & ipp, JacobianOfSpatialHessianType & jsh, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const =0
virtual void GetJacobianOfSpatialHessian(const InputPointType & ipp, SpatialHessianType & sh, JacobianOfSpatialHessianType & jsh, NonZeroJacobianIndicesType & nonZeroJacobianIndices) const =0

Protected Functions inherited from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >

Name
AdvancedTransform()
AdvancedTransform(NumberOfParametersType numberOfParameters)
virtual ~AdvancedTransform()

Protected Attributes inherited from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >

Name
bool m_HasNonZeroSpatialHessian
bool m_HasNonZeroJacobianOfSpatialHessian

Detailed Description

template <class TScalarType ,
unsigned int NDimensions =3>
class itk::ThinPlateSplineKernelTransform2;

This class defines the thin plate spline (TPS) transformation. It 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

Public Types Documentation

typedef Self

typedef ThinPlateSplineKernelTransform2 itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::Self;

Standard class typedefs.

typedef Superclass

typedef KernelTransform2< TScalarType, NDimensions > itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::Superclass;

typedef Pointer

typedef SmartPointer< Self > itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::Pointer;

typedef ConstPointer

typedef SmartPointer< const Self > itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::ConstPointer;

typedef ScalarType

typedef Superclass::ScalarType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::ScalarType;

Scalar type.

typedef ParametersType

typedef Superclass::ParametersType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::ParametersType;

Parameters type.

typedef JacobianType

typedef Superclass::JacobianType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::JacobianType;

Jacobian Type

typedef InputPointType

typedef Superclass::InputPointType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::InputPointType;

These (rather redundant) typedefs are needed because on SGI, typedefs are not inherited.

typedef OutputPointType

typedef Superclass::OutputPointType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::OutputPointType;

typedef InputVectorType

typedef Superclass::InputVectorType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::InputVectorType;

typedef OutputVectorType

typedef Superclass::OutputVectorType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::OutputVectorType;

typedef InputCovariantVectorType

typedef Superclass::InputCovariantVectorType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::InputCovariantVectorType;

typedef OutputCovariantVectorType

typedef Superclass::OutputCovariantVectorType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::OutputCovariantVectorType;

typedef PointsIterator

typedef Superclass::PointsIterator itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::PointsIterator;

Protected Types Documentation

typedef GMatrixType

typedef Superclass::GMatrixType itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >::GMatrixType;

These (rather redundant) typedefs are needed because on SGI, typedefs are not inherited.

Public Functions Documentation

function itkNewMacro

itkNewMacro(
    Self 
)

New macro for creation of through a Smart Pointer

function itkTypeMacro

itkTypeMacro(
    ThinPlateSplineKernelTransform2 ,
    KernelTransform2 
)

Run-time type information (and related methods).

function itkStaticConstMacro

itkStaticConstMacro(
    SpaceDimension ,
    unsigned int ,
    Superclass::SpaceDimension 
)

Dimension of the domain space.

function SetSigma

inline void SetSigma(
    double sigma
)

Protected Functions Documentation

function ThinPlateSplineKernelTransform2

inline ThinPlateSplineKernelTransform2()

function ~ThinPlateSplineKernelTransform2

inline virtual ~ThinPlateSplineKernelTransform2()

function ComputeG

virtual void ComputeG(
    const InputVectorType & x,
    GMatrixType & GMatrix
) const

Reimplements: itk::KernelTransform2::ComputeG

Compute G(x) For the thin plate spline, this is: G(x) = r(x)*I \( G(x) = r(x)*I \) where r(x) = Euclidean norm = sqrt[x1^2 + x2^2 + x3^2] I = identity matrix.

function ComputeDeformationContribution

virtual void ComputeDeformationContribution(
    const InputPointType & inputPoint,
    OutputPointType & result
) const

Reimplements: itk::KernelTransform2::ComputeDeformationContribution

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


Updated on 2022-07-23 at 16:40:06 -0600