go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
elastix::RecursiveBSplineTransform< TElastix > Class Template Reference

#include <elxRecursiveBSplineTransform.h>

Detailed Description

template<class TElastix>
class elastix::RecursiveBSplineTransform< TElastix >

A transform based on the itkRecursiveBSplineTransform.

This transform is a B-spline transformation, commonly used for nonrigid registration.

The parameters used in this class are:

Parameters:

Transform: Select this transform as follows:
(Transform "RecursiveBSplineTransform")

BSplineTransformSplineOrder: choose a B-spline order 1,2, or 3.
example: (BSplineTransformSplineOrder 3)
Default value: 3 (cubic B-splines).

FinalGridSpacingInVoxels: the grid spacing of the B-spline transform for each dimension.
example: (FinalGridSpacingInVoxels 8.0 8.0 8.0)
If only one argument is given, that factor is used for each dimension. The spacing is not in millimeters, but in "voxel size units". The default is 16.0 in every dimension.

FinalGridSpacingInPhysicalUnits: the grid spacing of the B-spline transform for each dimension.
example: (FinalGridSpacingInPhysicalUnits 8.0 8.0 8.0)
If only one argument is given, that factor is used for each dimension. The spacing is specified in millimeters. If not specified, the FinalGridSpacingInVoxels is used, or the FinalGridSpacing, to compute a FinalGridSpacingInPhysicalUnits. If those are not specified, the default value for FinalGridSpacingInVoxels is used to compute a FinalGridSpacingInPhysicalUnits. If an affine transformation is provided as initial transformation, the control grid will be scaled to cover the fixed image domain in the space defined by the initial transformation.

GridSpacingSchedule: the grid spacing downsampling factors for the B-spline transform for each dimension and each resolution.
example: (GridSpacingSchedule 4.0 4.0 2.0 2.0 1.0 1.0)
Which is an example for a 2D image, using 3 resolutions.
For convenience, you may also specify only one value for each resolution:
example: (GridSpacingSchedule 4.0 2.0 1.0 )
which is equivalent to the example above.

PassiveEdgeWidth: the width of a band of control points at the border of the B-spline coefficient image that should remain passive during optimisation.
Can be specified for each resolution.
example: (PassiveEdgeWidth 0 1 2)
The default is zero for all resolutions. A value of 4 will avoid all deformations at the edge of the image. Make sure that 2*PassiveEdgeWidth < ControlPointGridSize in each dimension.

UseCyclicTransform: use the cyclic version of the B-spline transform which ensures that the B-spline polynomials wrap around in the slowest varying dimension. This is useful for dynamic imaging data in which the motion is assumed to be cyclic, for example in ECG-gated or respiratory gated CTA. For more information see the paper: Nonrigid registration of dynamic medical imaging data using nD+t B-splines and a groupwise optimization approach, C.T. Metz, S. Klein, M. Schaap, T. van Walsum and W.J. Niessen, Medical Image Analysis, in press.

The transform parameters necessary for transformix, additionally defined by this class, are:

Transform Parameters:

GridSize: stores the size of the B-spline grid.
example: (GridSize 16 16 16)

GridIndex: stores the index of the B-spline grid.
example: (GridIndex 0 0 0)

GridSpacing: stores the spacing of the B-spline grid.
example: (GridSpacing 16.0 16.0 16.0)

GridOrigin: stores the origin of the B-spline grid.
example: (GridOrigin 0.0 0.0 0.0)

GridDirection: stores the direction cosines of the B-spline grid.
example: (GridDirection 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.1)

BSplineTransformSplineOrder: stores the B-spline order 1,2, or 3.
example: (BSplineTransformSplineOrder 3) Default value: 3 (cubic B-splines).

UseCyclicTransform: use the cyclic version of the B-spline transform which ensures that the B-spline polynomials wrap around in the slowest varying dimension. This is useful for dynamic imaging data in which the motion is assumed to be cyclic, for example in ECG-gated or respiratory gated CTA. For more information see the paper: Nonrigid registration of dynamic medical imaging data using nD+t B-splines and a groupwise optimization approach, C.T. Metz, S. Klein, M. Schaap, T. van Walsum and W.J. Niessen, Medical Image Analysis, in press.

Todo:
It is unsure what happens when one of the image dimensions has length 1.

Definition at line 109 of file elxRecursiveBSplineTransform.h.

Inheritance diagram for elastix::RecursiveBSplineTransform< TElastix >:
Inheritance graph
[legend]

Public Types

using BSplineTransformBasePointer = typename BSplineTransformBaseType::Pointer
 
using BSplineTransformBaseType = itk::AdvancedBSplineDeformableTransformBase< typename elx::TransformBase< TElastix >::CoordRepType, Self::SpaceDimension >
 
