Loading...
Searching...
No Matches
itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType > Class Template Reference

`#include <itkReducedDimensionBSplineInterpolateImageFunction.h>`

## Detailed Description

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
class itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >

Evaluates the B-Spline interpolation of an image. Spline order may be from 0 to 5.

This class defines N-Dimension B-Spline transformation. It is based on:
[1] M. Unser, "Splines: A Perfect Fit for Signal and Image Processing," IEEE Signal Processing Magazine, vol. 16, no. 6, pp. 22-38, November 1999.
[2] M. Unser, A. Aldroubi and M. Eden, "B-Spline Signal Processing: Part I--Theory," IEEE Transactions on Signal Processing, vol. 41, no. 2, pp. 821-832, February 1993.
[3] M. Unser, A. Aldroubi and M. Eden, "B-Spline Signal Processing: Part II--Efficient Design and Applications," IEEE Transactions on Signal Processing, vol. 41, no. 2, pp. 834-848, February 1993.
And code obtained from bigwww.epfl.ch by Philippe Thevenaz.

The B spline coefficients are calculated through the MultiOrderBSplineDecompositionImageFilter to enable a zero-th order for the last dimension.

Limitations: Spline order must be between 0 and 5. Spline order must be set before setting the image. Requires same spline order for every dimension. Uses mirror boundary conditions. Spline is determined in all dimensions, cannot selectively pick dimension for calculating spline.

See also
  MultiOrderBSplineDecompositionImageFilter

Definition at line 85 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

Inheritance diagram for itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >:
[legend]

## Public Types

using | CoefficientDataType = TCoefficientType
using | CoefficientFilter = MultiOrderBSplineDecompositionImageFilter<TImageType, CoefficientImageType>
using | CoefficientFilterPointer = typename CoefficientFilter::Pointer
using | CoefficientImageType = Image<CoefficientDataType, Self::ImageDimension>
using | ConstPointer = SmartPointer<const Self>
using | CovariantVectorType = CovariantVector<OutputType, Self::ImageDimension>
using | Pointer = SmartPointer<Self>
using | Self = ReducedDimensionBSplineInterpolateImageFunction
using | SizeType = typename TImageType::SizeType
using | Superclass = InterpolateImageFunction<TImageType, TCoordRep>

## Public Member Functions

OutputType | EvaluateAtContinuousIndex (const ContinuousIndexType &index) const override
CovariantVectorType | EvaluateDerivative (const PointType &point) const
CovariantVectorType | EvaluateDerivativeAtContinuousIndex (const ContinuousIndexType &x) const
virtual const char * | GetClassName () const
virtual int | GetSplineOrder () const
virtual bool | GetUseImageDirection () const
| ITK_DISALLOW_COPY_AND_MOVE (ReducedDimensionBSplineInterpolateImageFunction)
| itkStaticConstMacro (ImageDimension, unsigned int, Superclass::ImageDimension)
void | SetInputImage (const TImageType *inputData) override
void | SetSplineOrder (unsigned int SplineOrder)
virtual void | SetUseImageDirection (bool _arg)
virtual void | UseImageDirectionOff ()
virtual void | UseImageDirectionOn ()

## Static Public Member Functions

static Pointer | New ()

## Protected Member Functions

void | PrintSelf (std::ostream &os, Indent indent) const override
| ReducedDimensionBSplineInterpolateImageFunction ()
| ~ReducedDimensionBSplineInterpolateImageFunction () override=default

## Protected Attributes

CoefficientImageType::ConstPointer | m_Coefficients {}
TImageType::SizeType | m_DataLength {}
unsigned int | m_SplineOrder {}

## Private Member Functions

