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

#include <itkWeightedCombinationTransform.h>

Detailed Description

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

Implements a weighted linear combination of multiple transforms.

This transform implements:

\[T(x) = x + \sum_i w_i ( T_i(x) - x )\]

where $w_i$ are the weights, which are the transform's parameters, and can be set/get by Set/GetParameters().

Alternatively, if the NormalizeWeights parameter is set to true, the transformation is as follows:

\[T(x) = \sum_i w_i T_i(x) / \sum_i w_i\]

Definition at line 42 of file itkWeightedCombinationTransform.h.

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

Public Types

using ConstPointer = SmartPointer<const Self>
 
using Pointer = SmartPointer<Self>
 
using Self = WeightedCombinationTransform
 
using Superclass = AdvancedTransform<TScalarType, NInputDimensions, NOutputDimensions>
 
using TransformContainerType = std::vector<TransformPointer>
 
using TransformPointer = typename TransformType::Pointer
 
using TransformType = Transform<TScalarType, NInputDimensions, NOutputDimensions>
 
- Public Types inherited from itk::AdvancedTransform< TScalarType, 3, 3 >
using ConstPointer
 
using InternalMatrixType
 
using InverseTransformBaseType
 
using JacobianOfSpatialHessianType
 
using JacobianOfSpatialJacobianType
 
using MovingImageGradientType
 
using MovingImageGradientValueType
 
using NonZeroJacobianIndicesType
 
using Pointer
 
using Self
 
using SpatialHessianType
 
using SpatialJacobianType
 
using Superclass
 
using TransformType
 
using TransformTypeConstPointer
 
using TransformTypePointer
 

Public Member Functions

virtual const char * GetClassName () const
 
const ParametersType & GetFixedParameters () const override
 
void GetJacobian (const InputPointType &inputPoint, JacobianType &jac, NonZeroJacobianIndicesType &nzji) const override
 
void GetJacobianOfSpatialHessian (const InputPointType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const override
 
void GetJacobianOfSpatialHessian (const InputPointType &, SpatialHessianType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &, SpatialJacobianType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const override
 
virtual bool GetNormalizeWeights () const
 
NumberOfParametersType GetNumberOfParameters () const override
 
void GetSpatialHessian (const InputPointType &, SpatialHessianType &) const override
 
void GetSpatialJacobian (const InputPointType &, SpatialJacobianType &) const override
 
const TransformContainerTypeGetTransformContainer () const
 
 ITK_DISALLOW_COPY_AND_MOVE (WeightedCombinationTransform)
 
 itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions)
 
 itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions)
 
void SetFixedParameters (const ParametersType &) override
 
virtual void SetNormalizeWeights (bool _arg)
 
void SetParameters (const ParametersType &param) override
 
virtual void SetTransformContainer (const TransformContainerType &transformContainer)
 
OutputCovariantVectorType TransformCovariantVector (const InputCovariantVectorType &) const override
 
OutputPointType TransformPoint (const InputPointType &inputPoint) const override
 
OutputVectorType TransformVector (const InputVectorType &) const override
 
OutputVnlVectorType TransformVector (const InputVnlVectorType &) const override
 
- Public Member Functions inherited from itk::AdvancedTransform< TScalarType, 3, 3 >
void ComputeJacobianWithRespectToParameters (const InputPointType &, JacobianType &) const override
 
virtual void EvaluateJacobianWithImageGradientProduct (const InputPointType &inputPoint, const MovingImageGradientType &movingImageGradient, DerivativeType &imageJacobian, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
virtual bool GetHasNonZeroJacobianOfSpatialHessian () const
 
virtual bool GetHasNonZeroSpatialHessian () const
 
virtual NumberOfParametersType GetNumberOfNonZeroJacobianIndices () const
 
 ITK_DISALLOW_COPY_AND_MOVE (AdvancedTransform)
 
 itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions)
 
 itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

 WeightedCombinationTransform ()
 
 ~WeightedCombinationTransform () override=default
 
- Protected Member Functions inherited from itk::AdvancedTransform< TScalarType, 3, 3 >
 AdvancedTransform ()=default
 
 ~AdvancedTransform () override=default
 

Protected Attributes

NonZeroJacobianIndicesType m_NonZeroJacobianIndices {}
 
double m_SumOfWeights {}
 
TransformContainerType m_TransformContainer {}
 
- Protected Attributes inherited from itk::AdvancedTransform< TScalarType, 3, 3 >
bool m_HasNonZeroJacobianOfSpatialHessian
 
bool m_HasNonZeroSpatialHessian
 

Private Attributes

bool m_NormalizeWeights {}
 

Member Typedef Documentation

◆ ConstPointer

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

Definition at line 52 of file itkWeightedCombinationTransform.h.

◆ Pointer

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

Definition at line 51 of file itkWeightedCombinationTransform.h.

◆ Self

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

Standard class typedefs.

Definition at line 49 of file itkWeightedCombinationTransform.h.

◆ Superclass

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

Definition at line 50 of file itkWeightedCombinationTransform.h.

◆ TransformContainerType

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::TransformContainerType = std::vector<TransformPointer>

Definition at line 87 of file itkWeightedCombinationTransform.h.

◆ TransformPointer

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
using itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::TransformPointer = typename TransformType::Pointer
Todo
: shouldn't these be ConstPointers?

Definition at line 86 of file itkWeightedCombinationTransform.h.

◆ TransformType

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

New typedefs in this class:

Definition at line 84 of file itkWeightedCombinationTransform.h.

Constructor & Destructor Documentation

◆ WeightedCombinationTransform()

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

◆ ~WeightedCombinationTransform()

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

Member Function Documentation

◆ GetClassName()

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

Run-time type information (and related methods).

