18#ifndef itkAdvancedLinearInterpolateImageFunction_h
19#define itkAdvancedLinearInterpolateImageFunction_h
21#include "itkLinearInterpolateImageFunction.h"
62template <
class TInputImage,
class TCoordRep =
double>
64 :
public LinearInterpolateImageFunction<TInputImage, TCoordRep>
71 using Superclass = LinearInterpolateImageFunction<TInputImage, TCoordRep>;
82 using typename Superclass::OutputType;
85 using typename Superclass::InputImageType;
89 using typename Superclass::InputPixelType;
92 using typename Superclass::RealType;
98 using typename Superclass::IndexType;
101 using typename Superclass::ContinuousIndexType;
117 return this->EvaluateValueAndDerivativeOptimized(Dispatch<ImageDimension>(), x, value, deriv);
129 template <
unsigned int>
130 struct Dispatch :
public DispatchBase
136 const ContinuousIndexType & x,
143 const ContinuousIndexType & x,
150 const ContinuousIndexType & x,
154 return this->EvaluateValueAndDerivativeUnOptimized(x, value, deriv);
162 itkExceptionMacro(
"ERROR: EvaluateValueAndDerivativeAtContinuousIndex() is not implemented for this dimension ("
163 << ImageDimension <<
").");
169#ifndef ITK_MANUAL_INSTANTIATION
170# include "itkAdvancedLinearInterpolateImageFunction.hxx"
Linearly interpolate an image at specified positions.
AdvancedLinearInterpolateImageFunction()=default
itkStaticConstMacro(ImageDimension, unsigned int, Superclass::ImageDimension)
typename ContinuousIndexType::ValueType ContinuousIndexValueType
void EvaluateValueAndDerivativeOptimized(const Dispatch< 2 > &, const ContinuousIndexType &x, OutputType &value, CovariantVectorType &deriv) const
CovariantVector< OutputType, Self::ImageDimension > CovariantVectorType
SmartPointer< const Self > ConstPointer
void EvaluateValueAndDerivativeOptimized(const Dispatch< 3 > &, const ContinuousIndexType &x, OutputType &value, CovariantVectorType &deriv) const
void EvaluateValueAndDerivativeAtContinuousIndex(const ContinuousIndexType &x, OutputType &value, CovariantVectorType &deriv) const
~AdvancedLinearInterpolateImageFunction() override=default
typename InputImageType::SpacingType InputImageSpacingType
ITK_DISALLOW_COPY_AND_MOVE(AdvancedLinearInterpolateImageFunction)
CovariantVectorType EvaluateDerivativeAtContinuousIndex(const ContinuousIndexType &x) const
void EvaluateValueAndDerivativeUnOptimized(const ContinuousIndexType &, OutputType &, CovariantVectorType &) const
LinearInterpolateImageFunction< TInputImage, TCoordRep > Superclass
void EvaluateValueAndDerivativeOptimized(const DispatchBase &, const ContinuousIndexType &x, OutputType &value, CovariantVectorType &deriv) const