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 | Private Member Functions | Private Attributes
itk::AdvancedVersorTransform< TScalarType > Class Template Reference

#include <itkAdvancedVersorTransform.h>

Detailed Description

template<class TScalarType = double>
class itk::AdvancedVersorTransform< TScalarType >

AdvancedVersorTransform of a vector space (e.g. space coordinates)

This transform applies a rotation to the space. Rotation is about a user specified center.

The serialization of the optimizable parameters is an array of 3 elements representing the right part of the versor.

The serialization of the fixed parameters is an array of 3 elements defining the center of rotation.

Todo:
Need to make sure that the translation parameters in the baseclass cannot be set to non-zero values.

NB: SK: this class is just to have the AdvancedSimilarity3DTransform. It is not complete.

Definition at line 67 of file itkAdvancedVersorTransform.h.

Inheritance diagram for itk::AdvancedVersorTransform< TScalarType >:
Inheritance graph
[legend]

Public Types

using AngleType = typename VersorType::ValueType
 
using AxisType = typename VersorType::VectorType
 
using CenterType = InputPointType
 
using ConstPointer = SmartPointer< const Self >
 
using InverseMatrixType = Matrix< TScalarType, Self::InputSpaceDimension, Self::OutputSpaceDimension >
 
using MatrixType = Matrix< TScalarType, Self::OutputSpaceDimension, Self::InputSpaceDimension >
 
using OffsetType = OutputVectorType
 
using Pointer = SmartPointer< Self >
 
using Self = AdvancedVersorTransform
 
using Superclass = AdvancedRigid3DTransform< TScalarType >
 
using VersorType = Versor< TScalarType >
 
using VnlQuaternionType = vnl_quaternion< TScalarType >
 
- Public Types inherited from itk::AdvancedRigid3DTransform< TScalarType >
using CenterType = InputPointType
 
using ConstPointer = SmartPointer< const Self >
 
using InverseMatrixType = Matrix< TScalarType, Self::InputSpaceDimension, Self::OutputSpaceDimension >
 
using MatrixType = Matrix< TScalarType, Self::OutputSpaceDimension, Self::InputSpaceDimension >
 
using OffsetType = OutputVectorType
 
using Pointer = SmartPointer< Self >
 
using Self = AdvancedRigid3DTransform
 
using Superclass = AdvancedMatrixOffsetTransformBase< TScalarType, 3, 3 >
 
using TranslationType = OutputVectorType
 
- Public Types inherited from itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >
using CenterType = InputPointType
 
using ConstPointer = SmartPointer< const Self >
 
using InverseMatrixType = Matrix< TScalarType, Self::InputSpaceDimension, Self::OutputSpaceDimension >
 
using MatrixType = Matrix< TScalarType, Self::OutputSpaceDimension, Self::InputSpaceDimension >
 
using OffsetType = OutputVectorType
 
using Pointer = SmartPointer< Self >
 
using Self = AdvancedMatrixOffsetTransformBase
 
using Superclass = AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
 
using TranslationType = OutputVectorType
 
- 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
 
