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

#include <itkElasticBodySplineKernelTransform.h>

Detailed Description

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

This class defines the elastic body spline (EBS) transformation.

This class defines the elastic body spline (EBS) 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 Taken from the paper: The EBS "is based on a physical model of a homogeneous, isotropic, three-dimensional elastic body. The model can approximate the way that some physical objects deform".

Definition at line 40 of file itkElasticBodySplineKernelTransform.h.

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

Public Types

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

Public Member Functions

virtual TParametersValueType GetAlpha () const
 
const char * GetNameOfClass () const override
 
virtual void SetAlpha (TParametersValueType _arg)
 
- Public Member Functions inherited from itk::KernelTransform< double, 3 >
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 char * GetNameOfClass () const override
 
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< double, 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
 
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
 
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
 
void SetParameters (const ParametersType &) override=0
 
void SetParametersByValue (const ParametersType &p) override
 
virtual OutputCovariantVectorType TransformCovariantVector (const InputCovariantVectorType &) const
 
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 OutputPointType TransformPoint (const InputPointType &) const=0
 
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 &) const
 
virtual OutputVectorType TransformVector (const InputVectorType &vector, const InputPointType &point) const
 
virtual OutputVnlVectorType TransformVector (const InputVnlVectorType &) const
 
virtual OutputVnlVectorType TransformVector (const InputVnlVectorType &vector, const InputPointType &point) const
 
virtual void UpdateTransformParameters (const DerivativeType &update, ParametersValueType factor=1.0)
 
template< typename TImage > std std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > ApplyToImageMetadata (SmartPointer< TImage > image) const
 
- Public Member Functions inherited from TransformBaseTemplate< double >
virtual void CopyInFixedParameters (const FixedParametersValueType *const begin, const FixedParametersValueType *const end)=0
 
virtual void CopyInParameters (const ParametersValueType *const begin, const ParametersValueType *const end)=0
 
virtual const FixedParametersTypeGetFixedParameters () const=0
 
virtual unsigned int GetInputSpaceDimension () const=0
 
virtual NumberOfParametersType GetNumberOfParameters () const=0
 
virtual unsigned int GetOutputSpaceDimension () const=0
 
virtual const ParametersTypeGetParameters () const=0
 
virtual TransformCategoryEnum GetTransformCategory () const=0
 
virtual std::string GetTransformTypeAsString () const=0
 
 ITK_DISALLOW_COPY_AND_MOVE (TransformBaseTemplate)
 
 itkGetConstReferenceMacro (InputSpaceName, std::string)
 
 itkGetConstReferenceMacro (OutputSpaceName, std::string)
 
 itkOverrideGetNameOfClassMacro (TransformBaseTemplate)
 
 itkSetMacro (InputSpaceName, std::string)
 
 itkSetMacro (OutputSpaceName, std::string)
 
virtual void SetFixedParameters (const FixedParametersType &)=0
 
virtual void SetParameters (const ParametersType &)=0
 
virtual void SetParametersByValue (const ParametersType &p)=0
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::KernelTransform< double, 3 >
static Pointer New ()
 

Static Public Attributes

static constexpr unsigned int SpaceDimension = Superclass::SpaceDimension
 
- Static Public Attributes inherited from itk::KernelTransform< double, 3 >
static constexpr unsigned int SpaceDimension
 
- Static Public Attributes inherited from itk::Transform< double, VDimension, VDimension >
static constexpr unsigned int InputSpaceDimension
 
static constexpr unsigned int OutputSpaceDimension
 
- Static Public Attributes inherited from TransformBaseTemplate< double >
static constexpr TransformCategoryEnum BSpline
 
static constexpr TransformCategoryEnum DisplacementField
 
static constexpr TransformCategoryEnum Linear
 
static constexpr TransformCategoryEnum Spline
 
static constexpr TransformCategoryEnum UnknownTransformCategory
 
static constexpr TransformCategoryEnum VelocityField
 

Protected Types

using GMatrixType = vnl_matrix_fixed< TParametersValueType, VDimension, VDimension >
 

Protected Member Functions

void ComputeG (const InputVectorType &x, GMatrixType &gmatrix) const override
 
 ElasticBodySplineKernelTransform ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~ElasticBodySplineKernelTransform () override=default
 
- Protected Member Functions inherited from itk::KernelTransform< double, 3 >
void ComputeD ()
 
