#include <itkBSplineDeformableTransform.h>
Inheritance diagram for itk::BSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >:
Public Types | |
typedef BSplineDeformableTransform | Self |
typedef Transform< TScalarType, NDimensions, NDimensions > | Superclass |
typedef SmartPointer< Self > | Pointer |
typedef SmartPointer< const Self > | ConstPointer |
typedef Superclass::ScalarType | ScalarType |
typedef Superclass::ParametersType | ParametersType |
typedef Superclass::JacobianType | JacobianType |
typedef ParametersType::ValueType | PixelType |
typedef Image< PixelType, itkGetStaticConstMacro(SpaceDimension) | ImageType ) |
typedef ImageType::Pointer | ImagePointer |
typedef ImageRegion< itkGetStaticConstMacro(SpaceDimension) | RegionType ) |
typedef RegionType::IndexType | IndexType |
typedef RegionType::SizeType | SizeType |
typedef ImageType::SpacingType | SpacingType |
typedef ImageType::PointType | OriginType |
typedef Array< unsigned long > | ParameterIndexArrayType |
typedef Vector< TScalarType, itkGetStaticConstMacro(SpaceDimension) | InputVectorType ) |
typedef Vector< TScalarType, itkGetStaticConstMacro(SpaceDimension) | OutputVectorType ) |
typedef CovariantVector< TScalarType, itkGetStaticConstMacro(SpaceDimension) | InputCovariantVectorType ) |
typedef CovariantVector< TScalarType, itkGetStaticConstMacro(SpaceDimension) | OutputCovariantVectorType ) |
typedef vnl_vector_fixed< TScalarType, itkGetStaticConstMacro(SpaceDimension) | InputVnlVectorType ) |
typedef vnl_vector_fixed< TScalarType, itkGetStaticConstMacro(SpaceDimension) | OutputVnlVectorType ) |
typedef Point< TScalarType, itkGetStaticConstMacro(SpaceDimension) | InputPointType ) |
typedef Point< TScalarType, itkGetStaticConstMacro(SpaceDimension) | OutputPointType ) |
typedef Transform< ScalarType, itkGetStaticConstMacro(SpaceDimension), itkGetStaticConstMacro(SpaceDimension) | BulkTransformType ) |
typedef BulkTransformType::ConstPointer | BulkTransformPointer |
typedef BSplineInterpolationWeightFunction< ScalarType, itkGetStaticConstMacro(SpaceDimension), itkGetStaticConstMacro(SplineOrder) | WeightsFunctionType ) |
typedef WeightsFunctionType::WeightsType | WeightsType |
typedef WeightsFunctionType::ContinuousIndexType | ContinuousIndexType |
Public Member Functions | |
virtual const char * | GetNameOfClass () const |
itkStaticConstMacro (SpaceDimension, unsigned int, NDimensions) | |
itkStaticConstMacro (SplineOrder, unsigned int, VSplineOrder) | |
void | SetParameters (const ParametersType ¶meters) |
void | SetParametersByValue (const ParametersType ¶meters) |
void | SetIdentity () |
virtual const ParametersType & | GetParameters (void) const |
virtual const ParametersType & | GetFixedParameters (void) const |
virtual ImagePointer * | GetCoefficientImage () |
virtual void | SetCoefficientImage (ImagePointer images[]) |
OutputPointType | TransformPoint (const InputPointType &point) const |
virtual void | TransformPoint (const InputPointType &inputPoint, OutputPointType &outputPoint, WeightsType &weights, ParameterIndexArrayType &indices, bool &inside) const |
unsigned long | GetNumberOfWeights () const |
virtual const JacobianType & | GetJacobian (const InputPointType &point) const |
virtual unsigned int | GetNumberOfParameters (void) const |
unsigned int | GetNumberOfParametersPerDimension (void) const |
virtual const RegionType & | GetValidRegion () |
void | SetFixedParameters (const ParametersType ¶meters) |
virtual void | SetGridRegion (const RegionType ®ion) |
virtual RegionType | GetGridRegion () |
virtual RegionType | GetGridRegion () const |
virtual void | SetGridSpacing (const SpacingType &spacing) |
virtual SpacingType | GetGridSpacing () |
virtual SpacingType | GetGridSpacing () const |
virtual void | SetGridOrigin (const OriginType &origin) |
virtual OriginType | GetGridOrigin () |
virtual OriginType | GetGridOrigin () const |
virtual void | SetBulkTransform (const BulkTransformType *_arg) |
virtual const BulkTransformType * | GetBulkTransform () |
virtual OutputVectorType | TransformVector (const InputVectorType &) const |
virtual OutputVnlVectorType | TransformVector (const InputVnlVectorType &) const |
virtual OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &) const |
Static Public Member Functions | |
Pointer | New () |
Protected Member Functions | |
void | PrintSelf (std::ostream &os, Indent indent) const |
BSplineDeformableTransform () | |
virtual | ~BSplineDeformableTransform () |
void | WrapAsImages () |
virtual void | SetWeightsFunction (WeightsFunctionType *_arg) |
virtual WeightsFunctionType * | GetWeightsFunction () |
This class encapsulates a deformable transform of points from one N-dimensional one space to another N-dimensional space. The deformation field is modeled using B-splines. A deformation is defined on a sparse regular grid of control points and is varied by defining a deformation of each control point. The deformation at any point is obtained by using a B-spline interpolation kernel.
The deformation field grid is defined by a user specified GridRegion, GridSpacing and GridOrigin. Each grid/control point has associated with it N deformation coefficients , representing the N directional components of the deformation. Deformation outside the grid plus support region for the BSpline interpolation is assumed to be zero.
Additionally, the user can specified an addition bulk transform such that the transformed point is given by:
The parameters for this transform is N x N-D grid of spline coefficients. The user specifies the parameters as one flat array: each N-D grid is represented by an array in the same way an N-D image is represented in the buffer; the N arrays are then concatentated together on form a single array.
For efficiency, this transform does not make a copy of the parameters. It only keeps a pointer to the input parameters and assumes that the memory is managed by the caller.
The following illustrates the typical usage of this class:
* typedef BSplineDeformableTransform<double,2,3> TransformType; * TransformType::Pointer transform = TransformType::New(); * * transform->SetGridRegion( region ); * transform->SetGridSpacing( spacing ); * transform->SetGridOrigin( origin ); * * // NB: the region must be set first before setting the parameters * * TransformType::ParametersType parameters( transform->GetNumberOfParameters() ); * * // Fill the parameters with values * * transform->SetParameters( parameters ) * * outputPoint = transform->TransformPoint( inputPoint ); * *
An alternative way to set the B-spline coefficients is via array of images. The grid region, spacing and origin information is taken directly from the first image. It is assumed that the subsequent images are the same buffered region. The following illustrates the API:
* * TransformType::ImageConstPointer images[2]; * * // Fill the images up with values * * transform->SetCoefficientImages( images ); * outputPoint = transform->TransformPoint( inputPoint ); * *
Warning: use either the SetParameters() or SetCoefficientImage() API. Mixing the two modes may results in unexpected results.
The class is templated coordinate representation type (float or double), the space dimension and the spline order.
Definition at line 110 of file itkBSplineDeformableTransform.h.
|
Typedef of the bulk transform. Definition at line 293 of file itkBSplineDeformableTransform.h. |
|
Typedef of the bulk transform. Definition at line 292 of file itkBSplineDeformableTransform.h. |
|
Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 118 of file itkBSplineDeformableTransform.h. |
|
Interpolation weights function type. Definition at line 311 of file itkBSplineDeformableTransform.h. |
|
Definition at line 245 of file itkBSplineDeformableTransform.h. |
|
Definition at line 244 of file itkBSplineDeformableTransform.h. |
|
Definition at line 267 of file itkBSplineDeformableTransform.h. |
|
Standard covariant vector type for this class. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 150 of file itkBSplineDeformableTransform.h. |
|
Standard coordinate point type for this class. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 164 of file itkBSplineDeformableTransform.h. |
|
Standard vector type for this class. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 143 of file itkBSplineDeformableTransform.h. |
|
Standard vnl_vector type for this class. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 157 of file itkBSplineDeformableTransform.h. Referenced by itk::BSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::GetNumberOfWeights(). |
|
Standard Jacobian container. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 139 of file itkBSplineDeformableTransform.h. |
|
Definition at line 270 of file itkBSplineDeformableTransform.h. |
|
Standard covariant vector type for this class. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 152 of file itkBSplineDeformableTransform.h. |
|
Standard coordinate point type for this class. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 166 of file itkBSplineDeformableTransform.h. |
|
Standard vector type for this class. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 145 of file itkBSplineDeformableTransform.h. |
|
Standard vnl_vector type for this class. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 159 of file itkBSplineDeformableTransform.h. Referenced by itk::BSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::GetNumberOfWeights(). |
|
Parameter index array type. Definition at line 315 of file itkBSplineDeformableTransform.h. |
|
Standard parameters container. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 136 of file itkBSplineDeformableTransform.h. |
|
Parameters as SpaceDimension number of images. Definition at line 243 of file itkBSplineDeformableTransform.h. |
|
Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 117 of file itkBSplineDeformableTransform.h. |
|
Typedefs for specifying the extend to the grid. Definition at line 266 of file itkBSplineDeformableTransform.h. |
|
Standard scalar type for this class. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 133 of file itkBSplineDeformableTransform.h. |
|
Standard class typedefs. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 115 of file itkBSplineDeformableTransform.h. |
|
Definition at line 268 of file itkBSplineDeformableTransform.h. |
|
Definition at line 269 of file itkBSplineDeformableTransform.h. |
|
Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 116 of file itkBSplineDeformableTransform.h. |
|
Interpolation weights function type. Definition at line 309 of file itkBSplineDeformableTransform.h. |
|
Interpolation weights function type. Definition at line 310 of file itkBSplineDeformableTransform.h. |
|
|
|
|
|
This method specifies the bulk transform to be applied. The default is the identity transform. |
|
Get the array of coefficient images. Definition at line 248 of file itkBSplineDeformableTransform.h. |
|
Get the Transformation Fixed Parameters. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
This method specifies the grid origin. |
|
This method specifies the grid origin. |
|
This method specifies the region over which the grid resides. |
|
This method specifies the region over which the grid resides. |
|
This method specifies the grid spacing or resolution. |
|
This method specifies the grid spacing or resolution. |
|
Compute the Jacobian Matrix of the transformation at one point Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
Run-time type information (and related methods). Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
Return the number of parameters that completely define the Transfom Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
Return the number of parameters per dimension |
|
Get number of weights. Definition at line 331 of file itkBSplineDeformableTransform.h. References itk::BSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::InputVnlVectorType, itkExceptionMacro, and itk::BSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >::OutputVnlVectorType. |
|
Get the Transformation Parameters. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
Return the region of the grid wholly within the support region |
|
Allow subclasses to access and manipulate the weights function. |
|
The BSpline order. |
|
Dimension of the domain space. |
|
New macro for creation of through the object factory. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
Print contents of an BSplineDeformableTransform. Reimplemented from itk::Object. |
|
This method specifies the bulk transform to be applied. The default is the identity transform. |
|
Set the array of coefficient images. This is an alternative API for setting the BSpline coefficients as an array of SpaceDimension images. The grid region spacing and origin is taken from the first image. It is assume that the buffered region of all the subsequent images are the same as the first image. Note that no error checking is done. Warning: use either the SetParameters() or SetCoefficientImage() API. Mixing the two modes may results in unexpected results. |
|
This method sets the fixed parameters of the transform. For a BSpline deformation transform, the parameters are the following: Grid Size, Grid Origin, and Grid Spacing The fixed parameters are the three times the size of the templated dimensions. This function has the effect of make the following calls: transform->SetGridSpacing( spacing ); transform->SetGridOrigin( origin ); transform->SetGridRegion( bsplineRegion ); This function was added to allow the transform to work with the itkTransformReader/Writer I/O filters. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
This method specifies the grid origin. |
|
This method specifies the region over which the grid resides. |
|
This method specifies the grid spacing or resolution. |
|
This method can ONLY be invoked AFTER calling SetParameters(). This restriction is due to the fact that the BSplineDeformableTransform does not copy the array of paramters internally, instead it keeps a pointer to the user-provided array of parameters. This method is also in violation of the const-correctness of the parameters since the parameter array has been passed to the transform on a 'const' basis but the values get modified when the user invokes SetIdentity(). |
|
This method sets the parameters of the transform. For a BSpline deformation transform, the parameters are the BSpline coefficients on a sparse grid. The parameters are N number of N-D grid of coefficients. Each N-D grid is represented as a flat array of doubles (in the same configuration as an itk::Image). The N arrays are then concatenated to form one parameter array. For efficiency, this transform does not make a copy of the parameters. It only keeps a pointer to the input parameters. It assumes that the memory is managed by the caller. Use SetParametersByValue to force the transform to call copy the parameters. This method wraps each grid as itk::Image's using the user specified grid region, spacing and origin. NOTE: The grid region, spacing and origin must be set first. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
This method sets the parameters of the transform. For a BSpline deformation transform, the parameters are the BSpline coefficients on a sparse grid. The parameters are N number of N-D grid of coefficients. Each N-D grid is represented as a flat array of doubles (in the same configuration as an itk::Image). The N arrays are then concatenated to form one parameter array. This methods makes a copy of the parameters while for efficiency the SetParameters method does not. This method wraps each grid as itk::Image's using the user specified grid region, spacing and origin. NOTE: The grid region, spacing and origin must be set first. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
Allow subclasses to access and manipulate the weights function. |
|
Method to transform a CovariantVector - not applicable for this type of transform Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 351 of file itkBSplineDeformableTransform.h. |
|
Transform points by a BSpline deformable transformation. On return, weights contains the interpolation weights used to compute the deformation and indices of the x (zeroth) dimension coefficient parameters in the support region used to compute the deformation. Parameter indices for the i-th dimension can be obtained by adding ( i * this->GetNumberOfParametersPerDimension() ) to the indices array. |
|
Transform points by a BSpline deformable transformation. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. |
|
Method to transform a vnl_vector - not applicable for this type of transform Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 343 of file itkBSplineDeformableTransform.h. |
|
Method to transform a vector - not applicable for this type of transform. Reimplemented from itk::Transform< TScalarType, NDimensions, NDimensions >. Definition at line 335 of file itkBSplineDeformableTransform.h. |
|
Wrap flat array into images of coefficients. |