ITK
4.4.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 | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Superclass::DerivativeType | DerivativeType |
typedef Superclass::InputCovariantVectorType | InputCovariantVectorType |
typedef Superclass::InputDiffusionTensor3DType | InputDiffusionTensor3DType |
typedef Superclass::InputPointType | InputPointType |
typedef Superclass::InputSymmetricSecondRankTensorType | InputSymmetricSecondRankTensorType |
typedef Superclass::InputVectorPixelType | InputVectorPixelType |
typedef Superclass::InputVectorType | InputVectorType |
typedef Superclass::InputVnlVectorType | InputVnlVectorType |
typedef Superclass::InverseTransformBasePointer | InverseTransformBasePointer |
typedef Superclass::JacobianType | JacobianType |
typedef Superclass::NumberOfParametersType | NumberOfParametersType |
typedef Superclass::OutputCovariantVectorType | OutputCovariantVectorType |
typedef Superclass::OutputDiffusionTensor3DType | OutputDiffusionTensor3DType |
typedef Superclass::OutputPointType | OutputPointType |
typedef Superclass::OutputSymmetricSecondRankTensorType | OutputSymmetricSecondRankTensorType |
typedef Superclass::OutputVectorPixelType | OutputVectorPixelType |
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 MultiTransform | Self |
typedef TransformType::InverseTransformBasePointer | SubTransformInverseTransformBasePointer |
typedef Transform< TScalar, NDimensions, NDimensions > | Superclass |
typedef Superclass::TransformCategoryType | TransformCategoryType |
typedef std::deque < TransformTypePointer > | TransformQueueType |
typedef Transform< TScalar, NSubDimensions, NSubDimensions > | TransformType |
typedef TransformType::Pointer | TransformTypePointer |
Public Types inherited from itk::Transform< TScalar, NDimensions, NDimensions > | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Array < ParametersValueType > | DerivativeType |
typedef Matrix< double, itkGetStaticConstMacro(OutputSpaceDimension), itkGetStaticConstMacro(InputSpaceDimension)> | DirectionChangeMatrix |
typedef CovariantVector < TScalar, NInputDimensions > | InputCovariantVectorType |
typedef DiffusionTensor3D < TScalar > | InputDiffusionTensor3DType |
typedef Matrix< double, itkGetStaticConstMacro(InputSpaceDimension), itkGetStaticConstMacro(InputSpaceDimension)> | InputDirectionMatrix |
typedef Point< TScalar, NInputDimensions > | InputPointType |
typedef SymmetricSecondRankTensor < TScalar, NInputDimensions > | InputSymmetricSecondRankTensorType |
typedef VariableLengthVector < TScalar > | InputVectorPixelType |
typedef Vector< TScalar, NInputDimensions > | InputVectorType |
typedef vnl_vector_fixed < TScalar, NInputDimensions > | InputVnlVectorType |
typedef InverseTransformBaseType::Pointer | InverseTransformBasePointer |
typedef Transform< TScalar, NOutputDimensions, NInputDimensions > | InverseTransformBaseType |
typedef Array2D < ParametersValueType > | JacobianType |
typedef Matrix< TScalar, itkGetStaticConstMacro(OutputSpaceDimension), itkGetStaticConstMacro(InputSpaceDimension)> | MatrixType |
typedef Superclass::NumberOfParametersType | NumberOfParametersType |
typedef CovariantVector < TScalar, NOutputDimensions > | OutputCovariantVectorType |
typedef DiffusionTensor3D < TScalar > | OutputDiffusionTensor3DType |
typedef Matrix< double, itkGetStaticConstMacro(OutputSpaceDimension), itkGetStaticConstMacro(OutputSpaceDimension)> | OutputDirectionMatrix |
typedef Point< TScalar, NOutputDimensions > | OutputPointType |
typedef SymmetricSecondRankTensor < TScalar, NOutputDimensions > | OutputSymmetricSecondRankTensorType |
typedef VariableLengthVector < TScalar > | OutputVectorPixelType |
typedef Vector< TScalar, NOutputDimensions > | OutputVectorType |
typedef vnl_vector_fixed < TScalar, NOutputDimensions > | OutputVnlVectorType |
typedef Superclass::ParametersType | ParametersType |
typedef Superclass::ParametersValueType | ParametersValueType |
typedef SmartPointer< Self > | Pointer |
typedef TScalar | ScalarType |
typedef Transform | Self |
typedef TransformBase | Superclass |
Public Types inherited from itk::TransformBase | |
typedef SmartPointer< const Self > | ConstPointer |
typedef IdentifierType | NumberOfParametersType |
typedef OptimizerParameters < ParametersValueType > | ParametersType |
typedef double | ParametersValueType |
typedef SmartPointer< Self > | Pointer |
typedef TransformBase | Self |
typedef Object | Superclass |
enum | TransformCategoryType { UnknownTransformCategory =0, Linear =1, BSpline =2, Spline =3, DisplacementField =4, VelocityField =5 } |
Public Types inherited from itk::Object | |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef Object | Self |
typedef LightObject | Superclass |
Public Types inherited from itk::LightObject | |
typedef SmartPointer< const Self > | ConstPointer |
typedef SmartPointer< Self > | Pointer |
typedef LightObject | Self |
Static Public Attributes | |
static const unsigned int | SubInputDimension = NSubDimensions |
static const unsigned int | SubOutputDimension = NSubDimensions |
static const unsigned int | InputDimension = NDimensions |
static const unsigned int | OutputDimension = NDimensions |
Static Public Attributes inherited from itk::Transform< TScalar, NDimensions, NDimensions > | |
static const unsigned int | InputSpaceDimension |
static const unsigned int | OutputSpaceDimension |
Protected Member Functions | |
MultiTransform () | |
virtual void | PopBackTransform () |
virtual void | PopFrontTransform () |
void | PrintSelf (std::ostream &os, Indent indent) const |
virtual void | PushBackTransform (TransformTypePointer t) |
virtual void | PushFrontTransform (TransformTypePointer t) |
virtual | ~MultiTransform () |
Protected Member Functions inherited from itk::Transform< TScalar, NDimensions, NDimensions > | |
virtual LightObject::Pointer | InternalClone () const |
OutputDiffusionTensor3DType | PreservationOfPrincipalDirectionDiffusionTensor3DReorientation (const InputDiffusionTensor3DType, const JacobianType) const |
Transform () | |
Transform (NumberOfParametersType NumberOfParameters) | |
virtual | ~Transform () |
Protected Member Functions inherited from itk::TransformBase | |
TransformBase () | |
virtual | ~TransformBase () |
Protected Member Functions inherited from itk::Object | |
Object () | |
bool | PrintObservers (std::ostream &os, Indent indent) const |
virtual void | SetTimeStamp (const TimeStamp &time) |
virtual | ~Object () |
Protected Member Functions inherited from itk::LightObject | |
LightObject () | |
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
virtual | ~LightObject () |
Protected Attributes | |
ModifiedTimeType | m_LocalParametersUpdateTime |
NumberOfParametersType | m_NumberOfLocalParameters |
TransformQueueType | m_TransformQueue |
Protected Attributes inherited from itk::Transform< TScalar, NDimensions, NDimensions > | |
DirectionChangeMatrix | m_DirectionChange |
ParametersType | m_FixedParameters |
ParametersType | m_Parameters |
Private Member Functions | |
MultiTransform (const Self &) | |
void | operator= (const Self &) |
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) |
Protected Types inherited from itk::LightObject | |
typedef int | InternalReferenceCountType |
typedef SmartPointer<const Self> itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::ConstPointer |
Definition at line 72 of file itkMultiTransform.h.
typedef Superclass::DerivativeType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::DerivativeType |
Derivative type
Definition at line 91 of file itkMultiTransform.h.
typedef Superclass::InputCovariantVectorType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::InputCovariantVectorType |
Standard covariant vector type for this class
Definition at line 113 of file itkMultiTransform.h.
typedef Superclass::InputDiffusionTensor3DType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::InputDiffusionTensor3DType |
Standard DiffusionTensor3D typedef for this class
Definition at line 125 of file itkMultiTransform.h.
typedef Superclass::InputPointType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::InputPointType |
Standard coordinate point type for this class.
Definition at line 105 of file itkMultiTransform.h.
typedef Superclass::InputSymmetricSecondRankTensorType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::InputSymmetricSecondRankTensorType |
Standard SymmetricSecondRankTensor typedef for this class
Definition at line 129 of file itkMultiTransform.h.
typedef Superclass::InputVectorPixelType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::InputVectorPixelType |
Standard Vectorpixel type for this class
Definition at line 121 of file itkMultiTransform.h.
typedef Superclass::InputVectorType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::InputVectorType |
Standard vector type for this class.
Definition at line 109 of file itkMultiTransform.h.
typedef Superclass::InputVnlVectorType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::InputVnlVectorType |
Standard vnl_vector type for this class.
Definition at line 117 of file itkMultiTransform.h.
typedef Superclass::InverseTransformBasePointer itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::InverseTransformBasePointer |
InverseTransform type.
Definition at line 102 of file itkMultiTransform.h.
typedef Superclass::JacobianType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::JacobianType |
Jacobian type.
Definition at line 94 of file itkMultiTransform.h.
typedef Superclass::NumberOfParametersType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::NumberOfParametersType |
The number of parameters defininig this transform.
Definition at line 141 of file itkMultiTransform.h.
typedef Superclass::OutputCovariantVectorType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::OutputCovariantVectorType |
Definition at line 114 of file itkMultiTransform.h.
typedef Superclass::OutputDiffusionTensor3DType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::OutputDiffusionTensor3DType |
Definition at line 126 of file itkMultiTransform.h.
typedef Superclass::OutputPointType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::OutputPointType |
Definition at line 106 of file itkMultiTransform.h.
typedef Superclass::OutputSymmetricSecondRankTensorType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::OutputSymmetricSecondRankTensorType |
Definition at line 130 of file itkMultiTransform.h.
typedef Superclass::OutputVectorPixelType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::OutputVectorPixelType |
Definition at line 122 of file itkMultiTransform.h.
typedef Superclass::OutputVectorType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::OutputVectorType |
Definition at line 110 of file itkMultiTransform.h.
typedef Superclass::OutputVnlVectorType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::OutputVnlVectorType |
Definition at line 118 of file itkMultiTransform.h.
typedef Superclass::ParametersType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::ParametersType |
Parameters type.
Definition at line 87 of file itkMultiTransform.h.
typedef Superclass::ParametersValueType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::ParametersValueType |
Definition at line 88 of file itkMultiTransform.h.
typedef SmartPointer<Self> itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::Pointer |
Definition at line 71 of file itkMultiTransform.h.
typedef Superclass::ScalarType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::ScalarType |
Scalar type.
Definition at line 84 of file itkMultiTransform.h.
typedef MultiTransform itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::Self |
Standard class typedefs.
Definition at line 69 of file itkMultiTransform.h.
typedef TransformType::InverseTransformBasePointer itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::SubTransformInverseTransformBasePointer |
InverseTransform type.
Definition at line 135 of file itkMultiTransform.h.
typedef Transform<TScalar, NDimensions, NDimensions> itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::Superclass |
Definition at line 70 of file itkMultiTransform.h.
typedef Superclass::TransformCategoryType itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::TransformCategoryType |
Transform category type.
Definition at line 97 of file itkMultiTransform.h.
typedef std::deque<TransformTypePointer> itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::TransformQueueType |
Transform queue type
Definition at line 138 of file itkMultiTransform.h.
typedef Transform<TScalar, NSubDimensions, NSubDimensions > itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::TransformType |
Sub transform type
Definition at line 75 of file itkMultiTransform.h.
typedef TransformType::Pointer itk::MultiTransform< TScalar, NDimensions, NSubDimensions >::TransformTypePointer |
Definition at line 79 of file itkMultiTransform.h.
|
protected |
Flatten the transform queue such that there are no nested composite transforms.
|
protectedvirtual |
|
private |
|
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 156 of file itkMultiTransform.h.
|
inlinevirtual |
Same as AddTransform
Definition at line 162 of file itkMultiTransform.h.
|
inlinevirtual |
Clear the transform queue.
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
Definition at line 219 of file itkMultiTransform.h.
|
inlinevirtual |
Definition at line 187 of file itkMultiTransform.h.
|
virtual |
Get the Fixed Parameters.
Reimplemented from itk::Transform< TScalar, NDimensions, NDimensions >.
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
|
inlinevirtual |
Get transforms at the front and the back of the queue
Definition at line 181 of file itkMultiTransform.h.
bool itk::MultiTransform< TScalar, 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< TScalar, NDimensions, NDimensions >.
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
|
inlinevirtual |
Get the Nth transform.
Definition at line 195 of file itkMultiTransform.h.
|
virtual |
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
|
virtual |
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< TScalar, NDimensions, NDimensions >.
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
|
virtual |
Return the number of parameters that completely define the Transfom
Reimplemented from itk::Transform< TScalar, NDimensions, NDimensions >.
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
|
inlinevirtual |
Return the number of sub-transforms.
Definition at line 213 of file itkMultiTransform.h.
|
virtual |
Get/Set Parameter functions work on all sub-transforms. The parameter data from each sub-transform is concatenated into a single ParametersType object.
Reimplemented from itk::Transform< TScalar, NDimensions, NDimensions >.
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
|
virtual |
If all sub-transforms are of the same category, return that category. Otherwise return UnknownTransformCategory.
Reimplemented from itk::Transform< TScalar, NDimensions, NDimensions >.
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
|
inlinevirtual |
Access transform queue
Definition at line 201 of file itkMultiTransform.h.
|
virtual |
If all sub-transforms are linear, then the multi-transform is linear.
Reimplemented from itk::Transform< TScalar, NDimensions, NDimensions >.
|
inlinevirtual |
Misc. functionality
Definition at line 207 of file itkMultiTransform.h.
|
private |
|
inlineprotectedvirtual |
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
Definition at line 301 of file itkMultiTransform.h.
|
inlineprotectedvirtual |
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
Definition at line 295 of file itkMultiTransform.h.
|
inlinevirtual |
Add transform to the front of the stack
Definition at line 168 of file itkMultiTransform.h.
|
protectedvirtual |
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 |
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
Definition at line 289 of file itkMultiTransform.h.
|
inlineprotectedvirtual |
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
Definition at line 283 of file itkMultiTransform.h.
|
inlinevirtual |
Remove transform from the back of the queue, index N-1
Definition at line 174 of file itkMultiTransform.h.
|
virtual |
|
virtual |
|
virtual |
Update the transform's parameters by the values in update
. See GetParameters() for parameter ordering.
Reimplemented in itk::CompositeTransform< TScalar, NDimensions >.
|
static |
Dimension of the domain spaces.
Definition at line 144 of file itkMultiTransform.h.
|
mutableprotected |
Definition at line 312 of file itkMultiTransform.h.
|
mutableprotected |
Cache to save time returning the number of local parameters
Definition at line 311 of file itkMultiTransform.h.
|
mutableprotected |
Transform container object.
Definition at line 308 of file itkMultiTransform.h.
|
static |
Dimension of the domain spaces.
Definition at line 145 of file itkMultiTransform.h.
|
static |
Definition at line 148 of file itkMultiTransform.h.
|
static |
Definition at line 149 of file itkMultiTransform.h.