ITK  5.4.0
Insight Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension > Class Template Reference

#include <itkThinPlateSplineKernelTransform.h>

Detailed Description

template<typename TParametersValueType, unsigned int VDimension = 3>
class itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >

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

Examples
Examples/RegistrationITKv4/ThinPlateSplineWarp.cxx, and SphinxExamples/src/Core/Transform/DeformAVolumeWithAThinPlateSpline/Code.cxx.

Definition at line 35 of file itkThinPlateSplineKernelTransform.h.

+ Inheritance diagram for itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >:
+ Collaboration diagram for itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >:

Public Types

using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = ThinPlateSplineKernelTransform
 
using Superclass = KernelTransform< TParametersValueType, VDimension >
 
- Public Types inherited from itk::KernelTransform< TParametersValueType, VDimension >
using AMatrixType = vnl_matrix_fixed< TParametersValueType, VDimension, VDimension >
 
using BMatrixType = vnl_vector_fixed< TParametersValueType, VDimension >
 
using ColumnMatrixType = vnl_matrix_fixed< TParametersValueType, VDimension, 1 >
 
using ConstPointer = SmartPointer< const Self >
 
using DMatrixType = vnl_matrix< TParametersValueType >
 
using GMatrixType = vnl_matrix_fixed< TParametersValueType, VDimension, VDimension >
 
using IMatrixType = vnl_matrix_fixed< TParametersValueType, VDimension, VDimension >
 
using KMatrixType = vnl_matrix< TParametersValueType >
 
using LMatrixType = vnl_matrix< TParametersValueType >
 
using PMatrixType = vnl_matrix< TParametersValueType >
 
using Pointer = SmartPointer< Self >
 
using PointIdentifier = typename PointSetType::PointIdentifier
 
using PointsConstIterator = typename PointSetType::PointsContainerConstIterator
 
using PointsContainer = typename PointSetType::PointsContainer
 
using PointSetPointer = typename PointSetType::Pointer
 
using PointSetTraitsType = DefaultStaticMeshTraits< TParametersValueType, VDimension, VDimension, TParametersValueType, TParametersValueType >
 
using PointSetType = PointSet< InputPointType, VDimension, PointSetTraitsType >
 
using PointsIterator = typename PointSetType::PointsContainerIterator
 
using RowMatrixType = vnl_matrix_fixed< TParametersValueType, 1, VDimension >
 
using Self = KernelTransform
 
using Superclass = Transform< TParametersValueType, VDimension, VDimension >
 
using VectorSetPointer = typename VectorSetType::Pointer
 
using VectorSetType = itk::VectorContainer< SizeValueType, InputVectorType >
 
using WMatrixType = vnl_matrix< TParametersValueType >
 
using YMatrixType = vnl_matrix< TParametersValueType >
 
- Public Types inherited from itk::Transform< TParametersValueType, VDimension, VDimension >
using ConstPointer = SmartPointer< const Self >
 
using DerivativeType = Array< ParametersValueType >
 
using DirectionChangeMatrix = Matrix< double, Self::OutputSpaceDimension, Self::InputSpaceDimension >
 
using InputCovariantVectorType = CovariantVector< TParametersValueType, VInputDimension >
 
using InputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType >
 
using InputDirectionMatrix = Matrix< double, Self::InputSpaceDimension, Self::InputSpaceDimension >
 
using InputPointType = Point< TParametersValueType, VInputDimension >
 
using InputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< TParametersValueType, VInputDimension >
 
using InputVectorPixelType = VariableLengthVector< TParametersValueType >
 
using InputVectorType = Vector< TParametersValueType, VInputDimension >
 
using InputVnlVectorType = vnl_vector_fixed< TParametersValueType, VInputDimension >
 
using InverseJacobianPositionType = vnl_matrix_fixed< ParametersValueType, VInputDimension, VOutputDimension >
 
using InverseTransformBasePointer = typename InverseTransformBaseType::Pointer
 
using InverseTransformBaseType = Transform< TParametersValueType, VOutputDimension, VInputDimension >
 
