21 #ifndef otbBSplineInterpolateImageFunction_h
22 #define otbBSplineInterpolateImageFunction_h
26 #include "itkInterpolateImageFunction.h"
27 #include "vnl/vnl_matrix.h"
30 #include "itkConceptChecking.h"
31 #include "itkCovariantVector.h"
47 template <
class TImageType,
class TCoordRep =
double,
class TCoefficientType =
double>
53 typedef itk::InterpolateImageFunction<TImageType, TCoordRep>
Superclass;
64 typedef typename Superclass::OutputType
OutputType;
70 itkStaticConstMacro(ImageDimension,
unsigned int, Superclass::ImageDimension);
85 typedef itk::ImageLinearIteratorWithIndex<TImageType>
Iterator;
111 this->GetInputImage()->TransformPhysicalPointToContinuousIndex(point, index);
112 return (this->EvaluateDerivativeAtContinuousIndex(index));
115 CovariantVectorType EvaluateDerivativeAtContinuousIndex(
const ContinuousIndexType& x)
const;
119 void SetSplineOrder(
unsigned int SplineOrder);
120 itkGetMacro(SplineOrder,
int);
124 void SetInputImage(
const TImageType* inputData)
override;
128 virtual void UpdateCoefficientsFilter(
void);
134 void operator=(
const Self&) =
delete;
135 void PrintSelf(std::ostream& os, itk::Indent indent)
const override;
147 void SetInterpolationWeights(
const ContinuousIndexType& x,
const vnl_matrix<long>& EvaluateIndex, vnl_matrix<double>& weights,
148 unsigned int splineOrder)
const;
151 void SetDerivativeWeights(
const ContinuousIndexType& x,
const vnl_matrix<long>& EvaluateIndex, vnl_matrix<double>& weights,
unsigned int splineOrder)
const;
155 void GeneratePointsToIndex();
158 void DetermineRegionOfSupport(vnl_matrix<long>& evaluateIndex,
const ContinuousIndexType& x,
unsigned int splineOrder)
const;
162 void ApplyMirrorBoundaryConditions(vnl_matrix<long>& evaluateIndex,
unsigned int splineOrder)
const;
175 #ifndef OTB_MANUAL_INSTANTIATION