go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions
itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions > Class Template Reference

#include <itkThinPlateR2LogRSplineKernelTransform2.h>

Detailed Description

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

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.

The kernel used in this variant of TPS is $ R^2 log(R) $

Definition at line 53 of file itkThinPlateR2LogRSplineKernelTransform2.h.

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

Public Types

using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using PointsIterator = typename PointSetType::PointsContainerIterator
 
using Self = ThinPlateR2LogRSplineKernelTransform2
 
using Superclass = KernelTransform2< TScalarType, NDimensions >
 
- Public Types inherited from itk::KernelTransform2< TScalarType, NDimensions >
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 KMatrixType = vnl_matrix< TScalarType >
 
using LMatrixType = vnl_matrix< TScalarType >
 
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 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 = SmartPointer< const Self >
 
using InternalMatrixType = typename SpatialJacobianType::InternalMatrixType
 
using InverseTransformBaseType = typename Superclass::InverseTransformBaseType
 
using JacobianOfSpatialHessianType = std::vector< SpatialHessianType >
 
using JacobianOfSpatialJacobianType = std::vector< SpatialJacobianType >
 
using MovingImageGradientType = OutputCovariantVectorType
 
using MovingImageGradientValueType = typename MovingImageGradientType::ValueType
 
using NonZeroJacobianIndicesType = std::vector< unsigned long >
 
using Pointer = SmartPointer< Self >
 
using Self = AdvancedTransform
 
using SpatialHessianType = FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension >
 
using SpatialJacobianType = Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension >
 
using Superclass = Transform< TScalarType, NInputDimensions, NOutputDimensions >
 
using TransformType = Transform< TScalarType, NInputDimensions, NOutputDimensions >
 
using TransformTypeConstPointer = typename TransformType::ConstPointer
 
using TransformTypePointer = typename TransformType::Pointer
 

Public Member Functions

virtual const char * GetClassName () const
 
 ITK_DISALLOW_COPY_AND_MOVE (ThinPlateR2LogRSplineKernelTransform2)
 
 itkStaticConstMacro (SpaceDimension, unsigned int, Superclass::SpaceDimension)
 
- Public Member Functions inherited from itk::KernelTransform2< TScalarType, NDimensions >
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 &inputPoint, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialHessian (const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &inputPoint, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &inputPoint, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) 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 &inputPoint, SpatialHessianType &sh) const override
 
void GetSpatialJacobian (const InputPointType &inputPoint, SpatialJacobianType &sj) 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 const char * GetClassName () const
 
virtual bool GetHasNonZeroJacobianOfSpatialHessian () const
 
virtual bool GetHasNonZeroSpatialHessian () const
 
