go home Home | Main Page | Topics | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elastix::AdvancedBSplineTransform< TElastix > Class Template Reference

#include <elxAdvancedBSplineTransform.h>

Detailed Description

template<typename TElastix>
class elastix::AdvancedBSplineTransform< TElastix >

A transform based on the itkAdvancedBSplineTransform.

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 "BSplineTransform")

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.
The matrix elements must be specified in column-major order.
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 110 of file elxAdvancedBSplineTransform.h.

Inheritance diagram for elastix::AdvancedBSplineTransform< TElastix >:

Public Types

using BSplineTransformBasePointer = typename BSplineTransformBaseType::Pointer
using BSplineTransformBaseType
using CombinationTransformType = typename Superclass2::CombinationTransformType
using ConstPointer = itk::SmartPointer<const Self>
using ContinuousIndexType = typename BSplineTransformBaseType::ContinuousIndexType
using CoordinateType
using CyclicGridScheduleComputerType = itk::CyclicGridScheduleComputer<CoordinateType, SpaceDimension>
using DirectionType = typename BSplineTransformBaseType::DirectionType
using FixedImageType
using GridScheduleComputerPointer = typename GridScheduleComputerType::Pointer
using GridScheduleComputerType = itk::GridScheduleComputer<CoordinateType, 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
using OriginType = typename BSplineTransformBaseType::OriginType
using ParameterIndexArrayType = typename BSplineTransformBaseType::ParameterIndexArrayType
using ParameterMapType
using Pointer = itk::SmartPointer<Self>
using RegionType = typename BSplineTransformBaseType::RegionType
using Self = AdvancedBSplineTransform
using SizeType = typename BSplineTransformBaseType::SizeType
using SpacingType = typename BSplineTransformBaseType::SpacingType
using Superclass1
using Superclass2 = elx::TransformBase<TElastix>
Public Types inherited from itk::AdvancedCombinationTransform< TScalarType, NDimensions >
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 InternalMatrixType
using InverseTransformBaseType = typename Superclass::InverseTransformBaseType
using JacobianOfSpatialHessianType
using JacobianOfSpatialJacobianType
using MovingImageGradientType
using MovingImageGradientValueType
using NonZeroJacobianIndicesType
using Pointer = SmartPointer<Self>
using Self = AdvancedCombinationTransform
using SpatialHessianType
using SpatialJacobianType
using Superclass = AdvancedTransform<TScalarType, NDimensions, NDimensions>
using TransformType = typename Superclass::TransformType
using TransformTypeConstPointer = typename TransformType::ConstPointer
using TransformTypePointer = typename TransformType::Pointer
Public Types inherited from itk::AdvancedTransform< TScalarType, 3, 3 >
using ConstPointer
using InternalMatrixType
using InverseTransformBaseType
using JacobianOfSpatialHessianType
using JacobianOfSpatialJacobianType
using MovingImageGradientType
using MovingImageGradientValueType
using NonZeroJacobianIndicesType
using Pointer
using Self
using SpatialHessianType
using SpatialJacobianType
using Superclass
using TransformType
using TransformTypeConstPointer
using TransformTypePointer
Public Types inherited from elastix::TransformBase< TElastix >
using CombinationTransformType = itk::AdvancedCombinationTransform<CoordinateType, Self::FixedImageDimension>
using CommandLineArgumentMapType = Configuration ::CommandLineArgumentMapType
using CommandLineEntryType = Configuration ::CommandLineEntryType
using ComponentDescriptionType = ComponentDatabase::ComponentDescriptionType
using CoordinateType = ElastixBase::CoordinateType
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 PtrToCreator = ComponentDatabase::PtrToCreator
using RegistrationType
using ScalesType = itk::Optimizer::ScalesType
using Self = TransformBase
using SpatialJacobianDeterminantImageType = itk::Image<float, FixedImageDimension>
using SpatialJacobianMatrixImageType
using Superclass = BaseComponentSE<TElastix>
using ValueType = double
using VectorPixelType = itk::Vector<float, FixedImageDimension>
Public Types inherited from elastix::BaseComponentSE< TElastix >
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 ("BSplineTransform")
virtual void IncreaseScale ()
 ITK_DISALLOW_COPY_AND_MOVE (AdvancedBSplineTransform)
 itkOverrideGetNameOfClassMacro (AdvancedBSplineTransform)
 itkStaticConstMacro (SpaceDimension, unsigned int, Superclass2::FixedImageDimension)