void GetJacobian (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const override
 
const ParametersType & GetParameters () const override
 
virtual const VersorTypeGetVersor ()
 
 itkStaticConstMacro (InputSpaceDimension, unsigned int, 3)
 
 itkStaticConstMacro (OutputSpaceDimension, unsigned int, 3)
 
 itkStaticConstMacro (ParametersDimension, unsigned int, 3)
 
 itkStaticConstMacro (SpaceDimension, unsigned int, 3)
 
void SetIdentity () override
 
void SetParameters (const ParametersType &parameters) override
 
void SetRotation (const AxisType &axis, AngleType angle)
 
void SetRotation (const VersorType &versor)
 
- Public Member Functions inherited from itk::AdvancedRigid3DTransform< TScalarType >
virtual const char * GetClassName () const
 
 ITK_DISALLOW_COPY_AND_MOVE (AdvancedRigid3DTransform)
 
 itkStaticConstMacro (InputSpaceDimension, unsigned int, 3)
 
 itkStaticConstMacro (OutputSpaceDimension, unsigned int, 3)
 
 itkStaticConstMacro (ParametersDimension, unsigned int, 12)
 
 itkStaticConstMacro (SpaceDimension, unsigned int, 3)
 
bool MatrixIsOrthogonal (const MatrixType &matrix, double tol=1e-10)
 
void SetMatrix (const MatrixType &matrix) override
 
void SetParameters (const ParametersType &parameters) override
 
- Public Member Functions inherited from itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >
const InputPointType & GetCenter () const
 
virtual const char * GetClassName () const
 
const FixedParametersType & GetFixedParameters () const override
 
void GetJacobian (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const override
 
void GetJacobianOfSpatialHessian (const InputPointType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const override
 
void GetJacobianOfSpatialHessian (const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &, SpatialJacobianType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const override
 
const MatrixTypeGetMatrix () const
 
const ParametersType & GetParameters () const override
 
void GetSpatialHessian (const InputPointType &, SpatialHessianType &) const override
 
void GetSpatialJacobian (const InputPointType &, SpatialJacobianType &) const override
 
TransformCategoryEnum GetTransformCategory () const override
 
const OutputVectorType & GetTranslation () const
 
bool IsLinear () const override
 
 itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions)
 
 itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions)
 
 itkStaticConstMacro (ParametersDimension, unsigned int, NOutputDimensions *(NInputDimensions+1))
 
void SetCenter (const InputPointType &center)
 
void SetFixedParameters (const FixedParametersType &) override
 
virtual void SetIdentity ()
 
virtual void SetMatrix (const MatrixType &matrix)
 
void SetParameters (const ParametersType &parameters) override
 
void SetTranslation (const OutputVectorType &translation)
 
OutputCovariantVectorType TransformCovariantVector (const InputCovariantVectorType &vector) const override
 
OutputPointType TransformPoint (const InputPointType &point) const override
 
OutputVectorType TransformVector (const InputVectorType &vector) const override
 
OutputVnlVectorType TransformVector (const InputVnlVectorType &vector) 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 ()
 
- Static Public Member Functions inherited from itk::AdvancedRigid3DTransform< TScalarType >
static Pointer New ()
 
- Static Public Member Functions inherited from itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >
static Pointer New ()
 

Protected Member Functions

 AdvancedVersorTransform ()
 
 AdvancedVersorTransform (const MatrixType &matrix, const OutputVectorType &offset)
 
 AdvancedVersorTransform (unsigned int paramDims)
 
void ComputeMatrix () override
 
void ComputeMatrixParameters () override
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
void SetVarVersor (const VersorType &newVersor)
 
 ~AdvancedVersorTransform () override=default
 
- Protected Member Functions inherited from itk::AdvancedRigid3DTransform< TScalarType >
 AdvancedRigid3DTransform ()
 
 AdvancedRigid3DTransform (unsigned int paramDim)
 
void PrintSelf (std::ostream &os, Indent indent) const override
 
 ~AdvancedRigid3DTransform () override=default
 
- Protected Member Functions inherited from itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >
 AdvancedMatrixOffsetTransformBase (const unsigned int paramDims=ParametersDimension)
 
virtual void ComputeMatrix ()
 
virtual void ComputeMatrixParameters ()
 
virtual void ComputeOffset ()
 
void ComputeTranslation ()
 
const OutputVectorType & GetOffset () const
 
void PrintSelf (std::ostream &s, Indent indent) const override
 
void SetVarMatrix (const MatrixType &matrix)
 
void SetVarTranslation (const OutputVectorType &translation)
 
 ~AdvancedMatrixOffsetTransformBase () override=default
 
- Protected Member Functions inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
 AdvancedTransform ()=default
 
 ~AdvancedTransform () override=default
 

Private Member Functions

 AdvancedVersorTransform (const Self &other)
 
const Selfoperator= (const Self &)
 

Private Attributes

VersorType m_Versor
 

Additional Inherited Members

- Protected Attributes inherited from itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >
JacobianOfSpatialHessianType m_JacobianOfSpatialHessian
 
JacobianOfSpatialJacobianType m_JacobianOfSpatialJacobian
 
NonZeroJacobianIndicesType m_NonZeroJacobianIndices
 
SpatialHessianType m_SpatialHessian
 
- Protected Attributes inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
bool m_HasNonZeroJacobianOfSpatialHessian { true }
 
bool m_HasNonZeroSpatialHessian { true }
 

Member Typedef Documentation

◆ AngleType

template<class TScalarType = double>
using itk::AdvancedVersorTransform< TScalarType >::AngleType = typename VersorType::ValueType

Definition at line 119 of file itkAdvancedVersorTransform.h.

◆ AxisType

template<class TScalarType = double>
using itk::AdvancedVersorTransform< TScalarType >::AxisType = typename VersorType::VectorType

Definition at line 118 of file itkAdvancedVersorTransform.h.

◆ CenterType

template<class TScalarType = double>
using itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >::CenterType = InputPointType

Typedefs.

Definition at line 103 of file itkAdvancedMatrixOffsetTransformBase.h.

◆ ConstPointer

template<class TScalarType = double>
using itk::AdvancedVersorTransform< TScalarType >::ConstPointer = SmartPointer<const Self>

Definition at line 74 of file itkAdvancedVersorTransform.h.

◆ InverseMatrixType

template<class TScalarType = double>
using itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >::InverseMatrixType = Matrix<TScalarType, Self::InputSpaceDimension, Self::OutputSpaceDimension>

Standard inverse matrix type for this class.

Definition at line 102 of file itkAdvancedMatrixOffsetTransformBase.h.

◆ MatrixType

template<class TScalarType = double>
using itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >::MatrixType = Matrix<TScalarType, Self::OutputSpaceDimension, Self::InputSpaceDimension>

Standard matrix type for this class.

Definition at line 101 of file itkAdvancedMatrixOffsetTransformBase.h.

◆ OffsetType

template<class TScalarType = double>
using itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >::OffsetType = OutputVectorType

Definition at line 105 of file itkAdvancedMatrixOffsetTransformBase.h.

◆ Pointer

template<class TScalarType = double>
using itk::AdvancedVersorTransform< TScalarType >::Pointer = SmartPointer<Self>

Definition at line 73 of file itkAdvancedVersorTransform.h.

◆ Self

Standard Self Typedef

Definition at line 71 of file itkAdvancedVersorTransform.h.

◆ Superclass

Definition at line 72 of file itkAdvancedVersorTransform.h.

◆ VersorType

template<class TScalarType = double>
using itk::AdvancedVersorTransform< TScalarType >::VersorType = Versor<TScalarType>

Versor Type

Definition at line 117 of file itkAdvancedVersorTransform.h.

◆ VnlQuaternionType

template<class TScalarType = double>
using itk::AdvancedVersorTransform< TScalarType >::VnlQuaternionType = vnl_quaternion<TScalarType>

VnlQuaternion Type

Definition at line 114 of file itkAdvancedVersorTransform.h.

Constructor & Destructor Documentation

◆ AdvancedVersorTransform() [1/4]

template<class TScalarType = double>
itk::AdvancedVersorTransform< TScalarType >::AdvancedVersorTransform ( const MatrixType matrix,
const OutputVectorType &  offset 
)
protected

Construct an AdvancedVersorTransform object

◆ AdvancedVersorTransform() [2/4]

template<class TScalarType = double>
itk::AdvancedVersorTransform< TScalarType >::AdvancedVersorTransform ( unsigned int  paramDims)
protected

◆ AdvancedVersorTransform() [3/4]

template<class TScalarType = double>
itk::AdvancedVersorTransform< TScalarType >::AdvancedVersorTransform ( )
protected

◆ ~AdvancedVersorTransform()

template<class TScalarType = double>
itk::AdvancedVersorTransform< TScalarType >::~AdvancedVersorTransform ( )
overrideprotecteddefault

Destroy an AdvancedVersorTransform object

◆ AdvancedVersorTransform() [4/4]

template<class TScalarType = double>
itk::AdvancedVersorTransform< TScalarType >::AdvancedVersorTransform ( const Self other)
private

Copy a AdvancedVersorTransform object

Member Function Documentation

◆ ComputeMatrix()

template<class TScalarType = double>
void itk::AdvancedVersorTransform< TScalarType >::ComputeMatrix ( )
overrideprotectedvirtual

Compute Matrix Compute the components of the rotation matrix in the superclass

Reimplemented from itk::AdvancedMatrixOffsetTransformBase< TScalarType, NInputDimensions, NOutputDimensions >.

Reimplemented in itk::AdvancedSimilarity3DTransform< float >.

◆ ComputeMatrixParameters()

template<class TScalarType = double>
void itk::AdvancedVersorTransform< TScalarType >::ComputeMatrixParameters ( )
overrideprotectedvirtual

◆ GetClassName()

template<class TScalarType = double>
virtual const char * itk::AdvancedVersorTransform< TScalarType >::GetClassName ( ) const
virtual

◆ GetJacobian()

template<class TScalarType = double>
void itk::AdvancedVersorTransform< TScalarType >::GetJacobian ( const InputPointType &  ,
JacobianType &  ,
NonZeroJacobianIndicesType  
) const
overridevirtual

◆ GetParameters()

template<class TScalarType = double>
const ParametersType & itk::AdvancedVersorTransform< TScalarType >::GetParameters ( ) const
override

Get the Transformation Parameters.

◆ GetVersor()

template<class TScalarType = double>
virtual const VersorType & itk::AdvancedVersorTransform< TScalarType >::GetVersor ( )
virtual

◆ itkStaticConstMacro() [1/4]

template<class TScalarType = double>
itk::AdvancedVersorTransform< TScalarType >::itkStaticConstMacro ( InputSpaceDimension  ,
unsigned int  ,
 
)

◆ itkStaticConstMacro() [2/4]

template<class TScalarType = double>
itk::AdvancedVersorTransform< TScalarType >::itkStaticConstMacro ( OutputSpaceDimension  ,
unsigned int  ,
 
)

◆ itkStaticConstMacro() [3/4]

template<class TScalarType = double>
itk::AdvancedVersorTransform< TScalarType >::itkStaticConstMacro ( ParametersDimension  ,
unsigned int  ,
 
)

◆ itkStaticConstMacro() [4/4]

template<class TScalarType = double>
itk::AdvancedVersorTransform< TScalarType >::itkStaticConstMacro ( SpaceDimension  ,
unsigned int  ,
 
)

Dimension of parameters

◆ New()

template<class TScalarType = double>
static Pointer itk::AdvancedVersorTransform< TScalarType >::New ( )
static

New macro for creation of through a Smart Pointer

◆ operator=()

template<class TScalarType = double>
const Self & itk::AdvancedVersorTransform< TScalarType >::operator= ( const Self )
private

Assignment operator

◆ PrintSelf()

template<class TScalarType = double>
void itk::AdvancedVersorTransform< TScalarType >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
overrideprotected

Print contents of a AdvancedVersorTransform

◆ SetIdentity()

template<class TScalarType = double>
void itk::AdvancedVersorTransform< TScalarType >::SetIdentity ( )
overridevirtual

◆ SetParameters()

template<class TScalarType = double>
void itk::AdvancedVersorTransform< TScalarType >::SetParameters ( const ParametersType &  parameters)
override

Set the transformation from a container of parameters This is typically used by optimizers.

There are 3 parameters. They represent the components of the right part of the versor. This can be seen as the components of the vector parallel to the rotation axis and multiplied by std::sin( angle / 2 ).

◆ SetRotation() [1/2]

template<class TScalarType = double>
void itk::AdvancedVersorTransform< TScalarType >::SetRotation ( const AxisType axis,
AngleType  angle 
)

◆ SetRotation() [2/2]

template<class TScalarType = double>
void itk::AdvancedVersorTransform< TScalarType >::SetRotation ( const VersorType versor)

Set the rotational part of the transform

◆ SetVarVersor()

template<class TScalarType = double>
void itk::AdvancedVersorTransform< TScalarType >::SetVarVersor ( const VersorType newVersor)
inlineprotected

Definition at line 163 of file itkAdvancedVersorTransform.h.

Field Documentation

◆ m_Versor

template<class TScalarType = double>
VersorType itk::AdvancedVersorTransform< TScalarType >::m_Versor
private

Versor containing the rotation

Definition at line 189 of file itkAdvancedVersorTransform.h.



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