using JacobianPositionType = vnl_matrix_fixed< ParametersValueType, VOutputDimension, VInputDimension >
 
using JacobianType = Array2D< ParametersValueType >
 
using MatrixType = Matrix< TParametersValueType, Self::OutputSpaceDimension, Self::InputSpaceDimension >
 
using OutputCovariantVectorType = CovariantVector< TParametersValueType, VOutputDimension >
 
using OutputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType >
 
using OutputDirectionMatrix = Matrix< double, Self::OutputSpaceDimension, Self::OutputSpaceDimension >
 
using OutputPointType = Point< TParametersValueType, VOutputDimension >
 
using OutputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< TParametersValueType, VOutputDimension >
 
using OutputVectorPixelType = VariableLengthVector< TParametersValueType >
 
using OutputVectorType = Vector< TParametersValueType, VOutputDimension >
 
using OutputVnlVectorType = vnl_vector_fixed< TParametersValueType, VOutputDimension >
 
using Pointer = SmartPointer< Self >
 
using ScalarType = ParametersValueType
 
using Self = Transform
 
using Superclass = TransformBaseTemplate< TParametersValueType >
 
- Public Types inherited from itk::TransformBaseTemplate< TParametersValueType >
using ConstPointer = SmartPointer< const Self >
 
using FixedParametersType = OptimizerParameters< FixedParametersValueType >
 
using FixedParametersValueType = double
 
using NumberOfParametersType = IdentifierType
 
using ParametersType = OptimizerParameters< ParametersValueType >
 
using ParametersValueType = TParametersValueType
 
using Pointer = SmartPointer< Self >
 
using Self = TransformBaseTemplate
 
using Superclass = Object
 
using TransformCategoryEnum = TransformBaseTemplateEnums::TransformCategory
 
- Public Types inherited from itk::Object
using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = Object
 
using Superclass = LightObject
 
- Public Types inherited from itk::LightObject
using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = LightObject
 

Public Member Functions

const char * GetNameOfClass () const override
 
- Public Member Functions inherited from itk::KernelTransform< TParametersValueType, VDimension >
void ComputeJacobianWithRespectToParameters (const InputPointType &p, JacobianType &jacobian) const override
 
void ComputeJacobianWithRespectToPosition (const InputPointType &, JacobianPositionType &) const override
 
void ComputeWMatrix ()
 
const FixedParametersTypeGetFixedParameters () const override
 
virtual VectorSetTypeGetModifiableDisplacements ()
 
const ParametersTypeGetParameters () const override
 
TransformCategoryEnum GetTransformCategory () const override
 
void SetFixedParameters (const FixedParametersType &) override
 
void SetParameters (const ParametersType &) override
 
OutputPointType TransformPoint (const InputPointType &thisPoint) const override
 
OutputVnlVectorType TransformVector (const InputVnlVectorType &) const override
 
virtual void UpdateParameters () const
 
virtual PointSetTypeGetModifiableSourceLandmarks ()
 
virtual void SetSourceLandmarks (PointSetType *)
 
virtual PointSetTypeGetModifiableTargetLandmarks ()
 
virtual void SetTargetLandmarks (PointSetType *)
 
OutputVectorType TransformVector (const InputVectorType &) const override
 
OutputCovariantVectorType TransformCovariantVector (const InputCovariantVectorType &) const override
 
virtual void SetStiffness (double _arg)
 
virtual double GetStiffness () const
 
- Public Member Functions inherited from itk::Transform< TParametersValueType, VDimension, VDimension >
virtual void ComputeJacobianWithRespectToParametersCachedTemporaries (const InputPointType &p, JacobianType &jacobian, JacobianType &) const
 
void CopyInFixedParameters (const FixedParametersValueType *const begin, const FixedParametersValueType *const end) override
 
void CopyInParameters (const ParametersValueType *const begin, const ParametersValueType *const end) override
 
const FixedParametersTypeGetFixedParameters () const override
 
unsigned int GetInputSpaceDimension () const override
 
virtual const std::string & GetInputSpaceName () const
 
