template<typename TParametersValueType = double>
class itk::ComposeScaleSkewVersor3DTransform< TParametersValueType >
ComposeScaleSkewVersor3DTransform of a vector space (space coords)
This transform applies a versor rotation and translation & scale/skew to the space
The parameters for this transform can be set either using individual Set methods or in serialized form using SetParameters() and SetFixedParameters().
The serialization of the optimizable parameters is an array of 12 elements. The first 3 elements are the components of the versor representation of 3D rotation. The next 3 parameters defines the translation in each dimension. The next 3 parameters defines scaling in each dimension. The last 3 parameters defines the skew.
The serialization of the fixed parameters is an array of 3 elements defining the center of rotation.
The transform can be described as: \( (\textbf{R}_v * \textbf{S} * \textbf{K})\textbf{x} \) where \(\textbf{R}_v\) is the rotation matrix given the versor, where \(\textbf{S}\) is the diagonal scale matrix. where \(\textbf{K}\) is the upper triangle skew (shear) matrix.
Definition at line 53 of file itkComposeScaleSkewVersor3DTransform.h.
|
using | ConstPointer = SmartPointer< const Self > |
|
using | Pointer = SmartPointer< Self > |
|
using | ScaleVectorType = Vector< TParametersValueType, 3 > |
|
using | ScaleVectorValueType = typename ScaleVectorType::ValueType |
|
using | Self = ComposeScaleSkewVersor3DTransform |
|
using | SkewVectorType = Vector< TParametersValueType, 3 > |
|
using | SkewVectorValueType = typename SkewVectorType::ValueType |
|
using | Superclass = VersorRigid3DTransform< TParametersValueType > |
|
using | TranslationValueType = typename TranslationType::ValueType |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DerivativeType = Array< ParametersValueType > |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = VersorRigid3DTransform |
|
using | Superclass = VersorTransform< TParametersValueType > |
|
using | VectorType = typename VersorType::VectorType |
|
using | AngleType = typename VersorType::ValueType |
|
using | AxisType = typename VersorType::VectorType |
|
using | AxisValueType = typename AxisType::ValueType |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | ParametersValueType = typename ParametersType::ValueType |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = VersorTransform |
|
using | Superclass = Rigid3DTransform< TParametersValueType > |
|
using | VersorType = Versor< TParametersValueType > |
|
using | VnlQuaternionType = vnl_quaternion< TParametersValueType > |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | InverseTransformBasePointer = typename InverseTransformBaseType::Pointer |
|
using | InverseTransformBaseType = typename Superclass::InverseTransformBaseType |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = Rigid3DTransform |
|
using | Superclass = MatrixOffsetTransformBase< TParametersValueType, 3, 3 > |
|
using | CenterType = InputPointType |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | InputCovariantVectorType = CovariantVector< TParametersValueType, Self::InputSpaceDimension > |
|
using | InputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType > |
|
using | InputPointType = Point< TParametersValueType, Self::InputSpaceDimension > |
|
using | InputPointValueType = typename InputPointType::ValueType |
|
using | InputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< TParametersValueType, VInputDimension > |
|
using | InputTensorEigenVectorType = CovariantVector< TParametersValueType, InputDiffusionTensor3DType::Dimension > |
|
using | InputVectorPixelType = VariableLengthVector< TParametersValueType > |
|
using | InputVectorType = Vector< TParametersValueType, Self::InputSpaceDimension > |
|
using | InputVnlVectorType = vnl_vector_fixed< TParametersValueType, Self::InputSpaceDimension > |
|
using | InverseJacobianPositionType = vnl_matrix_fixed< ParametersValueType, VInputDimension, VOutputDimension > |
|
using | InverseMatrixType = Matrix< TParametersValueType, Self::InputSpaceDimension, Self::OutputSpaceDimension > |
|
using | InverseTransformBasePointer = typename InverseTransformBaseType::Pointer |
|
using | InverseTransformBaseType = typename Superclass::InverseTransformBaseType |
|
using | InverseTransformType = MatrixOffsetTransformBase< TParametersValueType, VOutputDimension, VInputDimension > |
|
using | JacobianPositionType = vnl_matrix_fixed< ParametersValueType, VOutputDimension, VInputDimension > |
|
using | JacobianType = Array2D< ParametersValueType > |
|
using | MatrixType = Matrix< TParametersValueType, Self::OutputSpaceDimension, Self::InputSpaceDimension > |
|
using | MatrixValueType = typename MatrixType::ValueType |
|
using | OffsetType = OutputVectorType |
|
using | OffsetValueType = typename OffsetType::ValueType |
|
using | OutputCovariantVectorType = CovariantVector< TParametersValueType, Self::OutputSpaceDimension > |
|
using | OutputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType > |
|
using | OutputPointType = Point< TParametersValueType, Self::OutputSpaceDimension > |
|
using | OutputPointValueType = typename OutputPointType::ValueType |
|
using | OutputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< TParametersValueType, VOutputDimension > |
|
using | OutputVectorPixelType = VariableLengthVector< TParametersValueType > |
|
using | OutputVectorType = Vector< TParametersValueType, Self::OutputSpaceDimension > |
|
using | OutputVectorValueType = typename OutputVectorType::ValueType |
|
using | OutputVnlVectorType = vnl_vector_fixed< TParametersValueType, Self::OutputSpaceDimension > |
|
using | Pointer = SmartPointer< Self > |
|
using | ScalarType = ParametersValueType |
|
using | Self = MatrixOffsetTransformBase |
|
using | Superclass = Transform< TParametersValueType, VInputDimension, VOutputDimension > |
|
using | TranslationType = OutputVectorType |
|
using | TranslationValueType = typename TranslationType::ValueType |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DerivativeType = Array< ParametersValueType > |
|
using | DirectionChangeMatrix = Matrix< double, Self::OutputSpaceDimension, Self::InputSpaceDimension > |
|
using | InputCovariantVectorType = CovariantVector< TParametersValueType, VInputDimension > |
|
using | InputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType > |
|
using | InputDirectionMatrix = Matrix< double, Self::InputSpaceDimension, Self::InputSpaceDimension > |
|
using | InputPointType = Point< TParametersValueType, VInputDimension > |
|
using | InputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< TParametersValueType, VInputDimension > |
|
using | InputVectorPixelType = VariableLengthVector< TParametersValueType > |
|
using | InputVectorType = Vector< TParametersValueType, VInputDimension > |
|
using | InputVnlVectorType = vnl_vector_fixed< TParametersValueType, VInputDimension > |
|
using | InverseJacobianPositionType = vnl_matrix_fixed< ParametersValueType, VInputDimension, VOutputDimension > |
|
using | InverseTransformBasePointer = typename InverseTransformBaseType::Pointer |
|
using | InverseTransformBaseType = Transform< TParametersValueType, VOutputDimension, VInputDimension > |
|
using | JacobianPositionType = vnl_matrix_fixed< ParametersValueType, VOutputDimension, VInputDimension > |
|
using | JacobianType = Array2D< ParametersValueType > |
|
using | MatrixType = Matrix< TParametersValueType, Self::OutputSpaceDimension, Self::InputSpaceDimension > |
|
using | OutputCovariantVectorType = CovariantVector< TParametersValueType, VOutputDimension > |
|
using | OutputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType > |
|
using | OutputDirectionMatrix = Matrix< double, Self::OutputSpaceDimension, Self::OutputSpaceDimension > |
|
using | OutputPointType = Point< TParametersValueType, VOutputDimension > |
|
using | OutputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< TParametersValueType, VOutputDimension > |
|
using | OutputVectorPixelType = VariableLengthVector< TParametersValueType > |
|
using | OutputVectorType = Vector< TParametersValueType, VOutputDimension > |
|
using | OutputVnlVectorType = vnl_vector_fixed< TParametersValueType, VOutputDimension > |
|
using | Pointer = SmartPointer< Self > |
|
using | ScalarType = ParametersValueType |
|
using | Self = Transform |
|
using | Superclass = TransformBaseTemplate< TParametersValueType > |
|
|
void | ComputeJacobianWithRespectToParameters (const InputPointType &p, JacobianType &jacobian) const override |
|
const char * | GetNameOfClass () const override |
|
const ParametersType & | GetParameters () const override |
|
virtual const ScaleVectorType & | GetScale () const |
|
virtual const SkewVectorType & | GetSkew () const |
|
void | SetIdentity () override |
|
void | SetParameters (const ParametersType ¶meters) override |
|
void | SetScale (const ScaleVectorType &scale) |
|
void | SetSkew (const SkewVectorType &skew) |
|
|
void | SetMatrix (const MatrixType &matrix) override |
|
void | SetMatrix (const MatrixType &matrix, const TParametersValueType tolerance) override |
|
void | ComputeJacobianWithRespectToParameters (const InputPointType &p, JacobianType &jacobian) const override |
|
const char * | GetNameOfClass () const override |
|
const ParametersType & | GetParameters () const override |
|
void | SetParameters (const ParametersType ¶meters) override |
|
void | UpdateTransformParameters (const DerivativeType &update, TParametersValueType factor=1.0) override |
|
void | ComputeJacobianWithRespectToParameters (const InputPointType &p, JacobianType &jacobian) const override |
|
const char * | GetNameOfClass () const override |
|
const ParametersType & | GetParameters () const override |
|
virtual const VersorType & | GetVersor () const |
|
void | SetIdentity () override |
|
void | SetParameters (const ParametersType ¶meters) override |
|
void | SetRotation (const AxisType &axis, AngleType angle) |
|
void | SetRotation (const VersorType &versor) |
|
const char * | GetNameOfClass () const override |
|
bool | MatrixIsOrthogonal (const MatrixType &matrix, const TParametersValueType tolerance=MatrixOrthogonalityTolerance< TParametersValueType >::GetTolerance()) |
|
void | SetMatrix (const MatrixType &matrix) override |
|
void | Translate (const OffsetType &offset, bool pre=false) |
|
void | Compose (const Self *other, bool pre=false) |
|
void | ComputeInverseJacobianWithRespectToPosition (const InputPointType &x, InverseJacobianPositionType &jac) const override |
|
void | ComputeJacobianWithRespectToParameters (const InputPointType &p, JacobianType &jacobian) const override |
|
virtual void | ComputeJacobianWithRespectToPosition (const InputPointType &, JacobianPositionType &) const |
|
void | ComputeJacobianWithRespectToPosition (const InputPointType &x, JacobianPositionType &jac) const override |
|
const InputPointType & | GetCenter () const |
|
const FixedParametersType & | GetFixedParameters () const override |
|
InverseTransformBasePointer | GetInverseTransform () const override |
|
virtual const MatrixType & | GetMatrix () const |
|
const char * | GetNameOfClass () const override |
|
const OutputVectorType & | GetOffset () const |
|
const ParametersType & | GetParameters () const override |
|
TransformCategoryEnum | GetTransformCategory () const override |
|
const OutputVectorType & | GetTranslation () const |
|
bool | IsLinear () const override |
|
void | SetFixedParameters (const FixedParametersType &) override |
|
void | SetParameters (const ParametersType ¶meters) override |
|
virtual OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &) const |
|
OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &vec) const override |
|
virtual OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &vector, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformCovariantVector (const InputVectorPixelType &) const |
|
OutputVectorPixelType | TransformCovariantVector (const InputVectorPixelType &vect) const override |
|
virtual OutputVectorPixelType | TransformCovariantVector (const InputVectorPixelType &vector, const InputPointType &point) const |
|
virtual OutputDiffusionTensor3DType | TransformDiffusionTensor3D (const InputDiffusionTensor3DType &) const |
|
virtual OutputDiffusionTensor3DType | TransformDiffusionTensor3D (const InputDiffusionTensor3DType &inputTensor, const InputPointType &point) const |
|
OutputDiffusionTensor3DType | TransformDiffusionTensor3D (const InputDiffusionTensor3DType &tensor) const override |
|
virtual OutputVectorPixelType | TransformDiffusionTensor3D (const InputVectorPixelType &) const |
|
virtual OutputVectorPixelType | TransformDiffusionTensor3D (const InputVectorPixelType &inputTensor, const InputPointType &point) const |
|
OutputVectorPixelType | TransformDiffusionTensor3D (const InputVectorPixelType &tensor) const override |
|
OutputPointType | TransformPoint (const InputPointType &point) const override |
|
virtual OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &) const |
|
OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &inputTensor) const override |
|
virtual OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &) const |
|
OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &inputTensor) const override |
|
virtual OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformVector (const InputVectorPixelType &) const |
|
OutputVectorPixelType | TransformVector (const InputVectorPixelType &vect) const override |
|
virtual OutputVectorPixelType | TransformVector (const InputVectorPixelType &vector, const InputPointType &point) const |
|
virtual OutputVectorType | TransformVector (const InputVectorType &) const |
|
OutputVectorType | TransformVector (const InputVectorType &vect) const override |
|
virtual OutputVectorType | TransformVector (const InputVectorType &vector, const InputPointType &point) const |
|
virtual OutputVnlVectorType | TransformVector (const InputVnlVectorType &) const |
|
OutputVnlVectorType | TransformVector (const InputVnlVectorType &vect) const override |
|
virtual OutputVnlVectorType | TransformVector (const InputVnlVectorType &vector, const InputPointType &point) const |
|
void | SetOffset (const OutputVectorType &offset) |
|
void | SetCenter (const InputPointType ¢er) |
|
void | SetTranslation (const OutputVectorType &translation) |
|
bool | GetInverse (InverseTransformType *inverse) const |
|
virtual void | ComputeJacobianWithRespectToParametersCachedTemporaries (const InputPointType &p, JacobianType &jacobian, JacobianType &) const |
|
void | CopyInFixedParameters (const FixedParametersValueType *const begin, const FixedParametersValueType *const end) override |
|
void | CopyInParameters (const ParametersValueType *const begin, const ParametersValueType *const end) override |
|
const FixedParametersType & | GetFixedParameters () const override |
|
unsigned int | GetInputSpaceDimension () const override |
|
bool | GetInverse (Self *) const |
|
const char * | GetNameOfClass () const override |
|
virtual NumberOfParametersType | GetNumberOfFixedParameters () const |
|
virtual NumberOfParametersType | GetNumberOfLocalParameters () const |
|
NumberOfParametersType | GetNumberOfParameters () const override |
|
unsigned int | GetOutputSpaceDimension () const override |
|
const ParametersType & | GetParameters () const override |
|
TransformCategoryEnum | GetTransformCategory () const override |
|
std::string | GetTransformTypeAsString () const override |
|
| itkCloneMacro (Self) |
|
void | SetParametersByValue (const ParametersType &p) override |
|
virtual OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &vector, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformCovariantVector (const InputVectorPixelType &vector, const InputPointType &point) const |
|
virtual OutputDiffusionTensor3DType | TransformDiffusionTensor3D (const InputDiffusionTensor3DType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformDiffusionTensor3D (const InputVectorPixelType &inputTensor, const InputPointType &point) const |
|
virtual OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformVector (const InputVectorPixelType &vector, const InputPointType &point) const |
|
virtual OutputVectorType | TransformVector (const InputVectorType &vector, const InputPointType &point) const |
|
virtual OutputVnlVectorType | TransformVector (const InputVnlVectorType &vector, const InputPointType &point) const |
|
virtual void | UpdateTransformParameters (const DerivativeType &update, ParametersValueType factor=1.0) |
|
template<typename TImage > |
template< typename TImage > std std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > | ApplyToImageMetadata (SmartPointer< TImage > image) const |
|
template<typename TParametersValueType = double>
Compute the Jacobian of the transformation
This method computes the Jacobian matrix of the transformation at a given input point. The rank of the Jacobian will also indicate if the transform is invertible at this point.
The Jacobian is be expressed as a matrix of partial derivatives of the output point components with respect to the parameters that defined the transform:
\[ J=\left[ \begin{array}{cccc} \frac{\partial x_{1}}{\partial p_{1}} & \frac{\partial x_{1}}{\partial p_{2}} & \cdots & \frac{\partial x_{1}}{\partial p_{m}}\\ \frac{\partial x_{2}}{\partial p_{1}} & \frac{\partial x_{2}}{\partial p_{2}} & \cdots & \frac{\partial x_{2}}{\partial p_{m}}\\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial x_{n}}{\partial p_{1}} & \frac{\partial x_{n}}{\partial p_{2}} & \cdots & \frac{\partial x_{n}}{\partial p_{m}} \end{array}\right] \]
This is also used for efficient computation of a point-local jacobian for dense transforms. jacobian
is assumed to be thread-local variable, otherwise memory corruption will most likely occur during multi-threading. To avoid repetitive memory allocation, pass in 'jacobian' with its size already set.
Implements itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >.