go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions
itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep > Class Template Reference

#include <itkAdvancedLinearInterpolateImageFunction.h>

Detailed Description

template<class TInputImage, class TCoordRep = double>
class itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >

Linearly interpolate an image at specified positions.

AdvancedLinearInterpolateImageFunction linearly interpolates image intensity at a non-integer pixel position. This class is templated over the input image type and the coordinate representation type (e.g. float or double).

This function works for N-dimensional images.

This function works for images with scalar and vector pixel types, and for images of type VectorImage.

Unlike the LinearInterpolateImageFunction, which implements a constant boundary condition, this class implements a mirroring boundary condition, which mimics the BSplineInterpolateImageFunction.

Edge cases, i.e. points exactly on the right most edge of the image, need to be dealt with separately. In this implementation we subtract a small number from the continuous index and interpolate at that position. Alternatively, you would need to implement 7 different possibilities in 3D, e.g.: x[0] is at end index -> interpolate in x-y plane x[0] and x[1] are at end index -> interpolate along z line all are at end index -> nearest neighbor interpolation We opt to subtract a small number from x, which is computationally efficient, gives cleaner code, and almost exactly the same interpolated value.

See also
VectorAdvancedLinearInterpolateImageFunction

\wiki \wikiexample{ImageProcessing/LinearInterpolateImageFunction,Linearly interpolate a position in an image} \endwiki

Definition at line 63 of file itkAdvancedLinearInterpolateImageFunction.h.

+ Inheritance diagram for itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >:

Data Structures

struct  Dispatch
 
struct  DispatchBase
 

Public Types

typedef SmartPointer< const SelfConstPointer
 
typedef Superclass::ContinuousIndexType ContinuousIndexType
 
typedef ContinuousIndexType::ValueType ContinuousIndexValueType
 
typedef CovariantVector< OutputType, itkGetStaticConstMacro(ImageDimension) > CovariantVectorType
 
typedef Superclass::IndexType IndexType
 
typedef InputImageType::SpacingType InputImageSpacingType
 
typedef Superclass::InputImageType InputImageType
 
typedef Superclass::InputPixelType InputPixelType
 
typedef Superclass::OutputType OutputType
 
typedef SmartPointer< SelfPointer
 
typedef Superclass::RealType RealType
 
typedef AdvancedLinearInterpolateImageFunction Self
 
typedef LinearInterpolateImageFunction< TInputImage, TCoordRep > Superclass
 

Public Member Functions

CovariantVectorType EvaluateDerivativeAtContinuousIndex (const ContinuousIndexType &x) const
 
void EvaluateValueAndDerivativeAtContinuousIndex (const ContinuousIndexType &x, OutputType &value, CovariantVectorType &deriv) const
 
virtual const char * GetClassName () const
 
 itkStaticConstMacro (ImageDimension, unsigned int, Superclass::ImageDimension)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

 AdvancedLinearInterpolateImageFunction ()
 
 ~AdvancedLinearInterpolateImageFunction () override
 

Private Member Functions

 AdvancedLinearInterpolateImageFunction (const Self &)
 
void EvaluateValueAndDerivativeOptimized (const Dispatch< 2 > &, const ContinuousIndexType &x, OutputType &value, CovariantVectorType &deriv) const
 
void EvaluateValueAndDerivativeOptimized (const Dispatch< 3 > &, const ContinuousIndexType &x, OutputType &value, CovariantVectorType &deriv) const
 
void EvaluateValueAndDerivativeOptimized (const DispatchBase &, const ContinuousIndexType &x, OutputType &value, CovariantVectorType &deriv) const
 
void EvaluateValueAndDerivativeUnOptimized (const ContinuousIndexType &x, OutputType &value, CovariantVectorType &deriv) const
 
void operator= (const Self &)
 

Member Typedef Documentation

◆ ConstPointer

template<class TInputImage , class TCoordRep = double>
typedef SmartPointer< const Self > itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::ConstPointer

Definition at line 72 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ ContinuousIndexType

template<class TInputImage , class TCoordRep = double>
typedef Superclass::ContinuousIndexType itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::ContinuousIndexType

ContinuousIndex typedef support.

Definition at line 100 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ ContinuousIndexValueType

template<class TInputImage , class TCoordRep = double>
typedef ContinuousIndexType::ValueType itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::ContinuousIndexValueType

Definition at line 101 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ CovariantVectorType

template<class TInputImage , class TCoordRep = double>
typedef CovariantVector< OutputType, itkGetStaticConstMacro( ImageDimension ) > itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::CovariantVectorType

Derivative typedef support

Definition at line 105 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ IndexType

template<class TInputImage , class TCoordRep = double>
typedef Superclass::IndexType itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::IndexType

Index typedef support.

Definition at line 97 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ InputImageSpacingType

template<class TInputImage , class TCoordRep = double>
typedef InputImageType::SpacingType itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::InputImageSpacingType

Definition at line 85 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ InputImageType