bool GetInverse (Self *) const
 
virtual InverseTransformBasePointer GetInverseTransform () const
 
const char * GetNameOfClass () const override
 
virtual NumberOfParametersType GetNumberOfFixedParameters () const
 
virtual NumberOfParametersType GetNumberOfLocalParameters () const
 
NumberOfParametersType GetNumberOfParameters () const override
 
unsigned int GetOutputSpaceDimension () const override
 
virtual const std::string & GetOutputSpaceName () const
 
const ParametersTypeGetParameters () const override
 
TransformCategoryEnum GetTransformCategory () const override
 
std::string GetTransformTypeAsString () const override
 
virtual bool IsLinear () const
 
 itkCloneMacro (Self)
 
void SetFixedParameters (const FixedParametersType &) override=0
 
virtual void SetInputSpaceName (std::string _arg)
 
virtual void SetOutputSpaceName (std::string _arg)
 
void SetParameters (const ParametersType &) override=0
 
void SetParametersByValue (const ParametersType &p) override
 
virtual OutputCovariantVectorType TransformCovariantVector (const InputCovariantVectorType &vector, const InputPointType &point) const
 
virtual OutputVectorPixelType TransformCovariantVector (const InputVectorPixelType &) const
 
virtual OutputVectorPixelType TransformCovariantVector (const InputVectorPixelType &vector, const InputPointType &point) const
 
virtual OutputDiffusionTensor3DType TransformDiffusionTensor3D (const InputDiffusionTensor3DType &) const
 
virtual OutputDiffusionTensor3DType TransformDiffusionTensor3D (const InputDiffusionTensor3DType &inputTensor, const InputPointType &point) const
 
virtual OutputVectorPixelType TransformDiffusionTensor3D (const InputVectorPixelType &) const
 
virtual OutputVectorPixelType TransformDiffusionTensor3D (const InputVectorPixelType &inputTensor, const InputPointType &point) const
 
virtual OutputSymmetricSecondRankTensorType TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &) const
 
virtual OutputSymmetricSecondRankTensorType TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &inputTensor, const InputPointType &point) const
 
virtual OutputVectorPixelType TransformSymmetricSecondRankTensor (const InputVectorPixelType &) const
 
virtual OutputVectorPixelType TransformSymmetricSecondRankTensor (const InputVectorPixelType &inputTensor, const InputPointType &point) const
 
virtual OutputVectorPixelType TransformVector (const InputVectorPixelType &) const
 
virtual OutputVectorPixelType TransformVector (const InputVectorPixelType &vector, const InputPointType &point) const
 
virtual OutputVectorType TransformVector (const InputVectorType &vector, const InputPointType &point) const
 
virtual OutputVnlVectorType TransformVector (const InputVnlVectorType &vector, const InputPointType &point) const
 
virtual void UpdateTransformParameters (const DerivativeType &update, ParametersValueType factor=1.0)
 
 itkLegacyMacro (virtual void ComputeJacobianWithRespectToPosition(const InputPointType &x, JacobianType &jacobian) const)
 
 itkLegacyMacro (virtual void ComputeInverseJacobianWithRespectToPosition(const InputPointType &x, JacobianType &jacobian) const)
 
virtual void ComputeInverseJacobianWithRespectToPosition (const InputPointType &pnt, InverseJacobianPositionType &jacobian) const
 
std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > ApplyToImageMetadata (TImage *image) const
 
std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > ApplyToImageMetadata (SmartPointer< TImage > image) const
 
- Public Member Functions inherited from itk::TransformBaseTemplate< TParametersValueType >
virtual void SetParametersByValue (const ParametersType &p)=0
 
- Public Member Functions inherited from itk::Object
unsigned long AddObserver (const EventObject &event, Command *)
 
unsigned long AddObserver (const EventObject &event, Command *) const
 
unsigned long AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const
 
LightObject::Pointer CreateAnother () const override
 
virtual void DebugOff () const
 
virtual void DebugOn () const
 
CommandGetCommand (unsigned long tag)
 
