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;
70 itkStaticConstMacro(ImageDimension,
unsigned int, Superclass::ImageDimension);
84 typedef typename Superclass::SizeType
SizeType;
87 typedef itk::ImageLinearIteratorWithIndex<TImageType>
Iterator;
113 this->GetInputImage()->TransformPhysicalPointToContinuousIndex(point, index);
114 return (this->EvaluateDerivativeAtContinuousIndex(index));
117 CovariantVectorType EvaluateDerivativeAtContinuousIndex(
const ContinuousIndexType& x)
const;
121 void SetSplineOrder(
unsigned int SplineOrder);
122 itkGetMacro(SplineOrder,
int);
126 void SetInputImage(
const TImageType* inputData)
override;
130 virtual void UpdateCoefficientsFilter(
void);
134 typename itk::InterpolateImageFunction<TImageType, TCoordRep>::SizeType radius({2,2});
143 void PrintSelf(std::ostream& os, itk::Indent indent)
const override;
155 void SetInterpolationWeights(
const ContinuousIndexType& x,
const vnl_matrix<long>& EvaluateIndex, vnl_matrix<double>& weights,
156 unsigned int splineOrder)
const;
159 void SetDerivativeWeights(
const ContinuousIndexType& x,
const vnl_matrix<long>& EvaluateIndex, vnl_matrix<double>& weights,
unsigned int splineOrder)
const;
163 void GeneratePointsToIndex();
166 void DetermineRegionOfSupport(vnl_matrix<long>& evaluateIndex,
const ContinuousIndexType& x,
unsigned int splineOrder)
const;
170 void ApplyMirrorBoundaryConditions(vnl_matrix<long>& evaluateIndex,
unsigned int splineOrder)
const;
183 #ifndef OTB_MANUAL_INSTANTIATION
This class is an evolution of the itk::BSplineDecompositionImageFilter to handle huge images with thi...
itk::SmartPointer< Self > Pointer
This class is an evolution of the itk::BSplineInterpolateImageFunction to handle huge images with thi...
CoefficientImageType::ConstPointer m_Coefficients
itk::SmartPointer< const Self > ConstPointer
CoefficientFilter::Pointer CoefficientFilterPointer
virtual SizeType GetRadius() const
itk::SmartPointer< Self > Pointer
Superclass::InputImageType InputImageType
TCoefficientType CoefficientDataType
itk::ImageLinearIteratorWithIndex< TImageType > Iterator
BSplineInterpolateImageFunction(const Self &)=delete
~BSplineInterpolateImageFunction() override=default
InputImageType::RegionType RegionType
itk::CovariantVector< OutputType, itkGetStaticConstMacro(ImageDimension)> CovariantVectorType
std::vector< IndexType > m_PointsToIndex
otb::BSplineDecompositionImageFilter< TImageType, CoefficientImageType > CoefficientFilter
unsigned int m_SplineOrder
void operator=(const Self &)=delete
CoefficientFilterPointer m_CoefficientFilter
Superclass::OutputType OutputType
RegionType m_CurrentBufferedRegion
Superclass::SizeType SizeType
Superclass::IndexType IndexType
CovariantVectorType EvaluateDerivative(const PointType &point) const
itk::Image< CoefficientDataType, itkGetStaticConstMacro(ImageDimension)> CoefficientImageType
unsigned long m_MaxNumberInterpolationPoints
itk::InterpolateImageFunction< TImageType, TCoordRep > Superclass
Superclass::PointType PointType
TImageType::SizeType m_DataLength
std::vector< CoefficientDataType > m_Scratch
Superclass::ContinuousIndexType ContinuousIndexType
BSplineInterpolateImageFunction Self
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.