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.
|
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 |
|
const FixedParametersType & | GetFixedParameters () 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 | 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 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) |
|