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 Member Functions | Protected Attributes | Private Attributes
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 >:
Inheritance graph
[legend]

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, NInputDimensions, NOutputDimensions >
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 const char * GetClassName () const
 
const ParametersType & GetFixedParameters () const override
 
void GetJacobian (const InputPointType &inputPoint, JacobianType &jac, NonZeroJacobianIndicesType &nzji) 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 bool GetNormalizeWeights () const
 
NumberOfParametersType GetNumberOfParameters () const override
 
void GetSpatialHessian (const InputPointType &inputPoint, SpatialHessianType &sh) const override
 
void GetSpatialJacobian (const InputPointType &inputPoint, SpatialJacobianType &sj) 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, NInputDimensions, NOutputDimensions >
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 ()
 

Protected Member Functions

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

Protected Attributes

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

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, NInputDimensions, NOutputDimensions >.

◆ 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 142 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, NInputDimensions, NOutputDimensions >.

◆ GetJacobianOfSpatialHessian() [1/2]

template<class TScalarType , unsigned int NInputDimensions = 3, unsigned int NOutputDimensions = 3>
void itk::WeightedCombinationTransform< TScalarType, NInputDimensions, NOutputDimensions >::GetJacobianOfSpatialHessian ( const InputPointType &  inputPoint,
JacobianOfSpatialHessianType jsh,
NonZeroJacobianIndicesType nonZeroJacobianIndices 
) 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 &  inputPoint,
SpatialHessianType sh,
JacobianOfSpatialHessianType jsh,
NonZeroJacobianIndicesType nonZeroJacobianIndices 
) 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 &  inputPoint,
JacobianOfSpatialJacobianType jsj,
NonZeroJacobianIndicesType nonZeroJacobianIndices 
) 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 &  inputPoint,
SpatialJacobianType sj,
JacobianOfSpatialJacobianType jsj,
NonZeroJacobianIndicesType nonZeroJacobianIndices 
) 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 151 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 &  inputPoint,
SpatialHessianType sh 
) const
inlineoverridevirtual

◆ GetSpatialJacobian()

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

◆ 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 181 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 134 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 164 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 111 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 103 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 248 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 251 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 245 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 244 of file itkWeightedCombinationTransform.h.



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