go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions > Class Template Referenceabstract

#include <itkAdvancedTransform.h>

Detailed Description

template<class TScalarType, unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
class itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >

Transform maps points, vectors and covariant vectors from an input space to an output space.

This abstract class define the generic interface for a geometrical transformation from one space to another. The class provides methods for mapping points, vectors and covariant vectors from the input space to the output space.

Given that transformation are not necessarily invertible, this basic class does not provide the methods for back transformation. Back transform methods are implemented in derived classes where appropriate.

Registration Framework Support
Typically a Transform class has several methods for setting its parameters. For use in the registration framework, the parameters must also be represented by an array of doubles to allow communication with generic optimizers. The Array of transformation parameters is set using the SetParameters() method.

Another requirement of the registration framework is the computation of the Jacobian of the transform T. In general, an ImageToImageMetric requires the knowledge of this Jacobian in order to compute the metric derivatives. The Jacobian is a matrix whose element are the partial derivatives of the transformation with respect to the array of parameters mu that defines the transform, evaluated at a point p: dT/dmu(p).

If penalty terms are included in the registration, the transforms also need to implement other derivatives of T. Often, penalty terms are functions of the spatial derivatives of T. Therefore, e.g. the SpatialJacobian dT/dx and the SpatialHessian d^2T/dx_idx_j require implementation. The GetValueAndDerivative() requires the d/dmu of those terms. Therefore, we additionally define GetJacobianOfSpatialJacobian() and GetJacobianOfSpatialHessian().

Definition at line 83 of file itkAdvancedTransform.h.

Inheritance diagram for itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >:

Public Types

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

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)
 

Protected Member Functions

 AdvancedTransform ()=default
 
 ~AdvancedTransform () override=default
 

Protected Attributes

bool m_HasNonZeroJacobianOfSpatialHessian { true }
 
bool m_HasNonZeroSpatialHessian { true }
 

Member Typedef Documentation

◆ ConstPointer

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::ConstPointer = SmartPointer<const Self>

Definition at line 92 of file itkAdvancedTransform.h.

◆ InternalMatrixType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::InternalMatrixType = typename SpatialJacobianType::InternalMatrixType

Definition at line 140 of file itkAdvancedTransform.h.

◆ InverseTransformBaseType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::InverseTransformBaseType = typename Superclass::InverseTransformBaseType

Definition at line 121 of file itkAdvancedTransform.h.

◆ JacobianOfSpatialHessianType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::JacobianOfSpatialHessianType = std::vector<SpatialHessianType>

Definition at line 139 of file itkAdvancedTransform.h.

◆ JacobianOfSpatialJacobianType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::JacobianOfSpatialJacobianType = std::vector<SpatialJacobianType>

Definition at line 135 of file itkAdvancedTransform.h.

◆ MovingImageGradientType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::MovingImageGradientType = OutputCovariantVectorType

Typedef for the moving image gradient type. This type is defined by the B-spline interpolator as typedef CovariantVector< RealType, ImageDimension > As we cannot access this type we simply re-construct it to be identical.

Definition at line 147 of file itkAdvancedTransform.h.

◆ MovingImageGradientValueType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::MovingImageGradientValueType = typename MovingImageGradientType::ValueType

Definition at line 148 of file itkAdvancedTransform.h.

◆ NonZeroJacobianIndicesType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::NonZeroJacobianIndicesType = std::vector<unsigned long>

Types for the (Spatial)Jacobian/Hessian. Using an itk::FixedArray instead of an std::vector gives a performance gain for the SpatialHessianType.

Definition at line 133 of file itkAdvancedTransform.h.

◆ Pointer

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::Pointer = SmartPointer<Self>

Definition at line 91 of file itkAdvancedTransform.h.

◆ Self

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::Self = AdvancedTransform

Standard class typedefs.

Definition at line 89 of file itkAdvancedTransform.h.

