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 | Protected Attributes | Private Member Functions | Private Attributes
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 91 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

+ Inheritance diagram for itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >:

Public Types

typedef TCoefficientType CoefficientDataType
 
typedef MultiOrderBSplineDecompositionImageFilter< TImageType, CoefficientImageTypeCoefficientFilter
 
typedef CoefficientFilter::Pointer CoefficientFilterPointer
 
typedef Image< CoefficientDataType, itkGetStaticConstMacro(ImageDimension) > CoefficientImageType
 
typedef SmartPointer< const SelfConstPointer
 
typedef Superclass::ContinuousIndexType ContinuousIndexType
 
typedef CovariantVector< OutputType, itkGetStaticConstMacro(ImageDimension) > CovariantVectorType
 
typedef Superclass::IndexType IndexType
 
typedef Superclass::InputImageType InputImageType
 
typedef ImageLinearIteratorWithIndex< TImageType > Iterator
 
typedef Superclass::OutputType OutputType
 
typedef SmartPointer< SelfPointer
 
typedef Superclass::PointType PointType
 
typedef ReducedDimensionBSplineInterpolateImageFunction Self
 
using SizeType = typename TImageType::SizeType
 
typedef InterpolateImageFunction< TImageType, TCoordRep > Superclass
 

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
 
 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
 

Protected Attributes

CoefficientImageType::ConstPointer m_Coefficients
 
TImageType::SizeType m_DataLength
 
std::vector< CoefficientDataTypem_Scratch
 
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 operator= (const Self &)
 
 ReducedDimensionBSplineInterpolateImageFunction (const Self &)
 
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

Iterator m_CIterator
 
CoefficientFilterPointer m_CoefficientFilter
 
unsigned long m_MaxNumberInterpolationPoints
 
std::vector< IndexTypem_PointsToIndex
 
bool m_UseImageDirection
 

Member Typedef Documentation

◆ CoefficientDataType

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

Internal Coefficient typedef support

Definition at line 132 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ CoefficientFilter

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
typedef MultiOrderBSplineDecompositionImageFilter< TImageType, CoefficientImageType > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientFilter

Define filter for calculating the BSpline coefficients

Definition at line 139 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ CoefficientFilterPointer

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
typedef CoefficientFilter::Pointer itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientFilterPointer

◆ CoefficientImageType

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
typedef Image< CoefficientDataType, itkGetStaticConstMacro( ImageDimension ) > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientImageType

◆ ConstPointer

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
typedef SmartPointer< const Self > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ConstPointer

◆ ContinuousIndexType

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

ContinuousIndex typedef support.

Definition at line 123 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ CovariantVectorType

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
typedef CovariantVector< OutputType, itkGetStaticConstMacro( ImageDimension ) > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CovariantVectorType

Derivative typedef support

Definition at line 157 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ IndexType

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

Index typedef support.

Definition at line 120 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ InputImageType

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

InputImageType typedef support.

Definition at line 114 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ Iterator

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

Iterator typedef support

Definition at line 129 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ OutputType

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

OutputType typedef support.

Definition at line 109 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ Pointer

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
typedef SmartPointer< Self > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::Pointer

◆ PointType

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

PointType typedef support

Definition at line 126 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ Self

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

Standard class typedefs.

Definition at line 97 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

◆ SizeType

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

◆ Superclass

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

Constructor & Destructor Documentation

◆ ReducedDimensionBSplineInterpolateImageFunction() [1/2]

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 ( )
inlineoverrideprotected

◆ ReducedDimensionBSplineInterpolateImageFunction() [2/2]

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ReducedDimensionBSplineInterpolateImageFunction ( const Self )
private

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

◆ 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

◆ GetRadius()

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
SizeType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::GetRadius ( ) const
inlineoverrideprivate

◆ 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

◆ 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>
static Pointer itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::New ( )
static

New macro for creation of through a Smart Pointer

◆ operator=()

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::operator= ( const Self )
private

◆ PrintSelf()

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
overrideprotected

◆ 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_CIterator

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

◆ m_CoefficientFilter

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

◆ m_Coefficients

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
CoefficientImageType::ConstPointer itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_Coefficients
protected

◆ m_DataLength

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

◆ m_MaxNumberInterpolationPoints

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
unsigned long itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_MaxNumberInterpolationPoints
private

◆ m_PointsToIndex

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
std::vector< IndexType > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_PointsToIndex
private

◆ m_Scratch

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
std::vector< CoefficientDataType > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_Scratch
protected

◆ m_SplineOrder

template<class TImageType , class TCoordRep = double, class TCoefficientType = double>
unsigned int itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_SplineOrder
protected

◆ m_UseImageDirection

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


Generated on 1667476801 for elastix by doxygen 1.9.4 elastix logo