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 | Private Member Functions
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 57 of file itkElasticBodySplineKernelTransform2.h.

+ Inheritance diagram for itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >:

Public Types

typedef SmartPointer< const SelfConstPointer
 
typedef Superclass::InputCovariantVectorType InputCovariantVectorType
 
typedef Superclass::InputPointType InputPointType
 
typedef Superclass::InputVectorType InputVectorType
 
typedef Superclass::JacobianType JacobianType
 
typedef Superclass::OutputCovariantVectorType OutputCovariantVectorType
 
typedef Superclass::OutputPointType OutputPointType
 
typedef Superclass::OutputVectorType OutputVectorType
 
typedef Superclass::ParametersType ParametersType
 
typedef SmartPointer< SelfPointer
 
typedef Superclass::ScalarType ScalarType
 
typedef ElasticBodySplineKernelTransform2 Self
 
typedef KernelTransform2< TScalarType, NDimensions > Superclass
 
- Public Types inherited from itk::KernelTransform2< double, 3 >
typedef vnl_matrix_fixed< double, NDimensions, NDimensions > AMatrixType
 
typedef vnl_vector_fixed< double, NDimensions > BMatrixType
 
typedef vnl_matrix_fixed< double, NDimensions, 1 > ColumnMatrixType
 
typedef SmartPointer< const SelfConstPointer
 
typedef vnl_matrix< doubleDMatrixType
 
typedef vnl_matrix_fixed< double, NDimensions, NDimensions > GMatrixType
 
typedef vnl_matrix_fixed< double, NDimensions, NDimensions > IMatrixType
 
typedef Superclass::InputCovariantVectorType InputCovariantVectorType
 
typedef Superclass::InputPointType InputPointType
 
typedef Superclass::InputVectorType InputVectorType
 
typedef Superclass::InputVnlVectorType InputVnlVectorType
 
typedef Superclass::InternalMatrixType InternalMatrixType
 
typedef Superclass ::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
 
typedef Superclass ::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
 
typedef Superclass::JacobianType JacobianType
 
typedef vnl_matrix< doubleKMatrixType
 
typedef vnl_matrix< doubleLMatrixType
 
typedef Superclass ::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
 
typedef Superclass::NumberOfParametersType NumberOfParametersType
 
typedef Superclass::OutputCovariantVectorType OutputCovariantVectorType
 
typedef Superclass::OutputPointType OutputPointType
 
typedef Superclass::OutputVectorType OutputVectorType
 
typedef Superclass::OutputVnlVectorType OutputVnlVectorType
 
typedef Superclass::ParametersType ParametersType
 
typedef vnl_matrix< doublePMatrixType
 
typedef SmartPointer< SelfPointer
 
typedef PointSetType::PointsContainerConstIterator PointsConstIterator
 
typedef PointSetType::PointsContainer PointsContainer
 
typedef PointSetType::Pointer PointSetPointer
 
typedef DefaultStaticMeshTraits< double, NDimensions, NDimensions, double, doublePointSetTraitsType
 
typedef PointSet< InputPointType, NDimensions, PointSetTraitsTypePointSetType
 
typedef PointSetType::PointsContainerIterator PointsIterator
 
typedef vnl_matrix_fixed< double, 1, NDimensions > RowMatrixType
 
typedef Superclass::ScalarType ScalarType
 
typedef KernelTransform2 Self
 
typedef Superclass::SpatialHessianType SpatialHessianType
 
typedef Superclass::SpatialJacobianType SpatialJacobianType
 
typedef AdvancedTransform< double, NDimensions, NDimensions > Superclass
 
typedef VectorSetType::Pointer VectorSetPointer
 
typedef VectorContainer< unsigned long, InputVectorTypeVectorSetType
 
typedef vnl_matrix< doubleWMatrixType
 
typedef vnl_matrix< doubleYMatrixType
 
- Public Types inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
typedef SmartPointer< const SelfConstPointer
 
typedef Superclass::DerivativeType DerivativeType
 
typedef Superclass::FixedParametersType FixedParametersType
 
typedef Superclass ::InputCovariantVectorType InputCovariantVectorType
 
typedef Superclass::InputPointType InputPointType
 
typedef Superclass::InputVectorType InputVectorType
 
typedef Superclass::InputVnlVectorType InputVnlVectorType
 
typedef SpatialJacobianType::InternalMatrixType InternalMatrixType
 
typedef Superclass::InverseTransformBasePointer InverseTransformBasePointer
 
typedef Superclass::InverseTransformBaseType InverseTransformBaseType
 