using CombinationTransformType = typename Superclass2::CombinationTransformType
 
using ConstPointer = itk::SmartPointer< const Self >
 
using ContinuousIndexType = typename BSplineTransformBaseType::ContinuousIndexType
 
using CoordRepType = ElastixBase::CoordRepType
 
using CyclicGridScheduleComputerType = itk::CyclicGridScheduleComputer< CoordRepType, SpaceDimension >
 
using DirectionType = typename BSplineTransformBaseType::DirectionType
 
using FixedImageType = typename TElastix::FixedImageType
 
using GridScheduleComputerPointer = typename GridScheduleComputerType::Pointer
 
using GridScheduleComputerType = itk::GridScheduleComputer< CoordRepType, SpaceDimension >
 
using GridScheduleType = typename GridScheduleComputerType ::VectorGridSpacingFactorType
 
using GridUpsamplerPointer = typename GridUpsamplerType::Pointer
 
using GridUpsamplerType = itk::UpsampleBSplineParametersFilter< ParametersType, ImageType >
 
using ImagePointer = typename BSplineTransformBaseType::ImagePointer
 
using ImageType = typename BSplineTransformBaseType::ImageType
 
using IndexType = typename BSplineTransformBaseType::IndexType
 
using ITKBaseType = typename Superclass2::ITKBaseType
 
using MovingImageType = typename TElastix::MovingImageType
 
using OriginType = typename BSplineTransformBaseType::OriginType
 
using ParameterIndexArrayType = typename BSplineTransformBaseType::ParameterIndexArrayType
 
using ParameterMapType = typename TElastix::ParameterMapType
 
using Pointer = itk::SmartPointer< Self >
 
using RegionType = typename BSplineTransformBaseType::RegionType
 
using Self = RecursiveBSplineTransform
 
using SizeType = typename BSplineTransformBaseType::SizeType
 
using SpacingType = typename BSplineTransformBaseType::SpacingType
 
using Superclass1 = itk::AdvancedCombinationTransform< typename elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >
 
using Superclass2 = elx::TransformBase< TElastix >
 
- Public Types inherited from itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >
using ConstPointer = SmartPointer< const Self >
 
using CurrentTransformConstPointer = typename CurrentTransformType::ConstPointer
 
using CurrentTransformInverseTransformBasePointer = typename CurrentTransformType::InverseTransformBasePointer
 
using CurrentTransformInverseTransformBaseType = typename CurrentTransformType::InverseTransformBaseType
 
using CurrentTransformPointer = typename CurrentTransformType::Pointer
 
using CurrentTransformType = Superclass
 
using InitialTransformConstPointer = typename InitialTransformType::ConstPointer
 
using InitialTransformInverseTransformBasePointer = typename InitialTransformType::InverseTransformBasePointer
 
using InitialTransformInverseTransformBaseType = typename InitialTransformType::InverseTransformBaseType
 
using InitialTransformPointer = typename InitialTransformType::Pointer
 
using InitialTransformType = Superclass
 
using InverseTransformBaseType = typename Superclass::InverseTransformBaseType
 
using Pointer = SmartPointer< Self >
 
using Self = AdvancedCombinationTransform
 
using Superclass = AdvancedTransform< elx::TransformBase< TElastix >::CoordRepType, NDimensions, NDimensions >
 
using TransformType = typename Superclass::TransformType
 
using TransformTypeConstPointer = typename TransformType::ConstPointer
 
using TransformTypePointer = typename TransformType::Pointer
 
- Public Types inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
using ConstPointer = SmartPointer< const Self >
 
using InternalMatrixType = typename SpatialJacobianType::InternalMatrixType
 
using InverseTransformBaseType = typename Superclass::InverseTransformBaseType
 
using JacobianOfSpatialHessianType = std::vector< SpatialHessianType >
 
using JacobianOfSpatialJacobianType = std::vector< SpatialJacobianType >
 
using MovingImageGradientType = OutputCovariantVectorType
 
using MovingImageGradientValueType = typename MovingImageGradientType::ValueType
 
using NonZeroJacobianIndicesType = std::vector< unsigned long >
 
using Pointer = SmartPointer< Self >
 
using Self = AdvancedTransform
 
using SpatialHessianType = FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension >
 
using SpatialJacobianType = Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension >
 
using Superclass = Transform< TScalarType, NInputDimensions, NOutputDimensions >
 
using TransformType = Transform< TScalarType, NInputDimensions, NOutputDimensions >
 
using TransformTypeConstPointer = typename TransformType::ConstPointer
 
using TransformTypePointer = typename TransformType::Pointer
 
