ITK
5.0.0
Insight Segmentation and Registration 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:
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 64 of file itkMultiTransform.h.
Public Types | |
using | ConstPointer = SmartPointer< const Self > |
using | DerivativeType = typename Superclass::DerivativeType |
using | FixedParametersType = typename Superclass::FixedParametersType |
using | FixedParametersValueType = typename Superclass::FixedParametersValueType |
using | InputCovariantVectorType = typename Superclass::InputCovariantVectorType |
using | InputDiffusionTensor3DType = typename Superclass::InputDiffusionTensor3DType |
using | InputPointType = typename Superclass::InputPointType |
using | InputSymmetricSecondRankTensorType = typename Superclass::InputSymmetricSecondRankTensorType |
using | InputVectorPixelType = typename Superclass::InputVectorPixelType |
using | InputVectorType = typename Superclass::InputVectorType |
using | InputVnlVectorType = typename Superclass::InputVnlVectorType |
using | InverseJacobianPositionType = typename Superclass::InverseJacobianPositionType |
using | InverseTransformBasePointer = typename Superclass::InverseTransformBasePointer |
using | JacobianPositionType = typename Superclass::JacobianPositionType |
using | JacobianType = typename Superclass::JacobianType |
using | NumberOfParametersType = typename Superclass::NumberOfParametersType |
using | OutputCovariantVectorType = typename Superclass::OutputCovariantVectorType |
using | OutputDiffusionTensor3DType = typename Superclass::OutputDiffusionTensor3DType |
using | OutputPointType = typename Superclass::OutputPointType |
using | OutputSymmetricSecondRankTensorType = typename Superclass::OutputSymmetricSecondRankTensorType |
using | OutputVectorPixelType = typename Superclass::OutputVectorPixelType |
using | OutputVectorType = typename Superclass::OutputVectorType |
using | OutputVnlVectorType = typename Superclass::OutputVnlVectorType |
using | ParametersType = typename Superclass::ParametersType |
using | ParametersValueType = typename Superclass::ParametersValueType |
using | Pointer = SmartPointer< Self > |
using | ScalarType = ParametersValueType |
using | Self = MultiTransform |
using | SubTransformInverseTransformBasePointer = typename TransformType::InverseTransformBasePointer |
using | Superclass = Transform< TParametersValueType, NDimensions, NSubDimensions > |
using | TransformCategoryType = typename Superclass::TransformCategoryType |
using | TransformQueueType = std::deque< TransformTypePointer > |
using | TransformType = Transform< TParametersValueType, NSubDimensions, NSubDimensions > |
using | TransformTypePointer = typename TransformType::Pointer |
Public Types inherited from itk::Transform< TParametersValueType, NDimensions, NSubDimensions > | |
using | ConstPointer = SmartPointer< const Self > |
using | DerivativeType = Array< ParametersValueType > |
using | DirectionChangeMatrix = Matrix< double, Self::OutputSpaceDimension, Self::InputSpaceDimension > |
using | FixedParametersType = typename Superclass::FixedParametersType |
using | FixedParametersValueType = typename Superclass::FixedParametersValueType |
using | InputCovariantVectorType = CovariantVector< TParametersValueType, NInputDimensions > |
using | InputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType > |
using | InputDirectionMatrix = Matrix< double, Self::InputSpaceDimension, Self::InputSpaceDimension > |
using | InputPointType = Point< TParametersValueType, NInputDimensions > |
using | InputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< TParametersValueType, NInputDimensions > |
using | InputVectorPixelType = VariableLengthVector< TParametersValueType > |
using | InputVectorType = Vector< TParametersValueType, NInputDimensions > |
using | InputVnlVectorType = vnl_vector_fixed< TParametersValueType, NInputDimensions > |
using | InverseJacobianPositionType = vnl_matrix_fixed< ParametersValueType, NInputDimensions, NOutputDimensions > |
using | InverseTransformBasePointer = typename InverseTransformBaseType::Pointer |
using | InverseTransformBaseType = Transform< TParametersValueType, NOutputDimensions, NInputDimensions > |
using | JacobianPositionType = vnl_matrix_fixed< ParametersValueType, NOutputDimensions, NInputDimensions > |
using | JacobianType = Array2D< ParametersValueType > |
using | MatrixType = Matrix< TParametersValueType, Self::OutputSpaceDimension, Self::InputSpaceDimension > |
using | NumberOfParametersType = typename Superclass::NumberOfParametersType |
using | OutputCovariantVectorType = CovariantVector< TParametersValueType, NOutputDimensions > |
using | OutputDiffusionTensor3DType = DiffusionTensor3D< TParametersValueType > |
using | OutputDirectionMatrix = Matrix< double, Self::OutputSpaceDimension, Self::OutputSpaceDimension > |
using | OutputPointType = Point< TParametersValueType, NOutputDimensions > |
using | OutputSymmetricSecondRankTensorType = SymmetricSecondRankTensor< TParametersValueType, NOutputDimensions > |
using | OutputVectorPixelType = VariableLengthVector< TParametersValueType > |
using | OutputVectorType = Vector< TParametersValueType, NOutputDimensions > |
using | OutputVnlVectorType = vnl_vector_fixed< TParametersValueType, NOutputDimensions > |
using | ParametersType = typename Superclass::ParametersType |
using | ParametersValueType = typename Superclass::ParametersValueType |
using | Pointer = SmartPointer< Self > |
using | ScalarType = ParametersValueType |
using | Self = Transform |
using | Superclass = TransformBaseTemplate< TParametersValueType > |
using | TransformCategoryType = typename Superclass::TransformCategoryType |
Public Types inherited from itk::TransformBaseTemplate< TParametersValueType > | |
using | ConstPointer = SmartPointer< const Self > |
using | FixedParametersType = OptimizerParameters< FixedParametersValueType > |
using | FixedParametersValueType = double |
using | NumberOfParametersType = IdentifierType |
using | ParametersType = OptimizerParameters< ParametersValueType > |
using | ParametersValueType = TParametersValueType |
using | Pointer = SmartPointer< Self > |
using | Self = TransformBaseTemplate |
using | Superclass = Object |
enum | TransformCategoryType { UnknownTransformCategory =0, Linear =1, BSpline =2, Spline =3, DisplacementField =4, VelocityField =5 } |
Public Types inherited from itk::Object | |
using | ConstPointer = SmartPointer< const Self > |
using | Pointer = SmartPointer< Self > |
using | Self = Object |
using | Superclass = LightObject |
Public Types inherited from itk::LightObject | |
using | ConstPointer = SmartPointer< const Self > |
using | Pointer = SmartPointer< Self > |
using | Self = LightObject |
Static Public Attributes | |
static constexpr unsigned int | InputDimension = NDimensions |
static constexpr unsigned int | OutputDimension = NDimensions |
static constexpr unsigned int | SubInputDimension = NSubDimensions |
static constexpr unsigned int | SubOutputDimension = NSubDimensions |
Static Public Attributes inherited from itk::Transform< TParametersValueType, NDimensions, NSubDimensions > | |
static constexpr unsigned int | InputSpaceDimension |
static constexpr unsigned int | OutputSpaceDimension |
Protected Attributes | |
ModifiedTimeType | m_LocalParametersUpdateTime |
NumberOfParametersType | m_NumberOfLocalParameters |
TransformQueueType | m_TransformQueue |
Protected Attributes inherited from itk::Transform< TParametersValueType, NDimensions, NSubDimensions > | |
DirectionChangeMatrix | m_DirectionChange |
FixedParametersType | m_FixedParameters |
ParametersType | m_Parameters |
Protected Attributes inherited from itk::LightObject | |
std::atomic< int > | m_ReferenceCount |
Additional Inherited Members | |
Static Public Member Functions inherited from itk::Object | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool flag) |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::ConstPointer = SmartPointer<const Self> |
Definition at line 74 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::DerivativeType = typename Superclass::DerivativeType |
Derivative type
Definition at line 93 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::FixedParametersType = typename Superclass::FixedParametersType |
Definition at line 88 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::FixedParametersValueType = typename Superclass::FixedParametersValueType |
Definition at line 89 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::InputCovariantVectorType = typename Superclass::InputCovariantVectorType |
Standard covariant vector type for this class
Definition at line 117 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::InputDiffusionTensor3DType = typename Superclass::InputDiffusionTensor3DType |
Standard DiffusionTensor3D type alias for this class
Definition at line 129 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::InputPointType = typename Superclass::InputPointType |
Standard coordinate point type for this class.
Definition at line 109 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::InputSymmetricSecondRankTensorType = typename Superclass::InputSymmetricSecondRankTensorType |
Standard SymmetricSecondRankTensor type alias for this class
Definition at line 133 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::InputVectorPixelType = typename Superclass::InputVectorPixelType |
Standard Vectorpixel type for this class
Definition at line 125 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::InputVectorType = typename Superclass::InputVectorType |
Standard vector type for this class.
Definition at line 113 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::InputVnlVectorType = typename Superclass::InputVnlVectorType |
Standard vnl_vector type for this class.
Definition at line 121 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::InverseJacobianPositionType = typename Superclass::InverseJacobianPositionType |
Definition at line 98 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::InverseTransformBasePointer = typename Superclass::InverseTransformBasePointer |
InverseTransform type.
Definition at line 106 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::JacobianPositionType = typename Superclass::JacobianPositionType |
Definition at line 97 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::JacobianType = typename Superclass::JacobianType |
Jacobian type.
Definition at line 96 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::NumberOfParametersType = typename Superclass::NumberOfParametersType |
The number of parameters defininig this transform.
Definition at line 145 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::OutputCovariantVectorType = typename Superclass::OutputCovariantVectorType |
Definition at line 118 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::OutputDiffusionTensor3DType = typename Superclass::OutputDiffusionTensor3DType |
Definition at line 130 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::OutputPointType = typename Superclass::OutputPointType |
Definition at line 110 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::OutputSymmetricSecondRankTensorType = typename Superclass::OutputSymmetricSecondRankTensorType |
Definition at line 134 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::OutputVectorPixelType = typename Superclass::OutputVectorPixelType |
Definition at line 126 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::OutputVectorType = typename Superclass::OutputVectorType |
Definition at line 114 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::OutputVnlVectorType = typename Superclass::OutputVnlVectorType |
Definition at line 122 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::ParametersType = typename Superclass::ParametersType |
Parameters type.
Definition at line 86 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::ParametersValueType = typename Superclass::ParametersValueType |
Definition at line 87 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::Pointer = SmartPointer<Self> |
Definition at line 73 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::ScalarType = ParametersValueType |
Definition at line 90 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::Self = MultiTransform |
Standard class type aliases.
Definition at line 71 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::SubTransformInverseTransformBasePointer = typename TransformType::InverseTransformBasePointer |
InverseTransform type.
Definition at line 139 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::Superclass = Transform<TParametersValueType, NDimensions, NSubDimensions> |
Definition at line 72 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::TransformCategoryType = typename Superclass::TransformCategoryType |
Transform category type.
Definition at line 101 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::TransformQueueType = std::deque<TransformTypePointer> |
Transform queue type
Definition at line 142 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::TransformType = Transform<TParametersValueType, NSubDimensions, NSubDimensions > |
Sub transform type
Definition at line 80 of file itkMultiTransform.h.
using itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::TransformTypePointer = typename TransformType::Pointer |
Definition at line 81 of file itkMultiTransform.h.
|
protected |
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 159 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, NDimensions >.
Definition at line 236 of file itkMultiTransform.h.
|
inlinevirtual |
Definition at line 190 of file itkMultiTransform.h.
|
overridevirtual |
Get the fixed parameters.
Implements itk::TransformBaseTemplate< TParametersValueType >.
|
inlinevirtual |
Get transforms at the front and the back of the queue
Definition at line 184 of file itkMultiTransform.h.
bool itk::MultiTransform< TParametersValueType, NDimensions, NSubDimensions >::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.
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::Transform< TParametersValueType, NDimensions, NSubDimensions >.
Reimplemented in itk::CompositeTransform< TParametersValueType, NDimensions >.
|
inlinevirtual |
Definition at line 196 of file itkMultiTransform.h.
|
inlinevirtual |
Definition at line 212 of file itkMultiTransform.h.
|
inlinevirtual |
Get the Nth transform.
Definition at line 206 of file itkMultiTransform.h.
|
overridevirtual |
Return the number of parameters that define the constant elements of a Transfom
Reimplemented from itk::Transform< TParametersValueType, NDimensions, NSubDimensions >.
|
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< TParametersValueType, NDimensions, NSubDimensions >.
|
overridevirtual |
Return the number of parameters that completely define the Transfom
Implements itk::TransformBaseTemplate< TParametersValueType >.
|
inlinevirtual |
Return the number of sub-transforms.
Definition at line 230 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 itk::TransformBaseTemplate< TParametersValueType >.
|
overridevirtual |
If all sub-transforms are of the same category, return that category. Otherwise return UnknownTransformCategory.
Implements itk::TransformBaseTemplate< TParametersValueType >.
|
inlinevirtual |
Access transform queue
Definition at line 218 of file itkMultiTransform.h.
|
overridevirtual |
If all sub-transforms are linear, then the multi-transform is linear.
Reimplemented from itk::Transform< TParametersValueType, NDimensions, NSubDimensions >.
|
inlinevirtual |
Misc. functionality
Definition at line 224 of file itkMultiTransform.h.
|
inlineprotectedvirtual |
Reimplemented in itk::CompositeTransform< TParametersValueType, NDimensions >.
Definition at line 318 of file itkMultiTransform.h.
|
inlineprotectedvirtual |
Reimplemented in itk::CompositeTransform< TParametersValueType, NDimensions >.
Definition at line 312 of file itkMultiTransform.h.
|
inlinevirtual |
Add transform to the front of the stack
Definition at line 171 of file itkMultiTransform.h.
|
overrideprotectedvirtual |
Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from itk::Object.
|
inlineprotectedvirtual |
Definition at line 306 of file itkMultiTransform.h.
|
inlineprotectedvirtual |
Definition at line 300 of file itkMultiTransform.h.
|
inlinevirtual |
Remove transform from the back of the queue, index N-1
Definition at line 177 of file itkMultiTransform.h.
|
override |
|
override |
|
override |
Update the transform's parameters by the values in update
. See GetParameters() for parameter ordering.
|
static |
Dimension of the domain spaces.
Definition at line 148 of file itkMultiTransform.h.
|
mutableprotected |
Definition at line 329 of file itkMultiTransform.h.
|
mutableprotected |
Cache to save time returning the number of local parameters
Definition at line 328 of file itkMultiTransform.h.
|
mutableprotected |
Transform container object.
Definition at line 325 of file itkMultiTransform.h.
|
static |
Definition at line 149 of file itkMultiTransform.h.
|
static |
Definition at line 151 of file itkMultiTransform.h.
|
static |
Definition at line 152 of file itkMultiTransform.h.