void ReadFromFile () override
virtual void SetOptimizerScales (const unsigned int edgeWidth)
Public Member Functions inherited from itk::AdvancedCombinationTransform< TScalarType, NDimensions >
void EvaluateJacobianWithImageGradientProduct (const InputPointType &inputPoint, const MovingImageGradientType &movingImageGradient, DerivativeType &imageJacobian, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
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)
 itkOverrideGetNameOfClassMacro (AdvancedCombinationTransform)
 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, 3, 3 >
void ComputeJacobianWithRespectToParameters (const InputPointType &, JacobianType &) const override
virtual bool GetHasNonZeroJacobianOfSpatialHessian () const
 ITK_DISALLOW_COPY_AND_MOVE (AdvancedTransform)
 itkOverrideGetNameOfClassMacro (AdvancedTransform)
 itkStaticConstMacro (InputSpaceDimension, unsigned int, NInputDimensions)
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 CreateTransformParameterMap (const ParametersType &param, ParameterMapType &parameterMap, const bool includeDerivedTransformParameters=true) const
ITKBaseTypeGetAsITKBaseType ()
const ITKBaseTypeGetAsITKBaseType () const
 ITK_DISALLOW_COPY_AND_MOVE (TransformBase)
 itkOverrideGetNameOfClassMacro (TransformBase)
 itkStaticConstMacro (FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
 itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
void ReadInitialTransformFromFile (const std::string &transformParameterFileName)
void SetFinalParameters ()
void SetInitialTransform (InitialTransformType *_arg)
void SetReadWriteTransformParameters (const bool _arg)
void SetTransformParameterFileName (const std::string &filename)
template<typename TMesh>
TMesh::Pointer TransformMesh (const TMesh &mesh) const
void TransformPoints () const
void WriteToFile (std::ostream &transformationParameterInfo, const ParametersType &param) const
Public Member Functions inherited from elastix::BaseComponentSE< TElastix >
void AddTargetCellToIterationInfo (const char *const name)
const ConfigurationGetConfiguration () const
ElastixTypeGetElastix () const
auto & GetIterationInfoAt (const char *const name)
itk::Statistics::MersenneTwisterRandomVariateGenerator & GetRandomVariateGenerator ()
RegistrationTypeGetRegistration () const
 ITK_DISALLOW_COPY_AND_MOVE (BaseComponentSE)
void RemoveTargetCellFromIterationInfo (const char *const name)
void SetConfiguration (const 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 BeforeEachResolutionBase ()
virtual const char * elxGetClassName () const
const char * GetComponentLabel () const
 ITK_DISALLOW_COPY_AND_MOVE (BaseComponent)
 itkVirtualGetNameOfClassMacro (BaseComponent)
void SetComponentLabel (const char *label, unsigned int idx)

Static Public Member Functions

static Pointer New ()
Static Public Member Functions inherited from itk::AdvancedCombinationTransform< TScalarType, NDimensions >
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

 AdvancedBSplineTransform ()=default
virtual void PreComputeGridInformation ()
 ~AdvancedBSplineTransform () override=default
Protected Member Functions inherited from itk::AdvancedCombinationTransform< TScalarType, NDimensions >
 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, 3, 3 >
 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 CreateDerivedTransformParameterMap () 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, 3, 3 >
bool m_HasNonZeroJacobianOfSpatialHessian
bool m_HasNonZeroSpatialHessian
Protected Attributes inherited from elastix::BaseComponentSE< TElastix >
Configuration::ConstPointer m_Configuration {}
itk::WeakPointer< TElastix > m_Elastix {}
RegistrationTypem_Registration {}

Member Typedef Documentation

◆ BSplineTransformBasePointer

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

Definition at line 147 of file elxAdvancedBSplineTransform.h.

◆ BSplineTransformBaseType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::BSplineTransformBaseType
Initial value:

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

Definition at line 144 of file elxAdvancedBSplineTransform.h.

◆ CombinationTransformType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::CombinationTransformType = typename Superclass2::CombinationTransformType

Definition at line 183 of file elxAdvancedBSplineTransform.h.

◆ ConstPointer

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::ConstPointer = itk::SmartPointer<const Self>

Definition at line 124 of file elxAdvancedBSplineTransform.h.

◆ ContinuousIndexType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::ContinuousIndexType = typename BSplineTransformBaseType::ContinuousIndexType

Definition at line 173 of file elxAdvancedBSplineTransform.h.

◆ CoordinateType

template<typename TElastix>
using elastix::TransformBase< TElastix >::CoordinateType

Elastix typedef's.

Definition at line 163 of file elxTransformBase.h.

◆ CyclicGridScheduleComputerType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::CyclicGridScheduleComputerType = itk::CyclicGridScheduleComputer<CoordinateType, SpaceDimension>

Definition at line 187 of file elxAdvancedBSplineTransform.h.

◆ DirectionType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::DirectionType = typename BSplineTransformBaseType::DirectionType

Definition at line 172 of file elxAdvancedBSplineTransform.h.

◆ FixedImageType

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

Definition at line 164 of file elxTransformBase.h.

◆ GridScheduleComputerPointer

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

Definition at line 188 of file elxAdvancedBSplineTransform.h.

◆ GridScheduleComputerType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::GridScheduleComputerType = itk::GridScheduleComputer<CoordinateType, SpaceDimension>

Typedef's for the GridScheduleComputer and the UpsampleBSplineParametersFilter.

Definition at line 186 of file elxAdvancedBSplineTransform.h.

◆ GridScheduleType

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

Definition at line 189 of file elxAdvancedBSplineTransform.h.

◆ GridUpsamplerPointer

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

Definition at line 191 of file elxAdvancedBSplineTransform.h.

◆ GridUpsamplerType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::GridUpsamplerType = itk::UpsampleBSplineParametersFilter<ParametersType, ImageType>

Definition at line 190 of file elxAdvancedBSplineTransform.h.

◆ ImagePointer

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::ImagePointer = typename BSplineTransformBaseType::ImagePointer

Definition at line 166 of file elxAdvancedBSplineTransform.h.

◆ ImageType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::ImageType = typename BSplineTransformBaseType::ImageType

Definition at line 165 of file elxAdvancedBSplineTransform.h.

◆ IndexType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::IndexType = typename BSplineTransformBaseType::IndexType

Definition at line 168 of file elxAdvancedBSplineTransform.h.

◆ ITKBaseType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::ITKBaseType = typename Superclass2::ITKBaseType

Definition at line 182 of file elxAdvancedBSplineTransform.h.

◆ MovingImageType

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

Definition at line 165 of file elxTransformBase.h.

◆ OriginType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::OriginType = typename BSplineTransformBaseType::OriginType

Definition at line 171 of file elxAdvancedBSplineTransform.h.

◆ ParameterIndexArrayType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::ParameterIndexArrayType = typename BSplineTransformBaseType::ParameterIndexArrayType

Definition at line 174 of file elxAdvancedBSplineTransform.h.

◆ ParameterMapType

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

Typedef that is used in the elastix dll version.

Definition at line 206 of file elxTransformBase.h.

◆ Pointer

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::Pointer = itk::SmartPointer<Self>

Definition at line 123 of file elxAdvancedBSplineTransform.h.

◆ RegionType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::RegionType = typename BSplineTransformBaseType::RegionType

Definition at line 167 of file elxAdvancedBSplineTransform.h.

◆ Self

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::Self = AdvancedBSplineTransform

Standard ITK-stuff.

Definition at line 119 of file elxAdvancedBSplineTransform.h.

◆ SizeType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::SizeType = typename BSplineTransformBaseType::SizeType

Definition at line 169 of file elxAdvancedBSplineTransform.h.

◆ SpacingType

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::SpacingType = typename BSplineTransformBaseType::SpacingType

Definition at line 170 of file elxAdvancedBSplineTransform.h.

◆ Superclass1

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::Superclass1
Initial value:
This class is the elastix base class for all Transforms.
This class combines two transforms: an 'initial transform' with a 'current transform'.

Definition at line 120 of file elxAdvancedBSplineTransform.h.

◆ Superclass2

template<typename TElastix>
using elastix::AdvancedBSplineTransform< TElastix >::Superclass2 = elx::TransformBase<TElastix>

Definition at line 122 of file elxAdvancedBSplineTransform.h.

Constructor & Destructor Documentation

◆ AdvancedBSplineTransform()

template<typename TElastix>
elastix::AdvancedBSplineTransform< TElastix >::AdvancedBSplineTransform ( )
protecteddefault

The constructor.

◆ ~AdvancedBSplineTransform()

template<typename TElastix>
elastix::AdvancedBSplineTransform< TElastix >::~AdvancedBSplineTransform ( )
overrideprotecteddefault

The destructor.

Member Function Documentation

◆ BeforeAll()

template<typename TElastix>
int elastix::AdvancedBSplineTransform< 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<typename TElastix>
void elastix::AdvancedBSplineTransform< TElastix >::BeforeEachResolution ( )
overridevirtual

Execute stuff before each new pyramid resolution:

Reimplemented from elastix::BaseComponent.

◆ BeforeRegistration()

template<typename TElastix>
void elastix::AdvancedBSplineTransform< 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.

◆ CreateDerivedTransformParameterMap()

template<typename TElastix>
ParameterMapType elastix::AdvancedBSplineTransform< TElastix >::CreateDerivedTransformParameterMap ( ) const
overrideprivatevirtual

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

Implements elastix::TransformBase< TElastix >.

◆ elxClassNameMacro()

template<typename TElastix>
elastix::AdvancedBSplineTransform< TElastix >::elxClassNameMacro ( "BSplineTransform" )

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

◆ IncreaseScale()

template<typename TElastix>
virtual void elastix::AdvancedBSplineTransform< 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<typename TElastix>
unsigned int elastix::AdvancedBSplineTransform< TElastix >::InitializeBSplineTransform ( )
private

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

◆ InitializeTransform()

template<typename TElastix>
void elastix::AdvancedBSplineTransform< 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<typename TElastix>
elastix::AdvancedBSplineTransform< TElastix >::ITK_DISALLOW_COPY_AND_MOVE ( AdvancedBSplineTransform< TElastix > )

◆ itkOverrideGetNameOfClassMacro()

template<typename TElastix>
elastix::AdvancedBSplineTransform< TElastix >::itkOverrideGetNameOfClassMacro ( AdvancedBSplineTransform< TElastix > )

Run-time type information (and related methods).

◆ itkStaticConstMacro()

template<typename TElastix>
elastix::AdvancedBSplineTransform< TElastix >::itkStaticConstMacro ( SpaceDimension ,
unsigned int ,
Superclass2::FixedImageDimension  )

Dimension of the fixed image.

◆ New()

template<typename TElastix>
Pointer elastix::AdvancedBSplineTransform< TElastix >::New ( )
static

Method for creation through the object factory.

◆ PreComputeGridInformation()

template<typename TElastix>
virtual void elastix::AdvancedBSplineTransform< TElastix >::PreComputeGridInformation ( )
protectedvirtual

Read user-specified grid spacing and call the itkGridScheduleComputer.

◆ ReadFromFile()

template<typename TElastix>
void elastix::AdvancedBSplineTransform< TElastix >::ReadFromFile ( )
overridevirtual

Function to read transform-parameters from a file.

Reimplemented from elastix::TransformBase< TElastix >.

◆ SetOptimizerScales()

template<typename TElastix>
virtual void elastix::AdvancedBSplineTransform< TElastix >::SetOptimizerScales ( const unsigned int edgeWidth)
virtual

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

Member Data Documentation

◆ elxOverrideGetSelfMacro

template<typename TElastix>
elastix::AdvancedBSplineTransform< TElastix >::elxOverrideGetSelfMacro
private

Definition at line 252 of file elxAdvancedBSplineTransform.h.

◆ m_BSplineTransform

template<typename TElastix>
BSplineTransformBasePointer elastix::AdvancedBSplineTransform< TElastix >::m_BSplineTransform
private

Private variables.

Definition at line 267 of file elxAdvancedBSplineTransform.h.

◆ m_Cyclic

template<typename TElastix>
bool elastix::AdvancedBSplineTransform< TElastix >::m_Cyclic
private

Definition at line 273 of file elxAdvancedBSplineTransform.h.

◆ m_GridScheduleComputer

template<typename TElastix>
GridScheduleComputerPointer elastix::AdvancedBSplineTransform< TElastix >::m_GridScheduleComputer
private

Definition at line 268 of file elxAdvancedBSplineTransform.h.

◆ m_GridUpsampler

template<typename TElastix>
GridUpsamplerPointer elastix::AdvancedBSplineTransform< TElastix >::m_GridUpsampler
private

Definition at line 269 of file elxAdvancedBSplineTransform.h.

◆ m_SplineOrder

template<typename TElastix>
unsigned int elastix::AdvancedBSplineTransform< TElastix >::m_SplineOrder
private

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

Definition at line 272 of file elxAdvancedBSplineTransform.h.



Generated on 26-02-2026 for elastix by doxygen 1.16.1 (669aeeefca743c148e2d935b3d3c69535c7491e6) elastix logo