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 | Protected Attributes
itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions > Class Template Reference

#include <itkElasticBodySplineKernelTransform2.h>

Detailed Description

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

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 56 of file itkElasticBodySplineKernelTransform2.h.

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

Public Types

using ConstPointer = SmartPointer< const Self >
 
using Pointer = SmartPointer< Self >
 
using Self = ElasticBodySplineKernelTransform2
 
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 TScalarType GetAlpha () const
 
virtual const char * GetClassName () const
 
const TScalarType GetPoissonRatio () const override
 
 ITK_DISALLOW_COPY_AND_MOVE (ElasticBodySplineKernelTransform2)
 
 itkStaticConstMacro (SpaceDimension, unsigned int, Superclass::SpaceDimension)
 
void SetAlpha (TScalarType Alpha) override
 
void SetPoissonRatio (const TScalarType Nu) override
 
- 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 ComputeG (const InputVectorType &x, GMatrixType &GMatrix) const override
 
 ElasticBodySplineKernelTransform2 ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~ElasticBodySplineKernelTransform2 () 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
 

Protected Attributes

TScalarType m_Alpha
 
- 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
 

Additional Inherited Members

- Data Fields inherited from itk::KernelTransform2< TScalarType, NDimensions >
PointSetPointer m_SourceLandmarks
 
PointSetPointer m_TargetLandmarks
 

Member Typedef Documentation

◆ ConstPointer

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

Definition at line 66 of file itkElasticBodySplineKernelTransform2.h.

◆ GMatrixType

template<class TScalarType = double, 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 = double, unsigned int NDimensions = 3>
using itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::Pointer = SmartPointer<Self>

Definition at line 65 of file itkElasticBodySplineKernelTransform2.h.

◆ Self

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

Standard class typedefs.

Definition at line 62 of file itkElasticBodySplineKernelTransform2.h.

◆ Superclass

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

Definition at line 63 of file itkElasticBodySplineKernelTransform2.h.

Constructor & Destructor Documentation

◆ ElasticBodySplineKernelTransform2()

template<class TScalarType = double, unsigned int NDimensions = 3>
itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::ElasticBodySplineKernelTransform2 ( )
protected

◆ ~ElasticBodySplineKernelTransform2()

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

Member Function Documentation

◆ ComputeG()

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

Compute G(x) For the elastic body spline, this is:

\[ 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) = \sqrt{ x_1^2 + x_2^2 + x_3^2 } $ and $I$ is the identity matrix.

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

◆ GetAlpha()

template<class TScalarType = double, unsigned int NDimensions = 3>
virtual TScalarType itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::GetAlpha ( ) const
virtual

Get alpha

◆ GetClassName()

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

Run-time type information (and related methods).

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

◆ GetPoissonRatio()

template<class TScalarType = double, unsigned int NDimensions = 3>
const TScalarType itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::GetPoissonRatio ( ) const
inlineoverridevirtual

◆ ITK_DISALLOW_COPY_AND_MOVE()

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

◆ itkStaticConstMacro()

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

Dimension of the domain space.

◆ New()

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

New macro for creation of through a Smart Pointer

◆ PrintSelf()

template<class TScalarType = double, unsigned int NDimensions = 3>
void itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
overrideprotected

◆ SetAlpha()

template<class TScalarType = double, unsigned int NDimensions = 3>
void itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::SetAlpha ( TScalarType  Alpha)
inlineoverridevirtual

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

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

Definition at line 91 of file itkElasticBodySplineKernelTransform2.h.

◆ SetPoissonRatio()

template<class TScalarType = double, unsigned int NDimensions = 3>
void itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::SetPoissonRatio ( const TScalarType  Nu)
inlineoverridevirtual

Convenience method

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

Definition at line 105 of file itkElasticBodySplineKernelTransform2.h.

Field Documentation

◆ m_Alpha

template<class TScalarType = double, unsigned int NDimensions = 3>
TScalarType itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::m_Alpha
protected

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

Definition at line 154 of file itkElasticBodySplineKernelTransform2.h.



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