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 80 of file itkAffineDTI3DTransform.h.
|
typedef Superclass::ScalarType | AngleType |
|
typedef Superclass::CenterType | CenterType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef Superclass::InputCovariantVectorType | InputCovariantVectorType |
|
typedef Superclass::InputPointType | InputPointType |
|
typedef Superclass::InputVectorType | InputVectorType |
|
typedef Superclass::InputVnlVectorType | InputVnlVectorType |
|
typedef Superclass::InternalMatrixType | InternalMatrixType |
|
typedef Superclass::InverseMatrixType | InverseMatrixType |
|
typedef Superclass::JacobianOfSpatialHessianType | JacobianOfSpatialHessianType |
|
typedef Superclass::JacobianOfSpatialJacobianType | JacobianOfSpatialJacobianType |
|
typedef Superclass::JacobianType | JacobianType |
|
typedef Superclass::MatrixType | MatrixType |
|
typedef Superclass::NonZeroJacobianIndicesType | NonZeroJacobianIndicesType |
|
typedef Superclass::NumberOfParametersType | NumberOfParametersType |
|
typedef Superclass::OffsetType | OffsetType |
|
typedef Superclass::OutputCovariantVectorType | OutputCovariantVectorType |
|
typedef Superclass::OutputPointType | OutputPointType |
|
typedef Superclass::OutputVectorType | OutputVectorType |
|
typedef Superclass::OutputVnlVectorType | OutputVnlVectorType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef FixedArray< ScalarType > | ScalarArrayType |
|
typedef Superclass::ScalarType | ScalarType |
|
typedef AffineDTI3DTransform | Self |
|
typedef Superclass::SpatialHessianType | SpatialHessianType |
|
typedef Superclass::SpatialJacobianType | SpatialJacobianType |
|
typedef AdvancedMatrixOffsetTransformBase< TScalarType, 3, 3 > | Superclass |
|
typedef Superclass::TranslationType | TranslationType |
|
typedef InputPointType | CenterType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef Superclass::FixedParametersType | FixedParametersType |
|
typedef Superclass::InputCovariantVectorType | InputCovariantVectorType |
|
typedef Superclass::InputPointType | InputPointType |
|
typedef Superclass::InputVectorType | InputVectorType |
|
typedef Superclass::InputVnlVectorType | InputVnlVectorType |
|
typedef Superclass::InternalMatrixType | InternalMatrixType |
|
typedef Matrix< double, itkGetStaticConstMacro(InputSpaceDimension), itkGetStaticConstMacro(OutputSpaceDimension) > | InverseMatrixType |
|
typedef Superclass::JacobianOfSpatialHessianType | JacobianOfSpatialHessianType |
|
typedef Superclass::JacobianOfSpatialJacobianType | JacobianOfSpatialJacobianType |
|
typedef Superclass::JacobianType | JacobianType |
|
typedef Matrix< double, itkGetStaticConstMacro(OutputSpaceDimension), itkGetStaticConstMacro(InputSpaceDimension) > | MatrixType |
|
typedef Superclass::NonZeroJacobianIndicesType | NonZeroJacobianIndicesType |
|
typedef Superclass::NumberOfParametersType | NumberOfParametersType |
|
typedef OutputVectorType | OffsetType |
|
typedef Superclass::OutputCovariantVectorType | OutputCovariantVectorType |
|
typedef Superclass::OutputPointType | OutputPointType |
|
typedef Superclass::OutputVectorType | OutputVectorType |
|
typedef Superclass::OutputVnlVectorType | OutputVnlVectorType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef Superclass::ScalarType | ScalarType |
|
typedef AdvancedMatrixOffsetTransformBase | Self |
|
typedef Superclass::SpatialHessianType | SpatialHessianType |
|
typedef Superclass::SpatialJacobianType | SpatialJacobianType |
|
typedef AdvancedTransform< double, NInputDimensions, NOutputDimensions > | Superclass |
|
typedef Superclass::TransformCategoryEnum | TransformCategoryEnum |
|
typedef OutputVectorType | TranslationType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef Superclass::DerivativeType | DerivativeType |
|
typedef Superclass::FixedParametersType | FixedParametersType |
|
typedef Superclass::InputCovariantVectorType | InputCovariantVectorType |
|
typedef Superclass::InputPointType | InputPointType |
|
typedef Superclass::InputVectorType | InputVectorType |
|
typedef Superclass::InputVnlVectorType | InputVnlVectorType |
|
typedef SpatialJacobianType::InternalMatrixType | InternalMatrixType |
|
typedef Superclass::InverseTransformBasePointer | InverseTransformBasePointer |
|
typedef Superclass::InverseTransformBaseType | InverseTransformBaseType |
|
typedef std::vector< SpatialHessianType > | JacobianOfSpatialHessianType |
|
typedef std::vector< SpatialJacobianType > | JacobianOfSpatialJacobianType |
|
typedef Superclass::JacobianType | JacobianType |
|
typedef OutputCovariantVectorType | MovingImageGradientType |
|
typedef MovingImageGradientType::ValueType | MovingImageGradientValueType |
|
typedef std::vector< unsigned long > | NonZeroJacobianIndicesType |
|
typedef Superclass::NumberOfParametersType | NumberOfParametersType |
|
typedef Superclass::OutputCovariantVectorType | OutputCovariantVectorType |
|
typedef Superclass::OutputPointType | OutputPointType |
|
typedef Superclass::OutputVectorType | OutputVectorType |
|
typedef Superclass::OutputVnlVectorType | OutputVnlVectorType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef Superclass::ParametersValueType | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef Superclass::ScalarType | ScalarType |
|
typedef AdvancedTransform | Self |
|
typedef FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > | SpatialHessianType |
|
typedef Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > | SpatialJacobianType |
|
typedef Transform< double, NInputDimensions, NOutputDimensions > | Superclass |
|
typedef Transform< double, NInputDimensions, NOutputDimensions > | TransformType |
|
typedef TransformType::ConstPointer | TransformTypeConstPointer |
|
typedef TransformType::Pointer | TransformTypePointer |
|
|
virtual const char * | GetClassName () const |
|
void | GetJacobian (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const override |
|
const ParametersType & | GetParameters (void) const override |
|
| itkStaticConstMacro (InputSpaceDimension, unsigned int, 3) |
|
| itkStaticConstMacro (OutputSpaceDimension, unsigned int, 3) |
|
| itkStaticConstMacro (ParametersDimension, unsigned int, 12) |
|
| itkStaticConstMacro (SpaceDimension, unsigned int, 3) |
|
void | SetIdentity (void) override |
|
void | SetParameters (const ParametersType ¶meters) override |
|
void | Compose (const Self *other, bool pre=0) |
|
const InputPointType & | GetCenter (void) const |
|
virtual const char * | GetClassName () const |
|
const FixedParametersType & | GetFixedParameters (void) const override |
|
bool | GetInverse (Self *inverse) const |
|
const InverseMatrixType & | GetInverseMatrix (void) const |
|
void | GetJacobian (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const override |
|
void | GetJacobianOfSpatialHessian (const InputPointType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const override |
|
void | GetJacobianOfSpatialHessian (const InputPointType &ipp, 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 (void) const |
|
const OutputVectorType & | GetOffset (void) const |
|
const ParametersType & | GetParameters (void) const override |
|
void | GetSpatialHessian (const InputPointType &, SpatialHessianType &) const override |
|
void | GetSpatialJacobian (const InputPointType &, SpatialJacobianType &) const override |
|
TransformCategoryEnum | GetTransformCategory () const override |
|
const OutputVectorType & | GetTranslation (void) const |
|
bool | IsLinear (void) 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 (void) |
|
virtual void | SetMatrix (const MatrixType &matrix) |
|
void | SetOffset (const OutputVectorType &offset) |
|
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 &ipp, 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 &ipp, JacobianType &j, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0 |
|
virtual void | GetJacobianOfSpatialHessian (const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0 |
|
virtual void | GetJacobianOfSpatialHessian (const InputPointType &ipp, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0 |
|
virtual void | GetJacobianOfSpatialJacobian (const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0 |
|
virtual void | GetJacobianOfSpatialJacobian (const InputPointType &ipp, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const=0 |
|
virtual NumberOfParametersType | GetNumberOfNonZeroJacobianIndices (void) const |
|
virtual void | GetSpatialHessian (const InputPointType &ipp, SpatialHessianType &sh) const=0 |
|
virtual void | GetSpatialJacobian (const InputPointType &ipp, SpatialJacobianType &sj) const=0 |
|
| itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions) |
|
| itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions) |
|