ITK
6.0.0
Insight Toolkit
|
#include <itkMultiTransform.h>
This abstract class contains a list of transforms and provides basic methods.
This abstract base class is used by classes that operate on a list of sub-transforms. The sub-transforms can have a different dimensionality than the container transform.
Transforms are stored in a container (queue), in the following order: \( T_0, T_1, ... , T_N-1 \)
Transforms are added via a single method, AddTransform(). This adds the transforms to the back of the queue. A single method for adding transforms is meant to simplify the interface and prevent errors.
Inverse todo
TODO
Interface Issues/Comments x The PushFrontTransform and PushBackTransform methods are protected to force the user to use the AddTransform method, forcing the order of transforms. Are there use cases where the user would need to insert transforms at the front of the queue? Or at arbitrary positions?
GetParameters efficiency optimization Can we optimize this to only query the sub-transforms when the params in the sub transforms have changed since the previous call? Can't use Modified time b/c that will get updated in sub-transforms with every call to SetParameters. Is this worth worrying about? i.e. how much time will it take in the overall registration process? Probably very little.
Definition at line 63 of file itkMultiTransform.h.
Public Types | |
using | ConstPointer = SmartPointer< const Self > |
using | DerivativeType = Array< ParametersValueType > |
using | InputCovariantVectorType = CovariantVector< TParametersValueType, VInputDimension > |
using | InputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType > |
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 | JacobianPositionType = vnl_matrix_fixed< ParametersValueType, VOutputDimension, VInputDimension > |
using | JacobianType = Array2D< ParametersValueType > |
using | OutputCovariantVectorType = CovariantVector< TParametersValueType, VOutputDimension > |
using | OutputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType > |
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 = MultiTransform |
using | SubTransformInverseTransformBasePointer = typename TransformType::InverseTransformBasePointer |
using | Superclass = Transform< TParametersValueType, VDimension, VSubDimensions > |
using | TransformQueueType = std::deque< TransformTypePointer > |
using | TransformType = Transform< TParametersValueType, VSubDimensions, VSubDimensions > |
using | TransformTypePointer = typename TransformType::Pointer |
Public Types inherited from itk::Transform< double, 3, 3 > | |
using | ConstPointer = SmartPointer< const Self > |
using | DerivativeType = Array< ParametersValueType > |
using | DirectionChangeMatrix = Matrix< double, Self::OutputSpaceDimension, Self::InputSpaceDimension > |
using | FixedParametersType = OptimizerParameters< FixedParametersValueType > |
using | FixedParametersValueType = double |
using | InputCovariantVectorType = CovariantVector< double, VInputDimension > |
using | InputDiffusionTensor3DType = DiffusionTensor3D< double > |
using | InputDirectionMatrix = Matrix< double, Self::InputSpaceDimension, Self::InputSpaceDimension > |
using | InputPointType = Point< double, VInputDimension > |
using | InputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< double, VInputDimension > |
using | InputVectorPixelType = VariableLengthVector< double > |
using | InputVectorType = Vector< double, VInputDimension > |
using | InputVnlVectorType = vnl_vector_fixed< double, VInputDimension > |
using | InverseJacobianPositionType = vnl_matrix_fixed< ParametersValueType, VInputDimension, VOutputDimension > |
using | InverseTransformBasePointer = typename InverseTransformBaseType::Pointer |
using | InverseTransformBaseType = Transform< double, VOutputDimension, VInputDimension > |
using | JacobianPositionType = vnl_matrix_fixed< ParametersValueType, VOutputDimension, VInputDimension > |
using | JacobianType = Array2D< ParametersValueType > |
using | MatrixType = Matrix< double, Self::OutputSpaceDimension, Self::InputSpaceDimension > |
using | NumberOfParametersType = IdentifierType |
using | OutputCovariantVectorType = CovariantVector< double, VOutputDimension > |
using | OutputDiffusionTensor3DType = DiffusionTensor3D< double > |
using | OutputDirectionMatrix = Matrix< double, Self::OutputSpaceDimension, Self::OutputSpaceDimension > |
using | OutputPointType = Point< double, VOutputDimension > |
using | OutputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< double, VOutputDimension > |
using | OutputVectorPixelType = VariableLengthVector< double > |
using | OutputVectorType = Vector< double, VOutputDimension > |
using | OutputVnlVectorType = vnl_vector_fixed< double, VOutputDimension > |
using | ParametersType = OptimizerParameters< ParametersValueType > |
using | ParametersValueType = double |
using | Pointer = SmartPointer< Self > |
using | ScalarType = ParametersValueType |
using | Self = Transform |
using | Superclass = TransformBaseTemplate< double > |
using | TransformCategoryEnum = TransformBaseTemplateEnums::TransformCategory |
Public Types inherited from TransformBaseTemplate< double > | |
using | ConstPointer = SmartPointer< const Self > |
using | FixedParametersType = OptimizerParameters< FixedParametersValueType > |
using | FixedParametersValueType = double |
using | NumberOfParametersType = IdentifierType |
using | ParametersType = OptimizerParameters< ParametersValueType > |
using | ParametersValueType = double |
using | Pointer = SmartPointer< Self > |
using | Self = TransformBaseTemplate |
using | Superclass = Object |
using | TransformCategoryEnum = TransformBaseTemplateEnums::TransformCategory |
using | TransformCategoryType = TransformCategoryEnum |
Static Public Attributes | |
static constexpr unsigned int | InputDimension = VDimension |
static constexpr unsigned int | OutputDimension = VDimension |
static constexpr unsigned int | SubInputDimension = VSubDimensions |
static constexpr unsigned int | SubOutputDimension = VSubDimensions |
Static Public Attributes inherited from itk::Transform< double, 3, 3 > | |
static constexpr unsigned int | InputSpaceDimension |
static constexpr unsigned int | OutputSpaceDimension |
Static Public Attributes inherited from TransformBaseTemplate< double > | |
static constexpr TransformCategoryEnum | BSpline |
static constexpr TransformCategoryEnum | DisplacementField |
static constexpr TransformCategoryEnum | Linear |
static constexpr TransformCategoryEnum | Spline |
static constexpr TransformCategoryEnum | UnknownTransformCategory |
static constexpr TransformCategoryEnum | VelocityField |
Protected Member Functions | |
MultiTransform ()=default | |
virtual void | PopBackTransform () |
virtual void | PopFrontTransform () |
void | PrintSelf (std::ostream &os, Indent indent) const override |
virtual void | PushBackTransform (TransformTypePointer t) |
virtual void | PushFrontTransform (TransformTypePointer t) |
~MultiTransform () override=default | |
Protected Member Functions inherited from itk::Transform< double, 3, 3 > | |
LightObject::Pointer | InternalClone () const override |
OutputDiffusionTensor3DType | PreservationOfPrincipalDirectionDiffusionTensor3DReorientation (const InputDiffusionTensor3DType &, const InverseJacobianPositionType &) const |
Transform ()=default | |
Transform (NumberOfParametersType numberOfParameters) | |
~Transform () override=default | |
Protected Member Functions inherited from TransformBaseTemplate< double > | |
TransformBaseTemplate ()=default | |
~TransformBaseTemplate () override=default | |
Protected Attributes | |
ModifiedTimeType | m_LocalParametersUpdateTime {} |
NumberOfParametersType | m_NumberOfLocalParameters {} |
TransformQueueType | m_TransformQueue {} |
Protected Attributes inherited from itk::Transform< double, 3, 3 > | |
FixedParametersType | m_FixedParameters |
ParametersType | m_Parameters |
Additional Inherited Members | |
Public Attributes inherited from itk::Transform< double, 3, 3 > | |
InverseJacobianPositionType &jacobian | const |
Static Protected Member Functions inherited from itk::Transform< double, 3, 3 > | |
static InverseTransformBasePointer | InvertTransform (const TTransform &transform) |
using itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::ConstPointer = SmartPointer<const Self> |
Definition at line 72 of file itkMultiTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::DerivativeType = Array<ParametersValueType> |
Definition at line 124 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::InputCovariantVectorType = CovariantVector<TParametersValueType, VInputDimension> |
Standard covariant vector type for this class
Definition at line 152 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::InputDiffusionTensor3DType = DiffusionTensor3D<TParametersValueType> |
Definition at line 148 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::InputPointType = Point<TParametersValueType, VInputDimension> |
Standard coordinate point type for this class
Definition at line 160 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::InputSymmetricSecondRankTensorType = SymmetricSecondRankTensor<TParametersValueType, VInputDimension> |
Definition at line 144 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::InputVectorPixelType = VariableLengthVector<TParametersValueType> |
Standard variable length vector type for this class this provides an interface for the VectorImage class
Definition at line 140 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::InputVectorType = Vector<TParametersValueType, VInputDimension> |
Standard vector type for this class.
Definition at line 135 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::InputVnlVectorType = vnl_vector_fixed<TParametersValueType, VInputDimension> |
Standard vnl_vector type for this class.
Definition at line 156 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::InverseJacobianPositionType = vnl_matrix_fixed<ParametersValueType, VInputDimension, VOutputDimension> |
Definition at line 132 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::InverseTransformBasePointer = typename InverseTransformBaseType::Pointer |
Definition at line 167 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::JacobianPositionType = vnl_matrix_fixed<ParametersValueType, VOutputDimension, VInputDimension> |
Definition at line 131 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::JacobianType = Array2D<ParametersValueType> |
Type of the Jacobian matrix.
Definition at line 130 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::OutputCovariantVectorType = CovariantVector<TParametersValueType, VOutputDimension> |
Definition at line 153 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::OutputDiffusionTensor3DType = DiffusionTensor3D<TParametersValueType> |
Definition at line 149 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::OutputPointType = Point<TParametersValueType, VOutputDimension> |
Definition at line 161 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::OutputSymmetricSecondRankTensorType = SymmetricSecondRankTensor<TParametersValueType, VOutputDimension> |
Definition at line 145 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::OutputVectorPixelType = VariableLengthVector<TParametersValueType> |
Definition at line 141 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::OutputVectorType = Vector<TParametersValueType, VOutputDimension> |
Definition at line 136 of file itkTransform.h.
using itk::Transform< TParametersValueType, VInputDimension, VOutputDimension >::OutputVnlVectorType = vnl_vector_fixed<TParametersValueType, VOutputDimension> |
Definition at line 157 of file itkTransform.h.
using itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::Pointer = SmartPointer<Self> |
Definition at line 71 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::ScalarType = ParametersValueType |
Definition at line 88 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::Self = MultiTransform |
Standard class type aliases.
Definition at line 69 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::SubTransformInverseTransformBasePointer = typename TransformType::InverseTransformBasePointer |
InverseTransform type.
Definition at line 137 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::Superclass = Transform<TParametersValueType, VDimension, VSubDimensions> |
Definition at line 70 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::TransformQueueType = std::deque<TransformTypePointer> |
Transform queue type
Definition at line 140 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::TransformType = Transform<TParametersValueType, VSubDimensions, VSubDimensions> |
Sub transform type
Definition at line 78 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::TransformTypePointer = typename TransformType::Pointer |
Definition at line 79 of file itkMultiTransform.h.
|
protecteddefault |
Flatten the transform queue such that there are no nested composite transforms.
|
overrideprotecteddefault |
|
inlinevirtual |
Functionality for sub transforms Add transforms to the queue, as stack. Most-recently added transform is always at back of queue, index N-1.
Definition at line 158 of file itkMultiTransform.h.
|
inlinevirtual |
Same as AddTransform
Definition at line 165 of file itkMultiTransform.h.
|
inlinevirtual |
Clear the transform queue.
Reimplemented in itk::CompositeTransform< TParametersValueType, VDimension >.
Definition at line 242 of file itkMultiTransform.h.
|
inlinevirtual |
Definition at line 192 of file itkMultiTransform.h.
|
overridevirtual |
Get the fixed parameters.
Implements TransformBaseTemplate< double >.
|
inlinevirtual |
Get transforms at the front and the back of the queue
Definition at line 186 of file itkMultiTransform.h.
bool itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::GetInverse | ( | Self * | inverse | ) | const |
Returns a boolean indicating whether it is possible or not to compute the inverse of this current Transform. If it is possible, then the inverse of the transform is returned in the inverseTransform variable passed by the user. The inverse consists of the inverse of each sub-transform, in the same order as the forward transforms.
|
override |
|
inlinevirtual |
Definition at line 198 of file itkMultiTransform.h.
|
inlinevirtual |
Definition at line 214 of file itkMultiTransform.h.
|
inlinevirtual |
Get the Nth transform.
Definition at line 208 of file itkMultiTransform.h.
|
overridevirtual |
Return the number of parameters that define the constant elements of a Transform
Reimplemented from itk::Transform< double, 3, 3 >.
|
overridevirtual |
Return the number of local parameters that completely defines the Transform at an individual voxel. For transforms with local support, this will enable downstream computation of the jacobian wrt only the local support region. For instance, in the case of a deformation field, this will be equal to the number of image dimensions. If it is an affine transform, this will be the same as the GetNumberOfParameters().
Reimplemented from itk::Transform< double, 3, 3 >.
|
overridevirtual |
Return the number of parameters that completely define the Transform
Implements TransformBaseTemplate< double >.
|
inlinevirtual |
Return the number of sub-transforms.
Definition at line 235 of file itkMultiTransform.h.
|
overridevirtual |
Get/Set Parameter functions work on all sub-transforms. The parameter data from each sub-transform is concatenated into a single ParametersType object.
Implements TransformBaseTemplate< double >.
|
overridevirtual |
If all sub-transforms are of the same category, return that category. Otherwise return UnknownTransformCategory.
Implements TransformBaseTemplate< double >.
|
inlinevirtual |
Access transform queue
Definition at line 221 of file itkMultiTransform.h.
|
overridevirtual |
If all sub-transforms are linear, then the multi-transform is linear.
Reimplemented from itk::Transform< double, 3, 3 >.
|
inlinevirtual |
Misc. functionality
Definition at line 228 of file itkMultiTransform.h.
|
inlineprotectedvirtual |
Reimplemented in itk::CompositeTransform< TParametersValueType, VDimension >.
Definition at line 340 of file itkMultiTransform.h.
|
inlineprotectedvirtual |
Reimplemented in itk::CompositeTransform< TParametersValueType, VDimension >.
Definition at line 333 of file itkMultiTransform.h.
|
inlinevirtual |
Add transform to the front of the stack
Definition at line 172 of file itkMultiTransform.h.
|
overrideprotected |
|
inlineprotectedvirtual |
Definition at line 326 of file itkMultiTransform.h.
|
inlineprotectedvirtual |
Definition at line 319 of file itkMultiTransform.h.
|
inlinevirtual |
Remove transform from the back of the queue, index N-1
Definition at line 179 of file itkMultiTransform.h.
|
overridevirtual |
Set the fixed parameters and update internal transformation.
Implements itk::Transform< double, 3, 3 >.
|
overridevirtual |
Set the transformation parameters and update internal transformation. SetParameters gives the transform the option to set it's parameters by keeping a reference to the parameters, or by copying. To force the transform to copy its parameters call SetParametersByValue.
Implements itk::Transform< double, 3, 3 >.
|
overridevirtual |
Update the transform's parameters by the values in update
. See GetParameters() for parameter ordering.
Reimplemented from itk::Transform< double, 3, 3 >.
|
staticconstexpr |
Dimension of the domain spaces.
Definition at line 146 of file itkMultiTransform.h.
|
mutableprotected |
Definition at line 351 of file itkMultiTransform.h.
|
mutableprotected |
Cache to save time returning the number of local parameters
Definition at line 350 of file itkMultiTransform.h.
|
mutableprotected |
Transform container object.
Definition at line 347 of file itkMultiTransform.h.
|
staticconstexpr |
Definition at line 147 of file itkMultiTransform.h.
|
staticconstexpr |
Definition at line 149 of file itkMultiTransform.h.
|
staticconstexpr |
Definition at line 150 of file itkMultiTransform.h.