◆ SpatialHessianType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::SpatialHessianType
Initial value:
FixedArray<Matrix<ScalarType, InputSpaceDimension, InputSpaceDimension>, OutputSpaceDimension>

Definition at line 137 of file itkAdvancedTransform.h.

◆ SpatialJacobianType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::SpatialJacobianType = Matrix<ScalarType, OutputSpaceDimension, InputSpaceDimension>

Definition at line 134 of file itkAdvancedTransform.h.

◆ Superclass

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::Superclass = Transform<TScalarType, NInputDimensions, NOutputDimensions>

Definition at line 90 of file itkAdvancedTransform.h.

◆ TransformType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::TransformType = Transform<TScalarType, NInputDimensions, NOutputDimensions>

Transform typedefs for the from Superclass.

Definition at line 125 of file itkAdvancedTransform.h.

◆ TransformTypeConstPointer

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::TransformTypeConstPointer = typename TransformType::ConstPointer

Definition at line 127 of file itkAdvancedTransform.h.

◆ TransformTypePointer

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::TransformTypePointer = typename TransformType::Pointer

Definition at line 126 of file itkAdvancedTransform.h.

Constructor & Destructor Documentation

◆ AdvancedTransform()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::AdvancedTransform ( )
protecteddefault

◆ ~AdvancedTransform()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::~AdvancedTransform ( )
overrideprotecteddefault

Member Function Documentation

◆ ComputeJacobianWithRespectToParameters()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::ComputeJacobianWithRespectToParameters ( const InputPointType & ,
JacobianType &  ) const
inlineoverride

Override some pure virtual ITK4 functions.

Definition at line 229 of file itkAdvancedTransform.h.