bool GetDebug () const
 
MetaDataDictionaryGetMetaDataDictionary ()
 
const MetaDataDictionaryGetMetaDataDictionary () const
 
virtual ModifiedTimeType GetMTime () const
 
virtual const TimeStampGetTimeStamp () const
 
bool HasObserver (const EventObject &event) const
 
void InvokeEvent (const EventObject &)
 
void InvokeEvent (const EventObject &) const
 
virtual void Modified () const
 
void Register () const override
 
void RemoveAllObservers ()
 
void RemoveObserver (unsigned long tag)
 
void SetDebug (bool debugFlag) const
 
void SetReferenceCount (int) override
 
void UnRegister () const noexcept override
 
void SetMetaDataDictionary (const MetaDataDictionary &rhs)
 
void SetMetaDataDictionary (MetaDataDictionary &&rrhs)
 
virtual void SetObjectName (std::string _arg)
 
virtual const std::string & GetObjectName () const
 
- Public Member Functions inherited from itk::LightObject
Pointer Clone () const
 
virtual void Delete ()
 
virtual int GetReferenceCount () const
 
void Print (std::ostream &os, Indent indent=0) const
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::KernelTransform< TParametersValueType, VDimension >
static Pointer New ()
 
- Static Public Member Functions inherited from itk::Object
static bool GetGlobalWarningDisplay ()
 
static void GlobalWarningDisplayOff ()
 
static void GlobalWarningDisplayOn ()
 
static Pointer New ()
 
static void SetGlobalWarningDisplay (bool val)
 
- Static Public Member Functions inherited from itk::LightObject
static void BreakOnError ()
 
static Pointer New ()
 

Static Public Attributes

static constexpr unsigned int SpaceDimension = Superclass::SpaceDimension
 
- Static Public Attributes inherited from itk::KernelTransform< TParametersValueType, VDimension >
static constexpr unsigned int SpaceDimension = VDimension
 
- Static Public Attributes inherited from itk::Transform< TParametersValueType, VDimension, VDimension >
static constexpr unsigned int InputSpaceDimension
 
static constexpr unsigned int OutputSpaceDimension
 

Protected Member Functions

void ComputeDeformationContribution (const InputPointType &thisPoint, OutputPointType &result) const override
 
void ComputeG (const InputVectorType &x, GMatrixType &gmatrix) const override
 
 ThinPlateSplineKernelTransform ()=default
 
 ~ThinPlateSplineKernelTransform () override=default
 
- Protected Member Functions inherited from itk::KernelTransform< TParametersValueType, VDimension >
void ComputeD ()
 
void ComputeK ()
 
void ComputeL ()
 
void ComputeP ()
 
virtual const GMatrixTypeComputeReflexiveG (PointsIterator) const
 
void ComputeY ()
 
 KernelTransform ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
void ReorganizeW ()
 
 ~KernelTransform () override=default
 
- Protected Member Functions inherited from itk::Transform< TParametersValueType, VDimension, VDimension >
LightObject::Pointer InternalClone () const override
 
OutputDiffusionTensor3DType PreservationOfPrincipalDirectionDiffusionTensor3DReorientation (const InputDiffusionTensor3DType &, const InverseJacobianPositionType &) const
 
 Transform ()=default
 
 Transform (NumberOfParametersType numberOfParameters)
 
 ~Transform () override=default
 
- Protected Member Functions inherited from itk::TransformBaseTemplate< TParametersValueType >
 TransformBaseTemplate ()=default
 
 ~TransformBaseTemplate () override=default
 
- Protected Member Functions inherited from itk::Object
 Object ()
 
bool PrintObservers (std::ostream &os, Indent indent) const
 
virtual void SetTimeStamp (const TimeStamp &timeStamp)
 
 ~Object () override
 
- Protected Member Functions inherited from itk::LightObject
 LightObject ()
 
virtual void PrintHeader (std::ostream &os, Indent indent) const
 
virtual void PrintTrailer (std::ostream &os, Indent indent) const
 
virtual ~LightObject ()
 

