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 >:
Inheritance graph
[legend]

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
 
typedef InterpolateImageFunction< TImageType, TCoordRep > Superclass
 

Public Member Functions

virtual OutputType EvaluateAtContinuousIndex (const ContinuousIndexType &index) const
 
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)
 
virtual void SetInputImage (const TImageType *inputData)
 
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
 
 ReducedDimensionBSplineInterpolateImageFunction ()
 
virtual ~ReducedDimensionBSplineInterpolateImageFunction ()
 

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

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

Internal Coefficient typedef support

Definition at line 130 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

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 137 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
typedef CoefficientFilter::Pointer itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientFilterPointer
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
typedef Image< CoefficientDataType, itkGetStaticConstMacro( ImageDimension ) > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::CoefficientImageType
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
typedef SmartPointer< const Self > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ConstPointer
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
typedef Superclass::ContinuousIndexType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::ContinuousIndexType

ContinuousIndex typedef support.

Definition at line 121 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

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 155 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

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

Index typedef support.

Definition at line 118 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

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

InputImageType typedef support.

Definition at line 112 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

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

Iterator typedef support

Definition at line 127 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

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

OutputType typedef support.

Definition at line 106 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

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

PointType typedef support

Definition at line 124 of file itkReducedDimensionBSplineInterpolateImageFunction.h.

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.

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

Constructor & Destructor Documentation

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

Member Function Documentation

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.

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

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
virtual OutputType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::EvaluateAtContinuousIndex ( const ContinuousIndexType index) const
virtual

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.

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
CovariantVectorType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::EvaluateDerivative ( const PointType point) const
inline
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
CovariantVectorType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::EvaluateDerivativeAtContinuousIndex ( const ContinuousIndexType x) const
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.

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
virtual const char* itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::GetClassName ( ) const
virtual
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
virtual int itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::GetSplineOrder ( ) const
virtual
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
virtual bool itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::GetUseImageDirection ( ) const
virtual
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::itkStaticConstMacro ( ImageDimension  ,
unsigned  int,
Superclass::ImageDimension   
)

Dimension underlying input image.

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

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::operator= ( const Self )
private
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const
protected
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

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
virtual void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::SetInputImage ( const TImageType *  inputData)
virtual

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

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

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.

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

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
virtual void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::UseImageDirectionOff ( )
virtual
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
virtual void itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::UseImageDirectionOn ( )
virtual

Field Documentation

template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
Iterator itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_CIterator
private
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
CoefficientFilterPointer itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_CoefficientFilter
private
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
CoefficientImageType::ConstPointer itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_Coefficients
protected
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
TImageType::SizeType itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_DataLength
protected
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
unsigned long itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_MaxNumberInterpolationPoints
private
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
std::vector< IndexType > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_PointsToIndex
private
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
std::vector< CoefficientDataType > itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_Scratch
protected
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
unsigned int itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_SplineOrder
protected
template<class TImageType, class TCoordRep = double, class TCoefficientType = double>
bool itk::ReducedDimensionBSplineInterpolateImageFunction< TImageType, TCoordRep, TCoefficientType >::m_UseImageDirection
private


Generated on 04-09-2015 for elastix by doxygen 1.8.9.1 elastix logo