◆ EvaluateJacobianWithImageGradientProduct()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::EvaluateJacobianWithImageGradientProduct ( const InputPointType & inputPoint,
const MovingImageGradientType & movingImageGradient,
DerivativeType & imageJacobian,
NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
virtual

◆ GetClassName()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual const char * itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetClassName ( ) const
virtual

New method for creating an object using a factory. Run-time type information (and related methods).

Reimplemented in elastix::AdvancedAffineTransformElastix< TElastix >, elastix::AdvancedBSplineTransform< TElastix >, elastix::AdvancedTransformAdapter< TScalarType, NDimensions >, elastix::AffineDTITransformElastix< TElastix >, elastix::AffineLogStackTransform< TElastix >, elastix::AffineLogTransformElastix< TElastix >, elastix::BSplineStackTransform< TElastix >, elastix::DeformationFieldTransform< TElastix >, elastix::EulerStackTransform< TElastix >, elastix::EulerTransformElastix< TElastix >, elastix::ExternalTransform< TElastix >, elastix::MultiBSplineTransformWithNormal< TElastix >, elastix::RecursiveBSplineTransform< TElastix >, elastix::SimilarityTransformElastix< TElastix >, elastix::SplineKernelTransform< TElastix >, elastix::TranslationStackTransform< TElastix >, elastix::TranslationTransformElastix< TElastix >, elastix::WeightedCombinationTransformElastix< TElastix >, itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::AdvancedBSplineDeformableTransform< double, 3, 0 >, itk::AdvancedBSplineDeformableTransform< double, 3, 3 >, itk::AdvancedBSplineDeformableTransform< float, 3, 3 >, itk::AdvancedBSplineDeformableTransformBase< TScalarType, NDimensions >, itk::AdvancedBSplineDeformableTransformBase< double, 3 >, itk::AdvancedBSplineDeformableTransformBase< double, NDimensions >, itk::AdvancedBSplineDeformableTransformBase< float, NDimensions >, itk::AdvancedCombinationTransform< TScalarType, NDimensions >, itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >, itk::AdvancedCombinationTransform< float, 3 >, itk::AdvancedEuler3DTransform< TScalarType >, itk::AdvancedEuler3DTransform< float >, itk::AdvancedIdentityTransform< TScalarType, NDimensions >, itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::AdvancedMatrixOffsetTransformBase< double, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< double, 3, 3 >, itk::AdvancedMatrixOffsetTransformBase< float, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< float, 3, 3 >, itk::AdvancedRigid2DTransform< TScalarType >, itk::AdvancedRigid2DTransform< double >, itk::AdvancedRigid2DTransform< float >, itk::AdvancedRigid3DTransform< TScalarType >, itk::AdvancedRigid3DTransform< double >, itk::AdvancedRigid3DTransform< float >, itk::AdvancedSimilarity2DTransform< TScalarType >, itk::AdvancedSimilarity2DTransform< float >, itk::AdvancedSimilarity3DTransform< TScalarType >, itk::AdvancedSimilarity3DTransform< float >, itk::AdvancedTranslationTransform< TScalarType, NDimensions >, itk::AdvancedTranslationTransform< float, 3 >, itk::AdvancedVersorRigid3DTransform< TScalarType >, itk::AdvancedVersorRigid3DTransform< double >, itk::AdvancedVersorRigid3DTransform< float >, itk::AdvancedVersorTransform< TScalarType >, itk::AdvancedVersorTransform< double >, itk::AdvancedVersorTransform< float >, itk::AffineDTI2DTransform< TScalarType >, itk::AffineDTI3DTransform< TScalarType >, itk::AffineLogStackTransform< NDimension >, itk::AffineLogTransform< TScalarType, Dimension >, itk::BSplineStackTransform< NDimension >, itk::CyclicBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::DeformationFieldInterpolatingTransform< TScalarType, NDimensions, TComponentType >, itk::DeformationFieldRegulizer< itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension > >, itk::DeformationVectorFieldTransform< TScalarType, NDimensions >, itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >, itk::EulerStackTransform< NDimension >, itk::GPUAdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder, TParentTransform >, itk::GPUAdvancedCombinationTransform< TScalarType, NDimensions, TParentTransform >, itk::GPUAdvancedEuler2DTransform< TScalarType, TParentTransform >, itk::GPUAdvancedEuler3DTransform< TScalarType, TParentTransform >, itk::GPUAdvancedMatrixOffsetTransformBase< TScalarType, NDimensions, TParentTransform >, itk::GPUAdvancedSimilarity2DTransform< TScalarType, TParentTransform >, itk::GPUAdvancedSimilarity3DTransform< TScalarType, TParentTransform >, itk::GPUAdvancedTranslationTransform< TScalarType, NDimensions, TParentTransform >, itk::KernelTransform2< TScalarType, NDimensions >, itk::KernelTransform2< double, 3 >, itk::KernelTransform2< TScalarType, 3 >, itk::MultiBSplineDeformableTransformWithNormal< TScalarType, NDimensions, VSplineOrder >, itk::RecursiveBSplineTransform< TScalarType, NDimensions, VSplineOrder >, itk::StackTransform< TScalarType, NInputDimensions, NOutputDimensions >, itk::StackTransform< elx::ElastixBase::CoordRepType, NDimension, NDimension >, itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >, itk::TranslationStackTransform< NDimension >, itk::VolumeSplineKernelTransform2< TScalarType, NDimensions >, and itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >.

◆ GetHasNonZeroJacobianOfSpatialHessian()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual bool itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetHasNonZeroJacobianOfSpatialHessian ( ) const
virtual

◆ GetHasNonZeroSpatialHessian()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual bool itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetHasNonZeroSpatialHessian ( ) const
virtual

◆ GetJacobian()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobian ( const InputPointType & inputPoint,
JacobianType & j,
NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
pure virtual

This returns a sparse version of the Jacobian of the transformation.

The Jacobian is expressed as a vector of partial derivatives of the transformation components with respect to the parameters $\mu$ that define the transformation $T$, evaluated at a point $p$.

\[
 J=\left[ \begin{array}{cccc}
 \frac{\partial T_{1}}{\partial \mu_{1}}(p) &
 \frac{\partial T_{1}}{\partial \mu_{2}}(p) &
 \cdots &
 \frac{\partial T_{1}}{\partial \mu_{m}}(p) \\
 \frac{\partial T_{2}}{\partial \mu_{1}}(p) &
 \frac{\partial T_{2}}{\partial \mu_{2}}(p) &
 \cdots &
 \frac{\partial T_{2}}{\partial \mu_{m}}(p) \\
 \vdots & \vdots & \ddots & \vdots \\
 \frac{\partial T_{d}}{\partial \mu_{1}}(p) &
 \frac{\partial T_{d}}{\partial \mu_{2}}(p) &
 \cdots &
 \frac{\partial T_{d}}{\partial \mu_{m}}(p)
 \end{array}\right],
\]

with $m$ the number of parameters, i.e. the size of $\mu$, and $d$ the dimension of the image.

Implemented in elastix::AdvancedTransformAdapter< TScalarType, NDimensions >, itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::AdvancedBSplineDeformableTransform< double, 3, 0 >, itk::AdvancedBSplineDeformableTransform< double, 3, 3 >, itk::AdvancedBSplineDeformableTransform< float, 3, 3 >, itk::AdvancedCombinationTransform< TScalarType, NDimensions >, itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >, itk::AdvancedCombinationTransform< float, 3 >, itk::AdvancedEuler3DTransform< TScalarType >, itk::AdvancedEuler3DTransform< float >, itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::AdvancedMatrixOffsetTransformBase< double, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< double, 3, 3 >, itk::AdvancedMatrixOffsetTransformBase< float, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< float, 3, 3 >, itk::AdvancedRigid2DTransform< TScalarType >, itk::AdvancedRigid2DTransform< double >, itk::AdvancedRigid2DTransform< float >, itk::AdvancedSimilarity2DTransform< TScalarType >, itk::AdvancedSimilarity2DTransform< float >, itk::AdvancedSimilarity3DTransform< TScalarType >, itk::AdvancedSimilarity3DTransform< float >, itk::AdvancedVersorRigid3DTransform< TScalarType >, itk::AdvancedVersorRigid3DTransform< double >, itk::AdvancedVersorRigid3DTransform< float >, itk::AdvancedVersorTransform< TScalarType >, itk::AdvancedVersorTransform< double >, itk::AdvancedVersorTransform< float >, itk::AffineDTI2DTransform< TScalarType >, itk::AffineDTI3DTransform< TScalarType >, itk::AffineLogTransform< TScalarType, Dimension >, itk::CyclicBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::DeformationFieldInterpolatingTransform< TScalarType, NDimensions, TComponentType >, itk::KernelTransform2< TScalarType, NDimensions >, itk::KernelTransform2< double, 3 >, itk::KernelTransform2< TScalarType, 3 >, itk::MultiBSplineDeformableTransformWithNormal< TScalarType, NDimensions, VSplineOrder >, itk::RecursiveBSplineTransform< TScalarType, NDimensions, VSplineOrder >, itk::StackTransform< TScalarType, NInputDimensions, NOutputDimensions >, itk::StackTransform< elx::ElastixBase::CoordRepType, NDimension, NDimension >, and itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >.

◆ GetJacobianOfSpatialHessian() [1/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobianOfSpatialHessian ( const InputPointType & inputPoint,
JacobianOfSpatialHessianType & jsh,
NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
pure virtual

Compute the Jacobian of the spatial Hessian of the transformation.

The Jacobian of the spatial Hessian is the derivative of the spatial Hessian to the transformation parameters $\mu$, evaluated at a point $p$.

Implemented in elastix::AdvancedTransformAdapter< TScalarType, NDimensions >, itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::AdvancedBSplineDeformableTransform< double, 3, 0 >, itk::AdvancedBSplineDeformableTransform< double, 3, 3 >, itk::AdvancedBSplineDeformableTransform< float, 3, 3 >, itk::AdvancedCombinationTransform< TScalarType, NDimensions >, itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >, itk::AdvancedCombinationTransform< float, 3 >, itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::AdvancedMatrixOffsetTransformBase< double, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< double, 3, 3 >, itk::AdvancedMatrixOffsetTransformBase< float, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< float, 3, 3 >, itk::DeformationFieldInterpolatingTransform< TScalarType, NDimensions, TComponentType >, itk::KernelTransform2< TScalarType, NDimensions >, itk::KernelTransform2< double, 3 >, itk::KernelTransform2< TScalarType, 3 >, itk::MultiBSplineDeformableTransformWithNormal< TScalarType, NDimensions, VSplineOrder >, itk::RecursiveBSplineTransform< TScalarType, NDimensions, VSplineOrder >, itk::StackTransform< TScalarType, NInputDimensions, NOutputDimensions >, itk::StackTransform< elx::ElastixBase::CoordRepType, NDimension, NDimension >, and itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >.

◆ GetJacobianOfSpatialHessian() [2/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobianOfSpatialHessian ( const InputPointType & inputPoint,
SpatialHessianType & sh,
JacobianOfSpatialHessianType & jsh,
NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
pure virtual

Compute both the spatial Hessian and the Jacobian of the spatial Hessian of the transformation.

Implemented in elastix::AdvancedTransformAdapter< TScalarType, NDimensions >, itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::AdvancedBSplineDeformableTransform< double, 3, 0 >, itk::AdvancedBSplineDeformableTransform< double, 3, 3 >, itk::AdvancedBSplineDeformableTransform< float, 3, 3 >, itk::AdvancedCombinationTransform< TScalarType, NDimensions >, itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >, itk::AdvancedCombinationTransform< float, 3 >, itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::AdvancedMatrixOffsetTransformBase< double, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< double, 3, 3 >, itk::AdvancedMatrixOffsetTransformBase< float, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< float, 3, 3 >, itk::DeformationFieldInterpolatingTransform< TScalarType, NDimensions, TComponentType >, itk::KernelTransform2< TScalarType, NDimensions >, itk::KernelTransform2< double, 3 >, itk::KernelTransform2< TScalarType, 3 >, itk::MultiBSplineDeformableTransformWithNormal< TScalarType, NDimensions, VSplineOrder >, itk::RecursiveBSplineTransform< TScalarType, NDimensions, VSplineOrder >, itk::StackTransform< TScalarType, NInputDimensions, NOutputDimensions >, itk::StackTransform< elx::ElastixBase::CoordRepType, NDimension, NDimension >, and itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >.

◆ GetJacobianOfSpatialJacobian() [1/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobianOfSpatialJacobian ( const InputPointType & inputPoint,
JacobianOfSpatialJacobianType & jsj,
NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
pure virtual

Compute the Jacobian of the spatial Jacobian of the transformation.

The Jacobian of the spatial Jacobian is the derivative of the spatial Jacobian to the transformation parameters $\mu$, evaluated at a point $p$.

Implemented in elastix::AdvancedTransformAdapter< TScalarType, NDimensions >, itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::AdvancedBSplineDeformableTransform< double, 3, 0 >, itk::AdvancedBSplineDeformableTransform< double, 3, 3 >, itk::AdvancedBSplineDeformableTransform< float, 3, 3 >, itk::AdvancedCombinationTransform< TScalarType, NDimensions >, itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >, itk::AdvancedCombinationTransform< float, 3 >, itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::AdvancedMatrixOffsetTransformBase< double, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< double, 3, 3 >, itk::AdvancedMatrixOffsetTransformBase< float, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< float, 3, 3 >, itk::DeformationFieldInterpolatingTransform< TScalarType, NDimensions, TComponentType >, itk::KernelTransform2< TScalarType, NDimensions >, itk::KernelTransform2< double, 3 >, itk::KernelTransform2< TScalarType, 3 >, itk::MultiBSplineDeformableTransformWithNormal< TScalarType, NDimensions, VSplineOrder >, itk::RecursiveBSplineTransform< TScalarType, NDimensions, VSplineOrder >, itk::StackTransform< TScalarType, NInputDimensions, NOutputDimensions >, itk::StackTransform< elx::ElastixBase::CoordRepType, NDimension, NDimension >, and itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >.

◆ GetJacobianOfSpatialJacobian() [2/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobianOfSpatialJacobian ( const InputPointType & inputPoint,
SpatialJacobianType & sj,
JacobianOfSpatialJacobianType & jsj,
NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
pure virtual

Compute both the spatial Jacobian and the Jacobian of the spatial Jacobian of the transformation.

Implemented in elastix::AdvancedTransformAdapter< TScalarType, NDimensions >, itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::AdvancedBSplineDeformableTransform< double, 3, 0 >, itk::AdvancedBSplineDeformableTransform< double, 3, 3 >, itk::AdvancedBSplineDeformableTransform< float, 3, 3 >, itk::AdvancedCombinationTransform< TScalarType, NDimensions >, itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >, itk::AdvancedCombinationTransform< float, 3 >, itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::AdvancedMatrixOffsetTransformBase< double, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< double, 3, 3 >, itk::AdvancedMatrixOffsetTransformBase< float, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< float, 3, 3 >, itk::DeformationFieldInterpolatingTransform< TScalarType, NDimensions, TComponentType >, itk::KernelTransform2< TScalarType, NDimensions >, itk::KernelTransform2< double, 3 >, itk::KernelTransform2< TScalarType, 3 >, itk::MultiBSplineDeformableTransformWithNormal< TScalarType, NDimensions, VSplineOrder >, itk::RecursiveBSplineTransform< TScalarType, NDimensions, VSplineOrder >, itk::StackTransform< TScalarType, NInputDimensions, NOutputDimensions >, itk::StackTransform< elx::ElastixBase::CoordRepType, NDimension, NDimension >, and itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >.

◆ GetNumberOfNonZeroJacobianIndices()

◆ GetSpatialHessian()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetSpatialHessian ( const InputPointType & inputPoint,
SpatialHessianType & sh ) const
pure virtual

Compute the spatial Hessian of the transformation.

The spatial Hessian is the vector of matrices of partial second order derivatives of the transformation components with respect to the spatial position $x$, evaluated at a point $p$.

\[
 sH=\left[ \begin{array}{cc}
 \frac{\partial^2 T_{i}}{\partial x_{1} \partial x_{1}}(p) &
 \frac{\partial^2 T_{i}}{\partial x_{1} \partial x_{2}}(p) \\
 \frac{\partial^2 T_{i}}{\partial x_{1} \partial x_{2}}(p) &
 \frac{\partial^2 T_{i}}{\partial x_{2} \partial x_{2}}(p) \\
 \end{array}\right],
\]

with i the i-th component of the transformation.

Implemented in elastix::AdvancedTransformAdapter< TScalarType, NDimensions >, itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::AdvancedBSplineDeformableTransform< double, 3, 0 >, itk::AdvancedBSplineDeformableTransform< double, 3, 3 >, itk::AdvancedBSplineDeformableTransform< float, 3, 3 >, itk::AdvancedCombinationTransform< TScalarType, NDimensions >, itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >, itk::AdvancedCombinationTransform< float, 3 >, itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::AdvancedMatrixOffsetTransformBase< double, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< double, 3, 3 >, itk::AdvancedMatrixOffsetTransformBase< float, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< float, 3, 3 >, itk::DeformationFieldInterpolatingTransform< TScalarType, NDimensions, TComponentType >, itk::KernelTransform2< TScalarType, NDimensions >, itk::KernelTransform2< double, 3 >, itk::KernelTransform2< TScalarType, 3 >, itk::MultiBSplineDeformableTransformWithNormal< TScalarType, NDimensions, VSplineOrder >, itk::RecursiveBSplineTransform< TScalarType, NDimensions, VSplineOrder >, itk::StackTransform< TScalarType, NInputDimensions, NOutputDimensions >, itk::StackTransform< elx::ElastixBase::CoordRepType, NDimension, NDimension >, and itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >.

◆ GetSpatialJacobian()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetSpatialJacobian ( const InputPointType & inputPoint,
SpatialJacobianType & sj ) const
pure virtual

Compute the spatial Jacobian of the transformation.

The spatial Jacobian is expressed as a vector of partial derivatives of the transformation components with respect to the spatial position $x$, evaluated at a point $p$.

\[
 sJ=\left[ \begin{array}{cccc}
 \frac{\partial T_{1}}{\partial x_{1}}(p) &
 \frac{\partial T_{1}}{\partial x_{2}}(p) &
 \cdots &
 \frac{\partial T_{1}}{\partial x_{m}}(p) \\
 \frac{\partial T_{2}}{\partial x_{1}}(p) &
 \frac{\partial T_{2}}{\partial x_{2}}(p) &
 \cdots &
 \frac{\partial T_{2}}{\partial x_{m}}(p) \\
 \vdots & \vdots & \ddots & \vdots \\
 \frac{\partial T_{d}}{\partial x_{1}}(p) &
 \frac{\partial T_{d}}{\partial x_{2}}(p) &
 \cdots &
 \frac{\partial T_{d}}{\partial x_{m}}(p)
 \end{array}\right],
\]

with $m$ the number of parameters, i.e. the size of $\mu$, and $d$ the dimension of the image.

Implemented in elastix::AdvancedTransformAdapter< TScalarType, NDimensions >, itk::AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::AdvancedBSplineDeformableTransform< double, 3, 0 >, itk::AdvancedBSplineDeformableTransform< double, 3, 3 >, itk::AdvancedBSplineDeformableTransform< float, 3, 3 >, itk::AdvancedCombinationTransform< TScalarType, NDimensions >, itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >, itk::AdvancedCombinationTransform< float, 3 >, itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >, itk::AdvancedMatrixOffsetTransformBase< double, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< double, 3, 3 >, itk::AdvancedMatrixOffsetTransformBase< float, 2, 2 >, itk::AdvancedMatrixOffsetTransformBase< float, 3, 3 >, itk::CyclicBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >, itk::DeformationFieldInterpolatingTransform< TScalarType, NDimensions, TComponentType >, itk::KernelTransform2< TScalarType, NDimensions >, itk::KernelTransform2< double, 3 >, itk::KernelTransform2< TScalarType, 3 >, itk::MultiBSplineDeformableTransformWithNormal< TScalarType, NDimensions, VSplineOrder >, itk::RecursiveBSplineTransform< TScalarType, NDimensions, VSplineOrder >, itk::StackTransform< TScalarType, NInputDimensions, NOutputDimensions >, itk::StackTransform< elx::ElastixBase::CoordRepType, NDimension, NDimension >, and itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >.

◆ ITK_DISALLOW_COPY_AND_MOVE()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::ITK_DISALLOW_COPY_AND_MOVE ( AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions > )

◆ itkStaticConstMacro() [1/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::itkStaticConstMacro ( InputSpaceDimension ,
unsigned int ,
NInputDimensions  )

Dimension of the domain space.

◆ itkStaticConstMacro() [2/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::itkStaticConstMacro ( OutputSpaceDimension ,
unsigned int ,
NOutputDimensions  )

Field Documentation

◆ m_HasNonZeroJacobianOfSpatialHessian

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
bool itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::m_HasNonZeroJacobianOfSpatialHessian { true }
protected

Definition at line 304 of file itkAdvancedTransform.h.

◆ m_HasNonZeroSpatialHessian

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
bool itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >::m_HasNonZeroSpatialHessian { true }
protected

Definition at line 303 of file itkAdvancedTransform.h.



Generated on 2024-07-17 for elastix by doxygen 1.11.0 (9b424b03c9833626cd435af22a444888fbbb192d) elastix logo