Additional Inherited Members

- Static Protected Member Functions inherited from itk::Transform< TParametersValueType, VDimension, VDimension >
static InverseTransformBasePointer InvertTransform (const TTransform &transform)
 
- Protected Attributes inherited from itk::KernelTransform< TParametersValueType, VDimension >
AMatrixType m_AMatrix {}
 
BMatrixType m_BVector {}
 
VectorSetPointer m_Displacements {}
 
DMatrixType m_DMatrix {}
 
GMatrixType m_GMatrix {}
 
IMatrixType m_I {}
 
KMatrixType m_KMatrix {}
 
LMatrixType m_LMatrix {}
 
PMatrixType m_PMatrix {}
 
PointSetPointer m_SourceLandmarks {}
 
double m_Stiffness {}
 
PointSetPointer m_TargetLandmarks {}
 
WMatrixType m_WMatrix {}
 
bool m_WMatrixComputed {}
 
YMatrixType m_YMatrix {}
 
- Protected Attributes inherited from itk::Transform< TParametersValueType, VDimension, VDimension >
FixedParametersType m_FixedParameters
 
ParametersType m_Parameters
 
- Protected Attributes inherited from itk::LightObject
std::atomic< int > m_ReferenceCount {}
 

Member Typedef Documentation

◆ ConstPointer

template<typename TParametersValueType , unsigned int VDimension = 3>
using itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::ConstPointer = SmartPointer<const Self>

Definition at line 44 of file itkThinPlateSplineKernelTransform.h.

◆ Pointer

template<typename TParametersValueType , unsigned int VDimension = 3>
using itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::Pointer = SmartPointer<Self>

Definition at line 43 of file itkThinPlateSplineKernelTransform.h.

◆ Self

template<typename TParametersValueType , unsigned int VDimension = 3>
using itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::Self = ThinPlateSplineKernelTransform

Standard class type aliases.

Definition at line 41 of file itkThinPlateSplineKernelTransform.h.

◆ Superclass

template<typename TParametersValueType , unsigned int VDimension = 3>
using itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::Superclass = KernelTransform<TParametersValueType, VDimension>

Definition at line 42 of file itkThinPlateSplineKernelTransform.h.

Constructor & Destructor Documentation

◆ ThinPlateSplineKernelTransform()

template<typename TParametersValueType , unsigned int VDimension = 3>
itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::ThinPlateSplineKernelTransform ( )
protecteddefault

◆ ~ThinPlateSplineKernelTransform()

template<typename TParametersValueType , unsigned int VDimension = 3>
itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::~ThinPlateSplineKernelTransform ( )
overrideprotecteddefault

Member Function Documentation

◆ ComputeDeformationContribution()

template<typename TParametersValueType , unsigned int VDimension = 3>
void itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::ComputeDeformationContribution ( const InputPointType thisPoint,
OutputPointType result 
) const
overrideprotectedvirtual

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

Reimplemented from itk::KernelTransform< TParametersValueType, VDimension >.

◆ ComputeG()

template<typename TParametersValueType , unsigned int VDimension = 3>
void itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::ComputeG ( const InputVectorType x,
GMatrixType gmatrix 
) const
overrideprotectedvirtual

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]

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

I = identity matrix.

Reimplemented from itk::KernelTransform< TParametersValueType, VDimension >.

◆ GetNameOfClass()

template<typename TParametersValueType , unsigned int VDimension = 3>
const char* itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::GetNameOfClass ( ) const
overridevirtual

◆ New()

template<typename TParametersValueType , unsigned int VDimension = 3>
static Pointer itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::New ( )
static

New macro for creation of through a Smart Pointer

Member Data Documentation

◆ SpaceDimension

template<typename TParametersValueType , unsigned int VDimension = 3>
constexpr unsigned int itk::ThinPlateSplineKernelTransform< TParametersValueType, VDimension >::SpaceDimension = Superclass::SpaceDimension
staticconstexpr

Dimension of the domain space.

Definition at line 65 of file itkThinPlateSplineKernelTransform.h.


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