template<class
TScalarType = double>
class itk::AffineDTI3DTransform< TScalarType >
AffineDTI3DTransform of a vector space (e.g. space coordinates)
This transform applies an affine transformation, but is parameterized by angles, shear factors, scales, and translation, instead of by the affine matrix. It is meant for registration of MR diffusion weighted images, but could be used for other images as well of course.
The affine model is adopted from the following paper: [1] A. Leemans and D.K. Jones. "The B-matrix must be rotated when correcting for subject motion in DTI data". Magnetic Resonance in Medicine, Volume 61, Issue 6, pages 1336 - 1349, 2009.
The model is as follows:
T(x) = R G S (x-c) + t + c
with:
- R = Rx Ry Rz (rotation matrices)
- G = Gx Gy Gz (shear matrices)
- S = diag( [sx sy sz] ) (scaling matrix)
- c = center of rotation
- t = translation See [1] for exact expressions for Rx, Gx etc.
Using this model, the rotation components can be easily extracted an applied to the B-matrix.
The parameters are ordered as follows: in 2D: [ Angle ShearX ShearY ScaleX ScaleY TranslationX TranslationY ]
in 3D: [ AngleX AngleY AngleZ ShearX ShearY ShearZ ScaleX ScaleY ScaleZ TranslationX TranslationY TranslationZ ]
The serialization of the fixed parameters is an array of 2 elements defining the center of rotation.
This transform applies an affine transformation, but is parameterized by angles, shear factors, scales, and translation, instead of by the affine matrix. It is meant for registration of MR diffusion weighted images, but could be used for other images as well of course.
The affine model is adopted from the following paper: [1] A. Leemans and D.K. Jones. "The B-matrix must be rotated when correcting for subject motion in DTI data". Magnetic Resonance in Medicine, Volume 61, Issue 6, pages 1336 - 1349, 2009.
The model is as follows:
T(x) = R G S (x-c) + t + c
with:
- R = Rx Ry Rz (rotation matrices)
- G = Gx Gy Gz (shear matrices)
- S = diag( [sx sy sz] ) (scaling matrix)
- c = center of rotation
- t = translation See [1] for exact expressions for Rx, Gx etc.
Using this model, the rotation components can be easily extracted an applied to the B-matrix.
The parameters are ordered as follows: [ AngleX AngleY AngleZ ShearX ShearY ShearZ ScaleX ScaleY ScaleZ TranslationX TranslationY TranslationZ ]
The serialization of the fixed parameters is an array of 3 elements defining the center of rotation.
Definition at line 78 of file itkAffineDTI3DTransform.h.
|
using | AngleType = typename Superclass::ScalarType |
|
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 | ScalarArrayType = FixedArray< ScalarType > |
|
using | Self = AffineDTI3DTransform |
|
using | Superclass = AdvancedMatrixOffsetTransformBase< TScalarType, 3, 3 > |
|
using | TranslationType = OutputVectorType |
|
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 |
|
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 |
|
|
virtual const char * | GetClassName () const |
|
void | GetJacobian (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const override |
|
const ParametersType & | GetParameters () const override |
|
| ITK_DISALLOW_COPY_AND_MOVE (AffineDTI3DTransform) |
|
| itkStaticConstMacro (InputSpaceDimension, unsigned int, 3) |
|
| itkStaticConstMacro (OutputSpaceDimension, unsigned int, 3) |
|
| itkStaticConstMacro (ParametersDimension, unsigned int, 12) |
|
| itkStaticConstMacro (SpaceDimension, unsigned int, 3) |
|
void | SetIdentity () override |
|
void | SetParameters (const ParametersType ¶meters) override |
|
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 MatrixType & | GetMatrix () 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 ¢er) |
|
void | SetFixedParameters (const FixedParametersType &) override |
|
virtual void | SetIdentity () |
|
virtual void | SetMatrix (const MatrixType &matrix) |
|
void | SetParameters (const ParametersType ¶meters) 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 |
|
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) |
|