void | ApplyMirrorBoundaryConditions (vnl_matrix< long > &evaluateIndex, unsigned int splineOrder) const
void | DetermineRegionOfSupport (vnl_matrix< long > &evaluateIndex, const ContinuousIndexType &x, unsigned int splineOrder) const
void | GeneratePointsToIndex ()
SizeType | GetRadius () const override
void | SetDerivativeWeights (const ContinuousIndexType &x, const vnl_matrix< long > &EvaluateIndex, vnl_matrix< double > &weights, unsigned int splineOrder) const
void | SetInterpolationWeights (const ContinuousIndexType &x, const vnl_matrix< long > &EvaluateIndex, vnl_matrix< double > &weights, unsigned int splineOrder) const

## Private Attributes

CoefficientFilterPointer | m_CoefficientFilter {}
std::vector< IndexType > | m_PointsToIndex {}
bool | m_UseImageDirection {}

## Member Typedef Documentation

## CoefficientDataType

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientDataType = TCoefficientType

Internal Coefficient typedef support

Definition at line 124 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## CoefficientFilter

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientFilter = MultiOrderBSplineDecompositionImageFilter<TImageType, CoefficientImageType>

Define filter for calculating the BSpline coefficients

Definition at line 128 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## CoefficientFilterPointer

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientFilterPointer = typename CoefficientFilter::Pointer

Definition at line 130 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## CoefficientImageType

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientImageType = Image<CoefficientDataType, Self::ImageDimension>

Definition at line 125 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## ConstPointer

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ConstPointer = SmartPointer<const Self>

Definition at line 95 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## CovariantVectorType

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CovariantVectorType = CovariantVector<OutputType, Self::ImageDimension>

Derivative typedef support

Definition at line 144 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## Pointer

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::Pointer = SmartPointer<Self>

Definition at line 94 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## Self

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::Self = ReducedDimensionBSplineInterpolateImageFunction

Standard class typedefs.

Definition at line 92 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## SizeType

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::SizeType = typename TImageType::SizeType

Definition at line 106 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## Superclass

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

using itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::Superclass = InterpolateImageFunction<TImageType, TCoordRep>

Definition at line 93 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## Constructor & Destructor Documentation

## ReducedDimensionBSplineInterpolateImageFunction()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ReducedDimensionBSplineInterpolateImageFunction | ( |  | ) |

protected

## ~ReducedDimensionBSplineInterpolateImageFunction()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::~ReducedDimensionBSplineInterpolateImageFunction | ( |  | ) |

override protected default

## Member Function Documentation

## ApplyMirrorBoundaryConditions()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ApplyMirrorBoundaryConditions | ( | vnl_matrix< long > & | evaluateIndex,
|  | unsigned int | splineOrder ) const

private

Set the indicies in evaluateIndex at the boundaries based on mirror boundary conditions.

## DetermineRegionOfSupport()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::DetermineRegionOfSupport | ( | vnl_matrix< long > & | evaluateIndex,
|  | const ContinuousIndexType & | x,
|  | unsigned int | splineOrder ) const

private

Determines the indicies to use give the splines region of support

## EvaluateAtContinuousIndex()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

OutputType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::EvaluateAtContinuousIndex | ( | const ContinuousIndexType & | index | ) | const

override

Evaluate the function at a ContinuousIndex position.

Returns the B-Spline interpolated image intensity at a specified point position. No bounds checking is done. The point is assume to lie within the image buffer.

ImageFunction::IsInsideBuffer() can be used to check bounds before calling the method.

## EvaluateDerivative()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

CovariantVectorType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::EvaluateDerivative | ( | const PointType & | point | ) | const

inline

Definition at line 147 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## EvaluateDerivativeAtContinuousIndex()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

CovariantVectorType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::EvaluateDerivativeAtContinuousIndex | ( | const ContinuousIndexType & | x | ) | const

## GeneratePointsToIndex()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::GeneratePointsToIndex | ( |  | ) |

private

Precomputation for converting the 1D index of the interpolation neighborhood to an N-dimensional index.

## GetClassName()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

virtual const char * itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::GetClassName | ( |  | ) | const