virtual void GetJacobian (const InputPointType &inputPoint, JacobianType &j, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0
 
virtual void GetJacobianOfSpatialHessian (const InputPointType &inputPoint, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0
 
virtual void GetJacobianOfSpatialHessian (const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0
 
virtual void GetJacobianOfSpatialJacobian (const InputPointType &inputPoint, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0
 
virtual void GetJacobianOfSpatialJacobian (const InputPointType &inputPoint, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0
 
virtual NumberOfParametersType GetNumberOfNonZeroJacobianIndices () const
 
virtual void GetSpatialHessian (const InputPointType &inputPoint, SpatialHessianType &sh) const=0
 
virtual void GetSpatialJacobian (const InputPointType &inputPoint, SpatialJacobianType &sj) const=0
 
 ITK_DISALLOW_COPY_AND_MOVE (AdvancedTransform)
 
 itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions)
 
 itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions)
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::KernelTransform2< TScalarType, NDimensions >
static Pointer New ()
 

Protected Types

using GMatrixType = vnl_matrix_fixed< TScalarType, NDimensions, NDimensions >
 
- Protected Types inherited from itk::KernelTransform2< TScalarType, NDimensions >
using QRDecompositionType = vnl_qr< ScalarType >
 
using SVDDecompositionType = vnl_svd< ScalarType >
 

Protected Member Functions

void ComputeDeformationContribution (const InputPointType &inputPoint, OutputPointType &result) const override
 
void ComputeG (const InputVectorType &x, GMatrixType &GMatrix) const override
 
 ThinPlateR2LogRSplineKernelTransform2 ()
 
 ~ThinPlateR2LogRSplineKernelTransform2 () override=default
 
- Protected Member Functions inherited from itk::KernelTransform2< TScalarType, NDimensions >
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
 

Additional Inherited Members

- Data Fields inherited from itk::KernelTransform2< TScalarType, NDimensions >
PointSetPointer m_SourceLandmarks
 
PointSetPointer m_TargetLandmarks
 
- Protected Attributes inherited from itk::KernelTransform2< TScalarType, NDimensions >
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
 
QRDecompositionTypem_LMatrixDecompositionQR
 
SVDDecompositionTypem_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
 

Member Typedef Documentation

◆ ConstPointer

template<class TScalarType , unsigned int NDimensions = 3>
using itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::ConstPointer = SmartPointer<const Self>

Definition at line 62 of file itkThinPlateR2LogRSplineKernelTransform2.h.

◆ GMatrixType

template<class TScalarType , unsigned int NDimensions = 3>
using itk::KernelTransform2< TScalarType, NDimensions >::GMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>
protected

'G' matrix typedef.

Definition at line 365 of file itkKernelTransform2.h.

◆ Pointer

template<class TScalarType , unsigned int NDimensions = 3>
using itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::Pointer = SmartPointer<Self>

Definition at line 61 of file itkThinPlateR2LogRSplineKernelTransform2.h.

◆ PointsIterator

template<class TScalarType , unsigned int NDimensions = 3>
using itk::KernelTransform2< TScalarType, NDimensions >::PointsIterator = typename PointSetType::PointsContainerIterator

Definition at line 146 of file itkKernelTransform2.h.

◆ Self

template<class TScalarType , unsigned int NDimensions = 3>
using itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::Self = ThinPlateR2LogRSplineKernelTransform2

Standard class typedefs.

Definition at line 59 of file itkThinPlateR2LogRSplineKernelTransform2.h.

◆ Superclass

template<class TScalarType , unsigned int NDimensions = 3>
using itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::Superclass = KernelTransform2<TScalarType, NDimensions>

Definition at line 60 of file itkThinPlateR2LogRSplineKernelTransform2.h.

Constructor & Destructor Documentation

◆ ThinPlateR2LogRSplineKernelTransform2()

template<class TScalarType , unsigned int NDimensions = 3>
itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::ThinPlateR2LogRSplineKernelTransform2 ( )
inlineprotected

Definition at line 93 of file itkThinPlateR2LogRSplineKernelTransform2.h.

◆ ~ThinPlateR2LogRSplineKernelTransform2()

template<class TScalarType , unsigned int NDimensions = 3>
itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::~ThinPlateR2LogRSplineKernelTransform2 ( )
overrideprotecteddefault

Member Function Documentation

◆ ComputeDeformationContribution()

template<class TScalarType , unsigned int NDimensions = 3>
void itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::ComputeDeformationContribution ( const InputPointType &  inputPoint,
OutputPointType &  result 
) const
overrideprotectedvirtual

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

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

◆ ComputeG()

template<class TScalarType , unsigned int NDimensions = 3>
void itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::ComputeG ( const InputVectorType &  x,
GMatrixType GMatrix 
) const
overrideprotectedvirtual

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

\[ r(x) = \sqrt{ x_1^2 + x_2^2 + x_3^2 }  \]

I = identity matrix.

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

◆ GetClassName()

template<class TScalarType , unsigned int NDimensions = 3>
virtual const char * itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::GetClassName ( ) const
virtual

Run-time type information (and related methods).

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

◆ ITK_DISALLOW_COPY_AND_MOVE()

template<class TScalarType , unsigned int NDimensions = 3>
itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::ITK_DISALLOW_COPY_AND_MOVE ( ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >  )

◆ itkStaticConstMacro()

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

Dimension of the domain space.

◆ New()

template<class TScalarType , unsigned int NDimensions = 3>
static Pointer itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >::New ( )
static

New macro for creation of through a Smart Pointer



Generated on 2023-01-13 for elastix by doxygen 1.9.6 elastix logo