Reimplemented from itk::AdvancedTransform< TScalarType, 3, 3 >.

◆ GetFixedParameters()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
const ParametersType & itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetFixedParameters ( ) const
inlineoverride

Get the Fixed Parameters.

Definition at line 141 of file itkWeightedCombinationTransform.h.

◆ GetJacobian()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobian ( const InputPointType & inputPoint,
JacobianType & jac,
NonZeroJacobianIndicesType & nzji ) const
overridevirtual

This returns a sparse version of the Jacobian of the transformation. In this class however, the Jacobian is not sparse. However, it is a useful function, since the Jacobian is passed by reference, which makes it thread-safe, unlike the normal GetJacobian function.

Implements itk::AdvancedTransform< TScalarType, 3, 3 >.

◆ GetJacobianOfSpatialHessian() [1/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobianOfSpatialHessian ( const InputPointType & ,
JacobianOfSpatialHessianType & ,
NonZeroJacobianIndicesType &  ) const
inlineoverridevirtual

◆ GetJacobianOfSpatialHessian() [2/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobianOfSpatialHessian ( const InputPointType & ,
SpatialHessianType & ,
JacobianOfSpatialHessianType & ,
NonZeroJacobianIndicesType &  ) const
inlineoverridevirtual

◆ GetJacobianOfSpatialJacobian() [1/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobianOfSpatialJacobian ( const InputPointType & ,
JacobianOfSpatialJacobianType & ,
NonZeroJacobianIndicesType &  ) const
inlineoverridevirtual

◆ GetJacobianOfSpatialJacobian() [2/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobianOfSpatialJacobian ( const InputPointType & ,
SpatialJacobianType & ,
JacobianOfSpatialJacobianType & ,
NonZeroJacobianIndicesType &  ) const
inlineoverridevirtual

◆ GetNormalizeWeights()

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

◆ GetNumberOfParameters()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
NumberOfParametersType itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetNumberOfParameters ( ) const
inlineoverride

Return the number of sub-transforms that have been set.

Definition at line 150 of file itkWeightedCombinationTransform.h.

◆ GetSpatialHessian()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetSpatialHessian ( const InputPointType & ,
SpatialHessianType &  ) const
inlineoverridevirtual

◆ GetSpatialJacobian()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetSpatialJacobian ( const InputPointType & ,
SpatialJacobianType &  ) const
inlineoverridevirtual

Must be provided.

Implements itk::AdvancedTransform< TScalarType, 3, 3 >.

Definition at line 188 of file itkWeightedCombinationTransform.h.

◆ GetTransformContainer()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
const TransformContainerType & itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetTransformContainer ( ) const
inline

Return the vector of sub-transforms by const reference. So, if you want to add a sub-transform, you should do something like this: TransformContainerType vec = transform->GetTransformContainer(); vec.push_back( newsubtransformPointer ); transform->SetTransformContainer( vec ); Although perhaps not really efficient, this makes sure that this->Modified() is called when the transform container is updated.

Definition at line 180 of file itkWeightedCombinationTransform.h.

◆ ITK_DISALLOW_COPY_AND_MOVE()

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

◆ itkStaticConstMacro() [1/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
itk::WeightedCombinationTransform< 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::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::itkStaticConstMacro ( OutputSpaceDimension ,
unsigned int ,
NOutputDimensions  )

◆ New()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
static Pointer itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::New ( )
static

New method for creating an object using a factory.

◆ SetFixedParameters()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::SetFixedParameters ( const ParametersType & )
inlineoverride

Set the fixed parameters.

Definition at line 133 of file itkWeightedCombinationTransform.h.

◆ SetNormalizeWeights()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::SetNormalizeWeights ( bool _arg)
virtual

Set/get if the weights (parameters) should be normalized. Default: false.

◆ SetParameters()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::SetParameters ( const ParametersType & param)
override

Set the parameters. Computes the sum of weights (which is the normalization term). And checks if the number of parameters is correct

◆ SetTransformContainer()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
virtual void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::SetTransformContainer ( const TransformContainerType & transformContainer)
inlinevirtual

Set the vector of subtransforms. Calls a this->Modified()

Definition at line 163 of file itkWeightedCombinationTransform.h.

◆ TransformCovariantVector()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
OutputCovariantVectorType itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::TransformCovariantVector ( const InputCovariantVectorType & ) const
inlineoverride

Definition at line 110 of file itkWeightedCombinationTransform.h.

◆ TransformPoint()

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
OutputPointType itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::TransformPoint ( const InputPointType & inputPoint) const
override

Method to transform a point.

◆ TransformVector() [1/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
OutputVectorType itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::TransformVector ( const InputVectorType & ) const
inlineoverride

These vector transforms are not implemented for this transform.

Definition at line 95 of file itkWeightedCombinationTransform.h.

◆ TransformVector() [2/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
OutputVnlVectorType itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::TransformVector ( const InputVnlVectorType & ) const
inlineoverride

Definition at line 102 of file itkWeightedCombinationTransform.h.

Field Documentation

◆ m_NonZeroJacobianIndices

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
NonZeroJacobianIndicesType itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::m_NonZeroJacobianIndices {}
protected

Precomputed nonzero Jacobian indices (simply all params)

Definition at line 247 of file itkWeightedCombinationTransform.h.

◆ m_NormalizeWeights

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
bool itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::m_NormalizeWeights {}
private

Definition at line 254 of file itkWeightedCombinationTransform.h.

◆ m_SumOfWeights

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
double itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::m_SumOfWeights {}
protected

Definition at line 244 of file itkWeightedCombinationTransform.h.

◆ m_TransformContainer

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
TransformContainerType itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::m_TransformContainer {}
protected

Definition at line 243 of file itkWeightedCombinationTransform.h.



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