typedef std::vector< SpatialHessianTypeJacobianOfSpatialHessianType
 
typedef std::vector< SpatialJacobianTypeJacobianOfSpatialJacobianType
 
typedef Superclass::JacobianType JacobianType
 
typedef OutputCovariantVectorType MovingImageGradientType
 
typedef MovingImageGradientType::ValueType MovingImageGradientValueType
 
typedef std::vector< unsigned long > NonZeroJacobianIndicesType
 
typedef Superclass::NumberOfParametersType NumberOfParametersType
 
typedef Superclass ::OutputCovariantVectorType OutputCovariantVectorType
 
typedef Superclass::OutputPointType OutputPointType
 
typedef Superclass::OutputVectorType OutputVectorType
 
typedef Superclass::OutputVnlVectorType OutputVnlVectorType
 
typedef Superclass::ParametersType ParametersType
 
typedef Superclass::ParametersValueType ParametersValueType
 
typedef SmartPointer< SelfPointer
 
typedef Superclass::ScalarType ScalarType
 
typedef AdvancedTransform Self
 
typedef FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > SpatialHessianType
 
typedef Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
 
typedef Transform< TScalarType, NInputDimensions, NOutputDimensions > Superclass
 
typedef Transform< TScalarType, NInputDimensions, NOutputDimensions > TransformType
 
typedef TransformType::ConstPointer TransformTypeConstPointer
 
typedef TransformType::Pointer TransformTypePointer
 

Public Member Functions

 elxOverrideGetConstMacro (Alpha, TScalarType)
 
virtual const char * GetClassName () const
 
const TScalarType GetPoissonRatio (void) const override
 
 itkStaticConstMacro (SpaceDimension, unsigned int, Superclass::SpaceDimension)
 
void SetAlpha (TScalarType Alpha) override
 
void SetPoissonRatio (const TScalarType Nu) override
 
- Public Member Functions inherited from itk::KernelTransform2< double, 3 >
void ComputeLInverse (void)
 
void ComputeWMatrix (void)
 
virtual double GetAlpha (void) const
 
const ParametersTypeGetFixedParameters (void) const override
 