virtual

Run-time type information (and related methods).

Reimplemented in elastix::ReducedDimensionBSplineInterpolator< TElastix >, and elastix::ReducedDimensionBSplineResampleInterpolator< TElastix >.

## GetRadius()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

SizeType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::GetRadius | ( |  | ) | const

inline override private

Definition at line 198 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## GetSplineOrder()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

virtual int itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::GetSplineOrder | ( |  | ) | const

virtual

## GetUseImageDirection()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

virtual bool itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::GetUseImageDirection | ( |  | ) | const

virtual

## ITK_DISALLOW_COPY_AND_MOVE()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ITK_DISALLOW_COPY_AND_MOVE | ( | ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType > |  | ) |

## itkStaticConstMacro()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::itkStaticConstMacro | ( | ImageDimension | ,
|  | unsigned int | ,
|  | Superclass::ImageDimension | )

Dimension underlying input image.

## New()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

Pointer itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::New | ( |  | ) |

static

New macro for creation of through a Smart Pointer

## PrintSelf()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::PrintSelf | ( | std::ostream & | os,
|  | Indent | indent ) const

override protected

## SetDerivativeWeights()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::SetDerivativeWeights | ( | const ContinuousIndexType & | x,
|  | const vnl_matrix< long > & | EvaluateIndex,
|  | vnl_matrix< double > & | weights,
|  | unsigned int | splineOrder ) const

private

Determines the weights for the derivative portion of the value x

## SetInputImage()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::SetInputImage | ( | const TImageType * | inputData | ) |

override

Set the input image. This must be set by the user.

## SetInterpolationWeights()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::SetInterpolationWeights | ( | const ContinuousIndexType & | x,
|  | const vnl_matrix< long > & | EvaluateIndex,
|  | vnl_matrix< double > & | weights,
|  | unsigned int | splineOrder ) const

private

Determines the weights for interpolation of the value x

## SetSplineOrder()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::SetSplineOrder | ( | unsigned int | SplineOrder | ) |

Get/Sets the Spline Order, supports 0th - 5th order splines. The default is a 3rd order spline.

## SetUseImageDirection()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

virtual void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::SetUseImageDirection | ( | bool | _arg | ) |

virtual

The UseImageDirection flag determines whether image derivatives are computed with respect to the image grid or with respect to the physical space. When this flag is ON the derivatives are computed with respect to the coordinate system of physical space. The difference is whether we take into account the image Direction or not. The flag ON will take into account the image direction and will result in an extra matrix multiplication compared to the amount of computation performed when the flag is OFF. The default value of this flag is the same as the CMAKE option ITK_IMAGE_BEHAVES_AS_ORIENTED_IMAGE (i.e ON by default when ITK_IMAGE_BEHAVES_AS_ORIENTED_IMAGE is ON, and OFF by default when ITK_IMAGE_BEHAVES_AS_ORIENTED_IMAGE is OFF).

## UseImageDirectionOff()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

virtual void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::UseImageDirectionOff | ( |  | ) |

virtual

## UseImageDirectionOn()

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

virtual void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::UseImageDirectionOn | ( |  | ) |

virtual

## Field Documentation

## m_CoefficientFilter

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

CoefficientFilterPointer itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_CoefficientFilter {}

private

Definition at line 235 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## m_Coefficients

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

CoefficientImageType::ConstPointer itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_Coefficients {}

protected

Definition at line 194 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## m_DataLength

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

TImageType::SizeType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_DataLength {}

protected

Definition at line 191 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## m_PointsToIndex

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

std::vector<IndexType> itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_PointsToIndex {}

private

Definition at line 233 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## m_SplineOrder

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

unsigned int itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_SplineOrder {}

protected

Definition at line 192 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

## m_UseImageDirection

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>

bool itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_UseImageDirection {}

private

Definition at line 239 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

Generated on 1768596610 for elastix by 1.15.0 |