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

#include <itkElasticBodyReciprocalSplineKernelTransform.h>

Detailed Description

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

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 38 of file itkElasticBodyReciprocalSplineKernelTransform.h.

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

Public Types

using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = ElasticBodyReciprocalSplineKernelTransform
 
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< 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 Member Functions

virtual TParametersValueType GetAlpha () const
 
const char * GetNameOfClass () const override
 
virtual void SetAlpha (TParametersValueType _arg)
 
- 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 FixedParametersType & GetFixedParameters () const override
 
virtual VectorSetTypeGetModifiableDisplacements ()
 
const char * GetNameOfClass () const override
 
const ParametersType & GetParameters () 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 FixedParametersType & GetFixedParameters () 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 ParametersType & GetParameters () const override
 
TransformCategoryEnum GetTransformCategory () const override
 
std::string GetTransformTypeAsString () const override
 
virtual bool IsLinear () const
 
 itkCloneMacro (Self)
 
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)
 
template< typename TImage > std std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > ApplyToImageMetadata (SmartPointer< TImage > image) const
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::KernelTransform< TParametersValueType, VDimension >
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 Types

using GMatrixType = vnl_matrix_fixed< TParametersValueType, VDimension, VDimension >
 

Protected Member Functions

void ComputeG (const InputVectorType &x, GMatrixType &gmatrix) const override
 
 ElasticBodyReciprocalSplineKernelTransform ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~ElasticBodyReciprocalSplineKernelTransform () override=default
 
- Protected Member Functions inherited from itk::KernelTransform< TParametersValueType, VDimension >
void ComputeD ()
 
virtual void ComputeDeformationContribution (const InputPointType &thisPoint, OutputPointType &result) 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< TParametersValueType, VDimension, VDimension >
LightObject::Pointer InternalClone () const override
 
OutputDiffusionTensor3DType PreservationOfPrincipalDirectionDiffusionTensor3DReorientation (const InputDiffusionTensor3DType &, const InverseJacobianPositionType &) const
 
 Transform ()=default
 
 Transform (NumberOfParametersType numberOfParameters)
 
 ~Transform () override=default
 

Protected Attributes

TParametersValueType m_Alpha {}
 
- 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
 

Additional Inherited Members

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

Member Typedef Documentation

◆ ConstPointer

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

◆ 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::ElasticBodyReciprocalSplineKernelTransform< TParametersValueType, VDimension >::Pointer = SmartPointer<Self>

◆ Self

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

Standard class type aliases.

Definition at line 45 of file itkElasticBodyReciprocalSplineKernelTransform.h.

◆ Superclass

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

Constructor & Destructor Documentation

◆ ElasticBodyReciprocalSplineKernelTransform()

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

◆ ~ElasticBodyReciprocalSplineKernelTransform()

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

Member Function Documentation

◆ ComputeG()

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

Compute G(x) For the elastic body spline, this is: G(x) = [alpha*r(x)*I - 3*x*x'/r(x)] \( G(x) = [\alpha*r(x)*I - 3*x*x'/r(x) ]\) where \(\alpha = 8 ( 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

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

◆ GetAlpha()

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

Get alpha

◆ GetNameOfClass()

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

◆ New()

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

New macro for creation of through a Smart Pointer

◆ PrintSelf()

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

◆ SetAlpha()

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

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

Member Data Documentation

◆ m_Alpha

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

alpha, Poisson's ratio

Definition at line 108 of file itkElasticBodyReciprocalSplineKernelTransform.h.

◆ SpaceDimension

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

Dimension of the domain space.

Definition at line 70 of file itkElasticBodyReciprocalSplineKernelTransform.h.


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