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::InputCovariantVectorType | InputCovariantVectorType |
|
typedef Superclass::InputPointType | InputPointType |
|
typedef Superclass::InputVectorType | InputVectorType |
|
typedef Superclass::InputVnlVectorType | InputVnlVectorType |
|
typedef Superclass::InternalMatrixType | InternalMatrixType |
|
typedef Matrix< TScalarType, itkGetStaticConstMacro(InputSpaceDimension), itkGetStaticConstMacro(OutputSpaceDimension) > | InverseMatrixType |
|
typedef Superclass::JacobianOfSpatialHessianType | JacobianOfSpatialHessianType |
|
typedef Superclass::JacobianOfSpatialJacobianType | JacobianOfSpatialJacobianType |
|
typedef Superclass::JacobianType | JacobianType |
|
typedef Matrix< TScalarType, 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< TScalarType, NInputDimensions, NOutputDimensions > | Superclass |
|
typedef Superclass::TransformCategoryType | TransformCategoryType |
|
typedef OutputVectorType | TranslationType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef Superclass::DerivativeType | DerivativeType |
|
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< TScalarType, NInputDimensions, NOutputDimensions > | Superclass |
|
typedef Transform< TScalarType, NInputDimensions, NOutputDimensions > | TransformType |
|
typedef TransformType::ConstPointer | TransformTypeConstPointer |
|
typedef TransformType::Pointer | TransformTypePointer |
|
|
virtual const char * | GetClassName () const |
|
virtual void | GetJacobian (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const |
|
const ParametersType & | GetParameters (void) const |
|
| itkStaticConstMacro (SpaceDimension, unsigned int, 3) |
|
| itkStaticConstMacro (InputSpaceDimension, unsigned int, 3) |
|
| itkStaticConstMacro (OutputSpaceDimension, unsigned int, 3) |
|
| itkStaticConstMacro (ParametersDimension, unsigned int, 12) |
|
virtual void | SetIdentity (void) |
|
void | SetParameters (const ParametersType ¶meters) |
|
void | Compose (const Self *other, bool pre=0) |
|
const InputPointType & | GetCenter (void) const |
|
virtual const ParametersType & | GetFixedParameters (void) const |
|
bool | GetInverse (Self *inverse) const |
|
const InverseMatrixType & | GetInverseMatrix (void) const |
|
virtual void | GetJacobianOfSpatialHessian (const InputPointType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const |
|
virtual void | GetJacobianOfSpatialHessian (const InputPointType &ipp, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const |
|
virtual void | GetJacobianOfSpatialJacobian (const InputPointType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const |
|
virtual void | GetJacobianOfSpatialJacobian (const InputPointType &, SpatialJacobianType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const |
|
const MatrixType & | GetMatrix (void) const |
|
const OutputVectorType & | GetOffset (void) const |
|
const ParametersType & | GetParameters (void) const |
|
virtual void | GetSpatialHessian (const InputPointType &, SpatialHessianType &) const |
|
virtual void | GetSpatialJacobian (const InputPointType &, SpatialJacobianType &) const |
|
virtual TransformCategoryType | GetTransformCategory () const |
|
const OutputVectorType & | GetTranslation (void) const |
|
virtual bool | IsLinear (void) const |
|
| itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions) |
|
| itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions) |
|
| itkStaticConstMacro (ParametersDimension, unsigned int, NOutputDimensions *(NInputDimensions+1)) |
|
void | SetCenter (const InputPointType ¢er) |
|
virtual void | SetFixedParameters (const ParametersType &) |
|
virtual void | SetMatrix (const MatrixType &matrix) |
|
void | SetOffset (const OutputVectorType &offset) |
|
void | SetParameters (const ParametersType ¶meters) |
|
void | SetTranslation (const OutputVectorType &translation) |
|
OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &vector) const |
|
OutputPointType | TransformPoint (const InputPointType &point) const |
|
OutputVectorType | TransformVector (const InputVectorType &vector) const |
|
OutputVnlVectorType | TransformVector (const InputVnlVectorType &vector) const |
|
virtual void | ComputeJacobianWithRespectToParameters (const InputPointType &, JacobianType &) const |
|
virtual void | ComputeJacobianWithRespectToPosition (const InputPointType &, JacobianType &) const |
|
virtual void | EvaluateJacobianWithImageGradientProduct (const InputPointType &ipp, const MovingImageGradientType &movingImageGradient, DerivativeType &imageJacobian, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const |
|
virtual bool | GetHasNonZeroJacobianOfSpatialHessian () const |
|
virtual bool | GetHasNonZeroSpatialHessian () const |
|
virtual NumberOfParametersType | GetNumberOfNonZeroJacobianIndices (void) const |
|
| itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions) |
|
| itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions) |
|