- Public Types inherited from elastix::TransformBase< TElastix >
using CombinationTransformType = itk::AdvancedCombinationTransform< CoordRepType, Self::FixedImageDimension >
 
using CommandLineArgumentMapType = Configuration ::CommandLineArgumentMapType
 
using CommandLineEntryType = Configuration ::CommandLineEntryType
 
using ComponentDescriptionType = ComponentDatabase::ComponentDescriptionType
 
using CoordRepType = ElastixBase::CoordRepType
 
using DeformationFieldImageType = itk::Image< VectorPixelType, FixedImageDimension >
 
using FixedImageType = typename TElastix::FixedImageType
 
using InitialTransformType = typename CombinationTransformType::InitialTransformType
 
using InputPointType = typename ITKBaseType::InputPointType
 
using ITKBaseType = CombinationTransformType
 
using ITKRegistrationType = typename RegistrationType::ITKBaseType
 
using MovingImageType = typename TElastix::MovingImageType
 
using OptimizerType = typename ITKRegistrationType::OptimizerType
 
using OutputPointType = typename ITKBaseType::OutputPointType
 
using ParameterMapType = typename TElastix::ParameterMapType
 
using ParametersType = itk::OptimizerParameters< ValueType >
 
using ProgressCommandType = elx::ProgressCommand
 
using PtrToCreator = ComponentDatabase::PtrToCreator
 
using RegistrationType = typename ElastixType::RegistrationBaseType
 
using ScalesType = typename OptimizerType::ScalesType
 
using Self = TransformBase
 
using SpatialJacobianDeterminantImageType = itk::Image< float, FixedImageDimension >
 
using SpatialJacobianMatrixImageType = itk::Image< itk::Matrix< float, MovingImageDimension, FixedImageDimension >, FixedImageDimension >
 
using Superclass = BaseComponentSE< TElastix >
 
using ValueType = double
 
using VectorPixelType = itk::Vector< float, FixedImageDimension >
 
- Public Types inherited from elastix::BaseComponentSE< TElastix >
using ConfigurationPointer = Configuration::Pointer
 
using ElastixType = TElastix
 
using RegistrationType = typename ElastixType::RegistrationBaseType
 
using Self = BaseComponentSE
 
using Superclass = BaseComponent
 

Public Member Functions

int BeforeAll () override
 
void BeforeEachResolution () override
 
void BeforeRegistration () override
 
 elxClassNameMacro ("RecursiveBSplineTransform")
 
virtual const char * GetClassName () const
 
virtual void IncreaseScale ()
 
 ITK_DISALLOW_COPY_AND_MOVE (RecursiveBSplineTransform)
 
 itkStaticConstMacro (SpaceDimension, unsigned int, Superclass2::FixedImageDimension)
 
void ReadFromFile () override
 
virtual void SetOptimizerScales (const unsigned int edgeWidth)
 