void GetJacobian (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const override
 
void GetJacobianOfSpatialHessian (const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialHessian (const InputPointType &ipp, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &ipp, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
virtual const std::string & GetMatrixInversionMethod ()
 
NumberOfParametersType GetNumberOfParameters (void) const override
 
const ParametersTypeGetParameters (void) const override
 
void GetSpatialHessian (const InputPointType &ipp, SpatialHessianType &sh) const override
 
void GetSpatialJacobian (const InputPointType &ipp, SpatialJacobianType &sj) const override
 
virtual double GetStiffness ()
 
 itkGetModifiableObjectMacro (Displacements, VectorSetType)
 
 itkGetModifiableObjectMacro (SourceLandmarks, PointSetType)
 
 itkGetModifiableObjectMacro (TargetLandmarks, PointSetType)
 
 itkStaticConstMacro (SpaceDimension, unsigned int, NDimensions)
 
virtual void SetAlpha (double)
 
void SetFixedParameters (const ParametersType &) override
 
virtual void SetIdentity (void)
 
virtual void SetMatrixInversionMethod (std::string _arg)
 
void SetParameters (const ParametersType &) override
 
virtual void SetPoissonRatio (double _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 (void)
 
- Public Member Functions inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
void ComputeJacobianWithRespectToParameters (const InputPointType &, JacobianType &) const override
 
virtual void EvaluateJacobianWithImageGradientProduct (const InputPointType &ipp, const MovingImageGradientType &movingImageGradient, DerivativeType &imageJacobian, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
virtual bool GetHasNonZeroJacobianOfSpatialHessian () const
 
virtual bool GetHasNonZeroSpatialHessian () const
 
virtual NumberOfParametersType GetNumberOfNonZeroJacobianIndices (void) const
 
 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< double, 3 >
static Pointer New ()
 

Protected Types

typedef Superclass::GMatrixType GMatrixType
 
- Protected Types inherited from itk::KernelTransform2< double, 3 >
typedef vnl_qr< ScalarTypeQRDecompositionType
 
typedef vnl_svd< ScalarTypeSVDDecompositionType
 

Protected Member Functions

void ComputeG (const InputVectorType &x, GMatrixType &GMatrix) const override
 
 ElasticBodySplineKernelTransform2 ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~ElasticBodySplineKernelTransform2 () override
 
- Protected Member Functions inherited from itk::KernelTransform2< double, 3 >
void ComputeD (void)
 
virtual void ComputeDeformationContribution (const InputPointType &inputPoint, OutputPointType &result) const
 
virtual void ComputeG (const InputVectorType &landmarkVector, GMatrixType &GMatrix) const
 
void ComputeK (void)
 
void ComputeL (void)
 
void ComputeP (void)
 
virtual void ComputeReflexiveG (PointsIterator, GMatrixType &GMatrix) const
 
void ComputeY (void)
 
 KernelTransform2 ()
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
void ReorganizeW (void)
 
 ~KernelTransform2 () override
 
- Protected Member Functions inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
 AdvancedTransform ()
 
 AdvancedTransform (NumberOfParametersType numberOfParameters)
 
 ~AdvancedTransform () override
 

Protected Attributes

TScalarType m_Alpha
 
- Protected Attributes inherited from itk::KernelTransform2< double, 3 >
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
 
NonZeroJacobianIndicesType m_NonZeroJacobianIndicesTemp
 
PMatrixType m_PMatrix
 
double m_Stiffness
 
WMatrixType m_WMatrix
 
bool m_WMatrixComputed
 
YMatrixType m_YMatrix
 
- Protected Attributes inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
bool m_HasNonZeroJacobianOfSpatialHessian
 
bool m_HasNonZeroSpatialHessian
 

Private Member Functions

 ElasticBodySplineKernelTransform2 (const Self &)
 
void operator= (const Self &)
 

Additional Inherited Members

- Data Fields inherited from itk::KernelTransform2< double, 3 >
PointSetPointer m_SourceLandmarks
 
PointSetPointer m_TargetLandmarks
 

Member Typedef Documentation

◆ ConstPointer

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

Definition at line 68 of file itkElasticBodySplineKernelTransform2.h.

◆ GMatrixType

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

These (rather redundant) typedefs are needed because on SGI, typedefs are not inherited

Definition at line 137 of file itkElasticBodySplineKernelTransform2.h.

◆ InputCovariantVectorType

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

Definition at line 126 of file itkElasticBodySplineKernelTransform2.h.

◆ InputPointType

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

These (rather redundant) typedefs are needed because on SGI, typedefs are not inherited

Definition at line 122 of file itkElasticBodySplineKernelTransform2.h.

◆ InputVectorType

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

Definition at line 124 of file itkElasticBodySplineKernelTransform2.h.

◆ JacobianType

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

Jacobian type.

Definition at line 83 of file itkElasticBodySplineKernelTransform2.h.

◆ OutputCovariantVectorType

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

Definition at line 127 of file itkElasticBodySplineKernelTransform2.h.

◆ OutputPointType

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

Definition at line 123 of file itkElasticBodySplineKernelTransform2.h.

◆ OutputVectorType

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

Definition at line 125 of file itkElasticBodySplineKernelTransform2.h.

◆ ParametersType

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

Parameters type.

Definition at line 80 of file itkElasticBodySplineKernelTransform2.h.

◆ Pointer

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

Definition at line 67 of file itkElasticBodySplineKernelTransform2.h.

◆ ScalarType

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

Scalar type.

Definition at line 77 of file itkElasticBodySplineKernelTransform2.h.

◆ Self

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

Standard class typedefs.

Definition at line 63 of file itkElasticBodySplineKernelTransform2.h.

◆ Superclass

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

Definition at line 65 of file itkElasticBodySplineKernelTransform2.h.

Constructor & Destructor Documentation

◆ ElasticBodySplineKernelTransform2() [1/2]

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 ( )
inlineoverrideprotected

Definition at line 132 of file itkElasticBodySplineKernelTransform2.h.

◆ ElasticBodySplineKernelTransform2() [2/2]

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

Member Function Documentation

◆ ComputeG()

template<class TScalarType = double, unsigned int NDimensions = 3>
void itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::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) \]

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.

◆ elxOverrideGetConstMacro()

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

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< double, 3 >.

◆ GetPoissonRatio()

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

Reimplemented from itk::KernelTransform2< double, 3 >.

Definition at line 114 of file itkElasticBodySplineKernelTransform2.h.

◆ 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

◆ operator=()

template<class TScalarType = double, unsigned int NDimensions = 3>
void itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >::operator= ( const Self )
private

◆ 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)
inlineoverride

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

Definition at line 92 of file itkElasticBodySplineKernelTransform2.h.

◆ SetPoissonRatio()

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

Convenience method

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



Generated on OURCE_DATE_EPOCH for elastix by doxygen 1.9.1 elastix logo