template<typename TParametersValueType = double, unsigned int VDimension = 3, unsigned int VSubDimensions = VDimension>
class itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >
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.
|
using | ConstPointer = SmartPointer< const Self > |
|
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 |
|
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 > |
|
|
virtual void | AddTransform (TransformType *t) |
|
virtual void | AppendTransform (TransformType *t) |
|
virtual const TransformType * | GetBackTransform () const |
|
const FixedParametersType & | GetFixedParameters () const override |
|
virtual const TransformType * | GetFrontTransform () const |
|
bool | GetInverse (Self *inverse) const |
|
const char * | GetNameOfClass () const override |
|
virtual const TransformTypePointer | GetNthTransform (SizeValueType n) const |
|
virtual const TransformType * | GetNthTransformConstPointer (const SizeValueType n) const |
|
virtual TransformType * | GetNthTransformModifiablePointer (const SizeValueType n) const |
|
NumberOfParametersType | GetNumberOfFixedParameters () const override |
|
NumberOfParametersType | GetNumberOfLocalParameters () const override |
|
NumberOfParametersType | GetNumberOfParameters () const override |
|
virtual SizeValueType | GetNumberOfTransforms () const |
|
const ParametersType & | GetParameters () const override |
|
TransformCategoryEnum | GetTransformCategory () const override |
|
virtual const TransformQueueType & | GetTransformQueue () const |
|
bool | IsLinear () const override |
|
virtual bool | IsTransformQueueEmpty () const |
|
virtual void | PrependTransform (TransformType *t) |
|
virtual void | RemoveTransform () |
|
void | SetFixedParameters (const FixedParametersType &inputParameters) override |
|
void | SetParameters (const ParametersType &inputParameters) override |
|
void | UpdateTransformParameters (const DerivativeType &update, ScalarType factor=1.0) override |
|
|
virtual void | ClearTransformQueue () |
|
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 |
|
virtual InverseTransformBasePointer | GetInverseTransform () const |
|
const char * | GetNameOfClass () const override |
|
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 &) const |
|
virtual OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &vector, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformCovariantVector (const InputVectorPixelType &) const |
|
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 |
|
virtual OutputVectorPixelType | TransformDiffusionTensor3D (const InputVectorPixelType &) const |
|
virtual OutputVectorPixelType | TransformDiffusionTensor3D (const InputVectorPixelType &inputTensor, const InputPointType &point) const |
|
virtual OutputPointType | TransformPoint (const InputPointType &) const=0 |
|
virtual OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &) const |
|
virtual OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &) const |
|
virtual OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformVector (const InputVectorPixelType &) const |
|
virtual OutputVectorPixelType | TransformVector (const InputVectorPixelType &vector, const InputPointType &point) const |
|
virtual OutputVectorType | TransformVector (const InputVectorType &) const |
|
virtual OutputVectorType | TransformVector (const InputVectorType &vector, const InputPointType &point) const |
|
virtual OutputVnlVectorType | TransformVector (const InputVnlVectorType &) const |
|
virtual OutputVnlVectorType | TransformVector (const InputVnlVectorType &vector, const InputPointType &point) const |
|
virtual void | ComputeJacobianWithRespectToParameters (const InputPointType &, JacobianType &) const=0 |
|
virtual void | ComputeJacobianWithRespectToPosition (const InputPointType &, JacobianPositionType &) const |
|
template< typename TImage > std std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > | ApplyToImageMetadata (SmartPointer< TImage > image) const |
|
template<typename TParametersValueType = double, unsigned int VDimension = 3, unsigned int VSubDimensions = VDimension>
NumberOfParametersType itk::MultiTransform< TParametersValueType, VDimension, VSubDimensions >::GetNumberOfLocalParameters |
( |
| ) |
const |
|
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, VDimension, VSubDimensions >.