template<class TInputImage , class TCoordRep = double>
typedef Superclass::InputImageType itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::InputImageType

InputImageType typedef support.

Definition at line 84 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ InputPixelType

template<class TInputImage , class TCoordRep = double>
typedef Superclass::InputPixelType itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::InputPixelType

InputPixelType typedef support.

Definition at line 88 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ OutputType

template<class TInputImage , class TCoordRep = double>
typedef Superclass::OutputType itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::OutputType

OutputType typedef support.

Definition at line 81 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ Pointer

template<class TInputImage , class TCoordRep = double>
typedef SmartPointer< Self > itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::Pointer

Definition at line 71 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ RealType

template<class TInputImage , class TCoordRep = double>
typedef Superclass::RealType itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::RealType

RealType typedef support.

Definition at line 91 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ Self

template<class TInputImage , class TCoordRep = double>
typedef AdvancedLinearInterpolateImageFunction itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::Self

Standard class typedefs.

Definition at line 69 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ Superclass

template<class TInputImage , class TCoordRep = double>
typedef LinearInterpolateImageFunction< TInputImage, TCoordRep > itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::Superclass

Definition at line 70 of file itkAdvancedLinearInterpolateImageFunction.h.

Constructor & Destructor Documentation

◆ AdvancedLinearInterpolateImageFunction() [1/2]

template<class TInputImage , class TCoordRep = double>
itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::AdvancedLinearInterpolateImageFunction ( )
protected

◆ ~AdvancedLinearInterpolateImageFunction()

template<class TInputImage , class TCoordRep = double>
itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::~AdvancedLinearInterpolateImageFunction ( )
inlineoverrideprotected

Definition at line 125 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ AdvancedLinearInterpolateImageFunction() [2/2]

template<class TInputImage , class TCoordRep = double>
itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::AdvancedLinearInterpolateImageFunction ( const Self )
private

Member Function Documentation

◆ EvaluateDerivativeAtContinuousIndex()

template<class TInputImage , class TCoordRep = double>
CovariantVectorType itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::EvaluateDerivativeAtContinuousIndex ( const ContinuousIndexType x) const

Method to compute the derivative.

◆ EvaluateValueAndDerivativeAtContinuousIndex()

template<class TInputImage , class TCoordRep = double>
void itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::EvaluateValueAndDerivativeAtContinuousIndex ( const ContinuousIndexType x,
OutputType value,
CovariantVectorType deriv 
) const
inline

Method to compute both the value and the derivative.

Definition at line 112 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ EvaluateValueAndDerivativeOptimized() [1/3]

template<class TInputImage , class TCoordRep = double>
void itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::EvaluateValueAndDerivativeOptimized ( const Dispatch< 2 > &  ,
const ContinuousIndexType x,
OutputType value,
CovariantVectorType deriv 
) const
inlineprivate

Method to compute both the value and the derivative. 2D specialization.

◆ EvaluateValueAndDerivativeOptimized() [2/3]

template<class TInputImage , class TCoordRep = double>
void itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::EvaluateValueAndDerivativeOptimized ( const Dispatch< 3 > &  ,
const ContinuousIndexType x,
OutputType value,
CovariantVectorType deriv 
) const
inlineprivate

Method to compute both the value and the derivative. 3D specialization.

◆ EvaluateValueAndDerivativeOptimized() [3/3]

template<class TInputImage , class TCoordRep = double>
void itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::EvaluateValueAndDerivativeOptimized ( const DispatchBase &  ,
const ContinuousIndexType x,
OutputType value,
CovariantVectorType deriv 
) const
inlineprivate

Method to compute both the value and the derivative. Generic.

Definition at line 152 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ EvaluateValueAndDerivativeUnOptimized()

template<class TInputImage , class TCoordRep = double>
void itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::EvaluateValueAndDerivativeUnOptimized ( const ContinuousIndexType x,
OutputType value,
CovariantVectorType deriv 
) const
inlineprivate

Method to compute both the value and the derivative. Generic.

Definition at line 163 of file itkAdvancedLinearInterpolateImageFunction.h.

◆ GetClassName()

template<class TInputImage , class TCoordRep = double>
virtual const char * itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::GetClassName ( ) const
virtual

Run-time type information (and related methods).

Reimplemented in elastix::LinearInterpolator< TElastix >.

◆ itkStaticConstMacro()

template<class TInputImage , class TCoordRep = double>
itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::itkStaticConstMacro ( ImageDimension  ,
unsigned int  ,
Superclass::ImageDimension   
)

Dimension underlying input image.

◆ New()

template<class TInputImage , class TCoordRep = double>
static Pointer itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::New ( )
static

Method for creation through the object factory.

◆ operator=()

template<class TInputImage , class TCoordRep = double>
void itk::AdvancedLinearInterpolateImageFunction< TInputImage, TCoordRep >::operator= ( const Self )
private


Generated on 1667476801 for elastix by doxygen 1.9.4 elastix logo