virtual void ComputeDeformationContribution (const InputPointType &thisPoint, OutputPointType &result) const
 
virtual void ComputeG (const InputVectorType &landmarkVector, GMatrixType &gmatrix) const
 
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< double, 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 TransformBaseTemplate< double >
 TransformBaseTemplate ()=default
 
 ~TransformBaseTemplate () override=default
 

Protected Attributes

TParametersValueType m_Alpha {}
 
- Protected Attributes inherited from itk::KernelTransform< double, 3 >
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< double, VDimension, VDimension >
FixedParametersType m_FixedParameters
 
ParametersType m_Parameters
 

Additional Inherited Members

- Public Attributes inherited from itk::Transform< double, VDimension, VDimension >
InverseJacobianPositionType &jacobian const
 
- Static Protected Member Functions inherited from itk::Transform< double, VDimension, VDimension >
static InverseTransformBasePointer InvertTransform (const TTransform &transform)
 

Member Typedef Documentation

◆ ConstPointer

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

Definition at line 50 of file itkElasticBodySplineKernelTransform.h.

◆ GMatrixType

template<typename TParametersValueType = double, unsigned int VDimension = 3>
using itk::KernelTransform< TParametersValueType, VDimension >::GMatrixType = vnl_matrix_fixed<TParametersValueType, VDimension, VDimension>
protected

'G' matrix type alias.

Definition at line 254 of file itkKernelTransform.h.

◆ Pointer

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

Definition at line 49 of file itkElasticBodySplineKernelTransform.h.

◆ Self

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

Standard class type aliases.

Definition at line 46 of file itkElasticBodySplineKernelTransform.h.

◆ Superclass

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

Definition at line 47 of file itkElasticBodySplineKernelTransform.h.

Constructor & Destructor Documentation

◆ ElasticBodySplineKernelTransform()

template<typename TParametersValueType = double, unsigned int VDimension = 3>
itk::ElasticBodySplineKernelTransform< TParametersValueType, VDimension >::ElasticBodySplineKernelTransform ( )
protected

◆ ~ElasticBodySplineKernelTransform()

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

Member Function Documentation

◆ ComputeG()

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

Compute G(x) For the elastic body spline, this is: \( G(x) = [alpha*r(x)^2*I - 3*x*x']*r(x) \) \( G(x) = [\alpha*r(x)^2*I - 3*x*x']*r(x) \) where \(\alpha = 12 ( 1 - \nu ) - 1\) \(\nu\) is Poisson's Ratio \( 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

◆ GetAlpha()

template<typename TParametersValueType = double, unsigned int VDimension = 3>
virtual TParametersValueType itk::ElasticBodySplineKernelTransform< TParametersValueType, VDimension >::GetAlpha ( ) const
virtual

Get alpha

◆ GetNameOfClass()

template<typename TParametersValueType = double, unsigned int VDimension = 3>
const char * itk::ElasticBodySplineKernelTransform< TParametersValueType, VDimension >::GetNameOfClass ( ) const
override

◆ New()

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

New macro for creation of through a Smart Pointer

◆ PrintSelf()

template<typename TParametersValueType = double, unsigned int VDimension = 3>
void itk::ElasticBodySplineKernelTransform< TParametersValueType, VDimension >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
overrideprotected

◆ SetAlpha()

template<typename TParametersValueType = double, unsigned int VDimension = 3>
virtual void itk::ElasticBodySplineKernelTransform< TParametersValueType, VDimension >::SetAlpha ( TParametersValueType  _arg)
virtual

Set alpha. Alpha is related to Poisson's Ratio ( \(\nu\)) as \(\alpha = 12 ( 1 - \nu ) - 1\)

Member Data Documentation

◆ m_Alpha

template<typename TParametersValueType = double, unsigned int VDimension = 3>
TParametersValueType itk::ElasticBodySplineKernelTransform< TParametersValueType, VDimension >::m_Alpha {}
protected

alpha, Alpha is related to Poisson's Ratio ( \(\nu\)) as \( \alpha = 12 ( 1 - \nu ) - 1\)

Definition at line 112 of file itkElasticBodySplineKernelTransform.h.

◆ SpaceDimension

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

Dimension of the domain space.

Definition at line 71 of file itkElasticBodySplineKernelTransform.h.


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