- Public Member Functions inherited from itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >
void EvaluateJacobianWithImageGradientProduct (const InputPointType &inputPoint, const MovingImageGradientType &movingImageGradient, DerivativeType &imageJacobian, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
virtual const char * GetClassName () const
 
const FixedParametersType & GetFixedParameters () const override
 
bool GetHasNonZeroSpatialHessian () const override
 
bool GetInverse (Self *inverse) const
 
void GetJacobian (const InputPointType &inputPoint, JacobianType &j, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialHessian (const InputPointType &inputPoint, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialHessian (const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &inputPoint, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
void GetJacobianOfSpatialJacobian (const InputPointType &inputPoint, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
 
const TransformTypePointer GetNthTransform (SizeValueType n) const
 
NumberOfParametersType GetNumberOfNonZeroJacobianIndices () const override
 
NumberOfParametersType GetNumberOfParameters () const override
 
SizeValueType GetNumberOfTransforms () const
 
const ParametersType & GetParameters () const override
 
void GetSpatialHessian (const InputPointType &inputPoint, SpatialHessianType &sh) const override
 
void GetSpatialJacobian (const InputPointType &inputPoint, SpatialJacobianType &sj) const override
 
TransformCategoryEnum GetTransformCategory () const override
 
virtual bool GetUseAddition () const
 
virtual bool GetUseComposition () const
 
bool HasNonZeroJacobianOfSpatialHessian () const
 
bool IsLinear () const override
 
 ITK_DISALLOW_COPY_AND_MOVE (AdvancedCombinationTransform)
 
 itkGetModifiableObjectMacro (CurrentTransform, CurrentTransformType)
 
 itkGetModifiableObjectMacro (InitialTransform, InitialTransformType)
 
 itkStaticConstMacro (SpaceDimension, unsigned int, NDimensions)
 
void SetCurrentTransform (CurrentTransformType *_arg)
 
void SetFixedParameters (const FixedParametersType &fixedParam) override
 
void SetInitialTransform (InitialTransformType *_arg)
 
void SetParameters (const ParametersType &param) override
 
void SetParametersByValue (const ParametersType &param) override
 
void SetUseAddition (bool _arg)
 
void SetUseComposition (bool _arg)
 
OutputCovariantVectorType TransformCovariantVector (const InputCovariantVectorType &) const override
 
OutputPointType TransformPoint (const InputPointType &point) const override
 
OutputVectorType TransformVector (const InputVectorType &) const override
 
OutputVnlVectorType TransformVector (const InputVnlVectorType &) const override
 
- Public Member Functions inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
void ComputeJacobianWithRespectToParameters (const InputPointType &, JacobianType &) const override
 
virtual void EvaluateJacobianWithImageGradientProduct (const InputPointType &inputPoint, const MovingImageGradientType &movingImageGradient, DerivativeType &imageJacobian, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
virtual const char * GetClassName () const
 
virtual bool GetHasNonZeroJacobianOfSpatialHessian () const
 
virtual bool GetHasNonZeroSpatialHessian () const
 
virtual void GetJacobian (const InputPointType &inputPoint, JacobianType &j, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const =0
 
virtual void GetJacobianOfSpatialHessian (const InputPointType &inputPoint, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const =0
 
virtual void GetJacobianOfSpatialHessian (const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const =0
 
virtual void GetJacobianOfSpatialJacobian (const InputPointType &inputPoint, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const =0
 
virtual void GetJacobianOfSpatialJacobian (const InputPointType &inputPoint, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const =0
 
virtual NumberOfParametersType GetNumberOfNonZeroJacobianIndices () const
 
virtual void GetSpatialHessian (const InputPointType &inputPoint, SpatialHessianType &sh) const =0
 
virtual void GetSpatialJacobian (const InputPointType &inputPoint, SpatialJacobianType &sj) const =0
 
 ITK_DISALLOW_COPY_AND_MOVE (AdvancedTransform)
 
 itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions)
 
 itkStaticConstMacro (OutputSpaceDimension, unsigned int, NOutputDimensions)
 
- Public Member Functions inherited from elastix::TransformBase< TElastix >
int BeforeAllTransformix ()
 
void ComputeAndWriteSpatialJacobianDeterminantImage () const
 
void ComputeAndWriteSpatialJacobianMatrixImage () const
 
SpatialJacobianDeterminantImageType::Pointer ComputeSpatialJacobianDeterminantImage () const
 
SpatialJacobianMatrixImageType::Pointer ComputeSpatialJacobianMatrixImage () const
 
void CreateTransformParametersMap (const ParametersType &param, ParameterMapType &parameterMap, const bool includeDerivedTransformParameters=true) const
 
ITKBaseTypeGetAsITKBaseType ()
 
const ITKBaseTypeGetAsITKBaseType () const
 
virtual const char * GetClassName () const
 
 ITK_DISALLOW_COPY_AND_MOVE (TransformBase)
 
 itkStaticConstMacro (FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
 
 itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
 
virtual void ReadFromFile ()
 
void ReadInitialTransformFromFile (const char *transformParameterFileName)
 
void SetFinalParameters ()
 
void SetInitialTransform (InitialTransformType *_arg)
 
void SetReadWriteTransformParameters (const bool _arg)
 
void SetTransformParametersFileName (const char *filename)
 
template<typename TMesh >
TMesh::Pointer TransformMesh (const TMesh &mesh) const
 
void TransformPoints () const
 
void WriteToFile (xl::xoutsimple &transformationParameterInfo, const ParametersType &param) const
 
- Public Member Functions inherited from elastix::BaseComponentSE< TElastix >
void AddTargetCellToIterationInfo (const char *const name)
 
ConfigurationGetConfiguration () const
 
ElastixTypeGetElastix () const
 
xl::xoutbaseGetIterationInfoAt (const char *const name)
 
RegistrationTypeGetRegistration () const
 
 ITK_DISALLOW_COPY_AND_MOVE (BaseComponentSE)
 
int RemoveTargetCellFromIterationInfo (const char *const name)
 
void SetConfiguration (Configuration *_arg)
 
void SetElastix (ElastixType *_arg)
 
- Public Member Functions inherited from elastix::BaseComponent
virtual void AfterEachIteration ()
 
virtual void AfterEachIterationBase ()
 
virtual void AfterEachResolution ()
 
virtual void AfterEachResolutionBase ()
 
virtual void AfterRegistration ()
 
virtual void AfterRegistrationBase ()
 
virtual int BeforeAll ()
 
virtual int BeforeAllBase ()
 
virtual void BeforeEachResolution ()
 
virtual void BeforeEachResolutionBase ()
 
virtual void BeforeRegistration ()
 
virtual void BeforeRegistrationBase ()
 
virtual const char * elxGetClassName () const
 
const char * GetComponentLabel () const
 
 ITK_DISALLOW_COPY_AND_MOVE (BaseComponent)
 
 itkTypeMacroNoParent (BaseComponent)
 
void SetComponentLabel (const char *label, unsigned int idx)
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >
static Pointer New ()
 
- Static Public Member Functions inherited from elastix::BaseComponent
template<typename TBaseComponent >
static auto AsITKBaseType (TBaseComponent *const baseComponent) -> decltype(baseComponent->GetAsITKBaseType())
 
static void InitializeElastixExecutable ()
 
static bool IsElastixLibrary ()
 

Protected Member Functions

virtual void PreComputeGridInformation ()
 
 RecursiveBSplineTransform ()=default
 
 ~RecursiveBSplineTransform () override=default
 
- Protected Member Functions inherited from itk::AdvancedCombinationTransform< elx::TransformBase< TElastix >::CoordRepType, elx::TransformBase< TElastix >::FixedImageDimension >
 AdvancedCombinationTransform ()
 
void EvaluateJacobianWithImageGradientProductNoCurrentTransform (const InputPointType &, const MovingImageGradientType &, DerivativeType &, NonZeroJacobianIndicesType &) const
 
void EvaluateJacobianWithImageGradientProductNoInitialTransform (const InputPointType &, const MovingImageGradientType &, DerivativeType &, NonZeroJacobianIndicesType &) const
 
void EvaluateJacobianWithImageGradientProductUseAddition (const InputPointType &, const MovingImageGradientType &, DerivativeType &, NonZeroJacobianIndicesType &) const
 
void EvaluateJacobianWithImageGradientProductUseComposition (const InputPointType &, const MovingImageGradientType &, DerivativeType &, NonZeroJacobianIndicesType &) const
 
void GetJacobianNoCurrentTransform (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
 
void GetJacobianNoInitialTransform (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
 
void GetJacobianOfSpatialHessianNoCurrentTransform (const InputPointType &inputPoint, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialHessianNoCurrentTransform (const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialHessianNoInitialTransform (const InputPointType &inputPoint, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialHessianNoInitialTransform (const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialHessianUseAddition (const InputPointType &inputPoint, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialHessianUseAddition (const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialHessianUseComposition (const InputPointType &inputPoint, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialHessianUseComposition (const InputPointType &inputPoint, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialJacobianNoCurrentTransform (const InputPointType &inputPoint, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialJacobianNoCurrentTransform (const InputPointType &inputPoint, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialJacobianNoInitialTransform (const InputPointType &inputPoint, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialJacobianNoInitialTransform (const InputPointType &inputPoint, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialJacobianUseAddition (const InputPointType &inputPoint, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialJacobianUseAddition (const InputPointType &inputPoint, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialJacobianUseComposition (const InputPointType &inputPoint, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianOfSpatialJacobianUseComposition (const InputPointType &inputPoint, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
 
void GetJacobianUseAddition (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
 
void GetJacobianUseComposition (const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
 
void GetSpatialHessianNoCurrentTransform (const InputPointType &inputPoint, SpatialHessianType &sh) const
 
void GetSpatialHessianNoInitialTransform (const InputPointType &inputPoint, SpatialHessianType &sh) const
 
void GetSpatialHessianUseAddition (const InputPointType &inputPoint, SpatialHessianType &sh) const
 
void GetSpatialHessianUseComposition (const InputPointType &inputPoint, SpatialHessianType &sh) const
 
void GetSpatialJacobianNoCurrentTransform (const InputPointType &inputPoint, SpatialJacobianType &sj) const
 
void GetSpatialJacobianNoInitialTransform (const InputPointType &inputPoint, SpatialJacobianType &sj) const
 
void GetSpatialJacobianUseAddition (const InputPointType &inputPoint, SpatialJacobianType &sj) const
 
void GetSpatialJacobianUseComposition (const InputPointType &inputPoint, SpatialJacobianType &sj) const
 
OutputPointType TransformPointNoCurrentTransform (const InputPointType &point) const
 
OutputPointType TransformPointNoInitialTransform (const InputPointType &point) const
 
OutputPointType TransformPointUseAddition (const InputPointType &point) const
 
OutputPointType TransformPointUseComposition (const InputPointType &point) const
 
void UpdateCombinationMethod ()
 
 ~AdvancedCombinationTransform () override=default
 
- Protected Member Functions inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
 AdvancedTransform ()=default
 
 ~AdvancedTransform () override=default
 
- Protected Member Functions inherited from elastix::TransformBase< TElastix >
void AutomaticScalesEstimation (ScalesType &scales) const
 
void AutomaticScalesEstimationStackTransform (const unsigned int numSubTransforms, ScalesType &scales) const
 
bool HasITKTransformParameters () const
 
 TransformBase ()=default
 
 ~TransformBase () override=default
 
- Protected Member Functions inherited from elastix::BaseComponentSE< TElastix >
 BaseComponentSE ()=default
 
 ~BaseComponentSE () override=default
 
- Protected Member Functions inherited from elastix::BaseComponent
 BaseComponent ()=default
 
virtual ~BaseComponent ()=default
 

Private Member Functions

ParameterMapType CreateDerivedTransformParametersMap () const override
 
unsigned int InitializeBSplineTransform ()
 
void InitializeTransform ()
 

Private Attributes

 elxOverrideGetSelfMacro
 
BSplineTransformBasePointer m_BSplineTransform
 
bool m_Cyclic
 
GridScheduleComputerPointer m_GridScheduleComputer
 
GridUpsamplerPointer m_GridUpsampler
 
unsigned int m_SplineOrder
 

Additional Inherited Members

- Protected Attributes inherited from itk::AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
bool m_HasNonZeroJacobianOfSpatialHessian { true }
 
bool m_HasNonZeroSpatialHessian { true }
 
- Protected Attributes inherited from elastix::BaseComponentSE< TElastix >
ConfigurationPointer m_Configuration {}
 
itk::WeakPointer< TElastix > m_Elastix {}
 
RegistrationTypem_Registration {}
 

Member Typedef Documentation

◆ BSplineTransformBasePointer

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::BSplineTransformBasePointer = typename BSplineTransformBaseType::Pointer

Definition at line 146 of file elxRecursiveBSplineTransform.h.

◆ BSplineTransformBaseType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::BSplineTransformBaseType = itk::AdvancedBSplineDeformableTransformBase<typename elx::TransformBase<TElastix>::CoordRepType, Self::SpaceDimension>

The ITK-class that provides most of the functionality, and that is set as the "CurrentTransform" in the CombinationTransform.

Definition at line 143 of file elxRecursiveBSplineTransform.h.

◆ CombinationTransformType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::CombinationTransformType = typename Superclass2::CombinationTransformType

Definition at line 182 of file elxRecursiveBSplineTransform.h.

◆ ConstPointer

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::ConstPointer = itk::SmartPointer<const Self>

Definition at line 123 of file elxRecursiveBSplineTransform.h.

◆ ContinuousIndexType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::ContinuousIndexType = typename BSplineTransformBaseType::ContinuousIndexType

Definition at line 172 of file elxRecursiveBSplineTransform.h.

◆ CoordRepType

template<class TElastix >
using elastix::TransformBase< TElastix >::CoordRepType = ElastixBase::CoordRepType

Elastix typedef's.

Definition at line 153 of file elxTransformBase.h.

◆ CyclicGridScheduleComputerType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::CyclicGridScheduleComputerType = itk::CyclicGridScheduleComputer<CoordRepType, SpaceDimension>

Definition at line 186 of file elxRecursiveBSplineTransform.h.

◆ DirectionType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::DirectionType = typename BSplineTransformBaseType::DirectionType

Definition at line 171 of file elxRecursiveBSplineTransform.h.

◆ FixedImageType

template<class TElastix >
using elastix::TransformBase< TElastix >::FixedImageType = typename TElastix::FixedImageType

Definition at line 154 of file elxTransformBase.h.

◆ GridScheduleComputerPointer

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::GridScheduleComputerPointer = typename GridScheduleComputerType::Pointer

Definition at line 187 of file elxRecursiveBSplineTransform.h.

◆ GridScheduleComputerType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::GridScheduleComputerType = itk::GridScheduleComputer<CoordRepType, SpaceDimension>

Typedef's for the GridScheduleComputer and the UpsampleBSplineParametersFilter.

Definition at line 185 of file elxRecursiveBSplineTransform.h.

◆ GridScheduleType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::GridScheduleType = typename GridScheduleComputerType ::VectorGridSpacingFactorType

Definition at line 188 of file elxRecursiveBSplineTransform.h.

◆ GridUpsamplerPointer

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::GridUpsamplerPointer = typename GridUpsamplerType::Pointer

Definition at line 190 of file elxRecursiveBSplineTransform.h.

◆ GridUpsamplerType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::GridUpsamplerType = itk::UpsampleBSplineParametersFilter<ParametersType, ImageType>

Definition at line 189 of file elxRecursiveBSplineTransform.h.

◆ ImagePointer

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::ImagePointer = typename BSplineTransformBaseType::ImagePointer

Definition at line 165 of file elxRecursiveBSplineTransform.h.

◆ ImageType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::ImageType = typename BSplineTransformBaseType::ImageType

Definition at line 164 of file elxRecursiveBSplineTransform.h.

◆ IndexType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::IndexType = typename BSplineTransformBaseType::IndexType

Definition at line 167 of file elxRecursiveBSplineTransform.h.

◆ ITKBaseType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::ITKBaseType = typename Superclass2::ITKBaseType

Definition at line 181 of file elxRecursiveBSplineTransform.h.

◆ MovingImageType

template<class TElastix >
using elastix::TransformBase< TElastix >::MovingImageType = typename TElastix::MovingImageType

Definition at line 155 of file elxTransformBase.h.

◆ OriginType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::OriginType = typename BSplineTransformBaseType::OriginType

Definition at line 170 of file elxRecursiveBSplineTransform.h.

◆ ParameterIndexArrayType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::ParameterIndexArrayType = typename BSplineTransformBaseType::ParameterIndexArrayType

Definition at line 173 of file elxRecursiveBSplineTransform.h.

◆ ParameterMapType

template<class TElastix >
using elastix::TransformBase< TElastix >::ParameterMapType = typename TElastix::ParameterMapType

Typedef that is used in the elastix dll version.

Definition at line 199 of file elxTransformBase.h.

◆ Pointer

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::Pointer = itk::SmartPointer<Self>

Definition at line 122 of file elxRecursiveBSplineTransform.h.

◆ RegionType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::RegionType = typename BSplineTransformBaseType::RegionType

Definition at line 166 of file elxRecursiveBSplineTransform.h.

◆ Self

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::Self = RecursiveBSplineTransform

Standard ITK-stuff.

Definition at line 118 of file elxRecursiveBSplineTransform.h.

◆ SizeType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::SizeType = typename BSplineTransformBaseType::SizeType

Definition at line 168 of file elxRecursiveBSplineTransform.h.

◆ SpacingType

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::SpacingType = typename BSplineTransformBaseType::SpacingType

Definition at line 169 of file elxRecursiveBSplineTransform.h.

◆ Superclass1

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::Superclass1 = itk::AdvancedCombinationTransform<typename elx::TransformBase<TElastix>::CoordRepType, elx::TransformBase<TElastix>::FixedImageDimension>

Definition at line 119 of file elxRecursiveBSplineTransform.h.

◆ Superclass2

template<class TElastix >
using elastix::RecursiveBSplineTransform< TElastix >::Superclass2 = elx::TransformBase<TElastix>

Definition at line 121 of file elxRecursiveBSplineTransform.h.

Constructor & Destructor Documentation

◆ RecursiveBSplineTransform()

template<class TElastix >
elastix::RecursiveBSplineTransform< TElastix >::RecursiveBSplineTransform ( )
protecteddefault

The constructor.

◆ ~RecursiveBSplineTransform()

template<class TElastix >
elastix::RecursiveBSplineTransform< TElastix >::~RecursiveBSplineTransform ( )
overrideprotecteddefault

The destructor.

Member Function Documentation

◆ BeforeAll()

template<class TElastix >
int elastix::RecursiveBSplineTransform< TElastix >::BeforeAll ( )
overridevirtual

Execute stuff before anything else is done:

  • Initialize the right BSplineTransform.
  • Initialize the right grid schedule computer.

Reimplemented from elastix::BaseComponent.

◆ BeforeEachResolution()

template<class TElastix >
void elastix::RecursiveBSplineTransform< TElastix >::BeforeEachResolution ( )
overridevirtual

Execute stuff before each new pyramid resolution:

  • In the first resolution call InitializeTransform().
  • In next resolutions upsample the B-spline grid if necessary (so, call IncreaseScale())

Reimplemented from elastix::BaseComponent.

◆ BeforeRegistration()

template<class TElastix >
void elastix::RecursiveBSplineTransform< TElastix >::BeforeRegistration ( )
overridevirtual

Execute stuff before the actual registration:

  • Create an initial B-spline grid.
  • Create initial registration parameters.
  • PrecomputeGridInformation Initially, the transform is set to use a 1x1x1 grid, with deformation (0,0,0). In the method BeforeEachResolution() this will be replaced by the right grid size. This seems not logical, but it is required, since the registration class checks if the number of parameters in the transform is equal to the number of parameters in the registration class. This check is done before calling the BeforeEachResolution() methods.

Reimplemented from elastix::BaseComponent.

◆ CreateDerivedTransformParametersMap()

template<class TElastix >
ParameterMapType elastix::RecursiveBSplineTransform< TElastix >::CreateDerivedTransformParametersMap ( ) const
overrideprivatevirtual

Creates a map of the parameters specific for this (derived) transform type.

Implements elastix::TransformBase< TElastix >.

◆ elxClassNameMacro()

template<class TElastix >
elastix::RecursiveBSplineTransform< TElastix >::elxClassNameMacro ( "RecursiveBSplineTransform< TElastix >"  )

Name of this class. Use this name in the parameter file to select this specific transform.
example: (Transform "RecursiveBSplineTransform")

◆ GetClassName()

template<class TElastix >
virtual const char * elastix::RecursiveBSplineTransform< TElastix >::GetClassName ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from elastix::TransformBase< TElastix >.

◆ IncreaseScale()

template<class TElastix >
virtual void elastix::RecursiveBSplineTransform< TElastix >::IncreaseScale ( )
virtual

Method to increase the density of the B-spline grid.

  • Determine the new B-spline coefficients that describe the current deformation field.
  • Set these coefficients as InitialParametersOfNextLevel in the registration object. Called by BeforeEachResolution().

◆ InitializeBSplineTransform()

template<class TElastix >
unsigned int elastix::RecursiveBSplineTransform< TElastix >::InitializeBSplineTransform ( )
private

Initialize the right B-spline transform based on the spline order and periodicity.

◆ InitializeTransform()

template<class TElastix >
void elastix::RecursiveBSplineTransform< TElastix >::InitializeTransform ( )
private

Method to set the initial B-spline grid and initialize the parameters (to 0).

  • Define the initial grid region, origin and spacing, using the precomputed grid information.
  • Set the initial parameters to zero and set then as InitialParametersOfNextLevel in the registration object. Called by BeforeEachResolution().

◆ ITK_DISALLOW_COPY_AND_MOVE()

template<class TElastix >
elastix::RecursiveBSplineTransform< TElastix >::ITK_DISALLOW_COPY_AND_MOVE ( RecursiveBSplineTransform< TElastix >  )

◆ itkStaticConstMacro()

template<class TElastix >
elastix::RecursiveBSplineTransform< TElastix >::itkStaticConstMacro ( SpaceDimension  ,
unsigned int  ,
Superclass2::FixedImageDimension   
)

Dimension of the fixed image.

◆ New()

template<class TElastix >
static Pointer elastix::RecursiveBSplineTransform< TElastix >::New ( )
static

Method for creation through the object factory.

◆ PreComputeGridInformation()

template<class TElastix >
virtual void elastix::RecursiveBSplineTransform< TElastix >::PreComputeGridInformation ( )
protectedvirtual

Read user-specified grid spacing and call the itkGridScheduleComputer.

◆ ReadFromFile()

template<class TElastix >
void elastix::RecursiveBSplineTransform< TElastix >::ReadFromFile ( )
overridevirtual

Function to read transform-parameters from a file.

Reimplemented from elastix::TransformBase< TElastix >.

◆ SetOptimizerScales()

template<class TElastix >
virtual void elastix::RecursiveBSplineTransform< TElastix >::SetOptimizerScales ( const unsigned int  edgeWidth)
virtual

Set the scales of the edge B-spline coefficients to zero.

Field Documentation

◆ elxOverrideGetSelfMacro

template<class TElastix >
elastix::RecursiveBSplineTransform< TElastix >::elxOverrideGetSelfMacro
private

Definition at line 251 of file elxRecursiveBSplineTransform.h.

◆ m_BSplineTransform

template<class TElastix >
BSplineTransformBasePointer elastix::RecursiveBSplineTransform< TElastix >::m_BSplineTransform
private

Private variables.

Definition at line 266 of file elxRecursiveBSplineTransform.h.

◆ m_Cyclic

template<class TElastix >
bool elastix::RecursiveBSplineTransform< TElastix >::m_Cyclic
private

Definition at line 272 of file elxRecursiveBSplineTransform.h.

◆ m_GridScheduleComputer

template<class TElastix >
GridScheduleComputerPointer elastix::RecursiveBSplineTransform< TElastix >::m_GridScheduleComputer
private

Definition at line 267 of file elxRecursiveBSplineTransform.h.

◆ m_GridUpsampler

template<class TElastix >
GridUpsamplerPointer elastix::RecursiveBSplineTransform< TElastix >::m_GridUpsampler
private

Definition at line 268 of file elxRecursiveBSplineTransform.h.

◆ m_SplineOrder

template<class TElastix >
unsigned int elastix::RecursiveBSplineTransform< TElastix >::m_SplineOrder
private

Variables to remember order and periodicity of B-spline transform.

Definition at line 271 of file elxRecursiveBSplineTransform.h.



Generated on 2023-01-13 for elastix by doxygen 1.9.6 elastix logo