36#ifndef itkReducedDimensionBSplineInterpolateImageFunction_h
37#define itkReducedDimensionBSplineInterpolateImageFunction_h
41#include "itkInterpolateImageFunction.h"
42#include <vnl/vnl_matrix.h>
45#include "itkConceptChecking.h"
46#include "itkCovariantVector.h"
84template <
class TImageType,
class TCoordRep =
double,
class TCoefficientType =
double>
86 :
public InterpolateImageFunction<TImageType, TCoordRep>
93 using Superclass = InterpolateImageFunction<TImageType, TCoordRep>;
104 using typename Superclass::OutputType;
109 using typename Superclass::InputImageType;
115 using typename Superclass::IndexType;
118 using typename Superclass::ContinuousIndexType;
121 using typename Superclass::PointType;
149 const auto index = this->GetInputImage()->template TransformPhysicalPointToContinuousIndex<TCoordRep>(point);
150 return (this->EvaluateDerivativeAtContinuousIndex(index));
162 itkGetConstMacro(SplineOrder,
int);
180 itkSetMacro(UseImageDirection,
bool);
181 itkGetConstMacro(UseImageDirection,
bool);
182 itkBooleanMacro(UseImageDirection);
188 PrintSelf(std::ostream & os, Indent indent)
const override;
200 return SizeType::Filled(m_SplineOrder + 1);
206 const vnl_matrix<long> & EvaluateIndex,
207 vnl_matrix<double> & weights,
208 unsigned int splineOrder)
const;
213 const vnl_matrix<long> & EvaluateIndex,
214 vnl_matrix<double> & weights,
215 unsigned int splineOrder)
const;
225 const ContinuousIndexType & x,
226 unsigned int splineOrder)
const;
244#ifndef ITK_MANUAL_INSTANTIATION
245# include "itkReducedDimensionBSplineInterpolateImageFunction.hxx"
Calculates the B-Spline coefficients of an image. Spline order may be per dimension from 0 to 5 per.
SmartPointer< Self > Pointer
Evaluates the B-Spline interpolation of an image. Spline order may be from 0 to 5.
OutputType EvaluateAtContinuousIndex(const ContinuousIndexType &index) const override
CovariantVectorType EvaluateDerivative(const PointType &point) const
SmartPointer< const Self > ConstPointer
~ReducedDimensionBSplineInterpolateImageFunction() override=default
typename TImageType::SizeType SizeType
SizeType GetRadius() const override
TImageType::SizeType m_DataLength
TCoefficientType CoefficientDataType
ITK_DISALLOW_COPY_AND_MOVE(ReducedDimensionBSplineInterpolateImageFunction)
CovariantVector< OutputType, Self::ImageDimension > CovariantVectorType
void SetInputImage(const TImageType *inputData) override
InterpolateImageFunction< TImageType, TCoordRep > Superclass
void GeneratePointsToIndex()
void SetDerivativeWeights(const ContinuousIndexType &x, const vnl_matrix< long > &EvaluateIndex, vnl_matrix< double > &weights, unsigned int splineOrder) const
void DetermineRegionOfSupport(vnl_matrix< long > &evaluateIndex, const ContinuousIndexType &x, unsigned int splineOrder) const
std::vector< IndexType > m_PointsToIndex
void ApplyMirrorBoundaryConditions(vnl_matrix< long > &evaluateIndex, unsigned int splineOrder) const
itkStaticConstMacro(ImageDimension, unsigned int, Superclass::ImageDimension)
CovariantVectorType EvaluateDerivativeAtContinuousIndex(const ContinuousIndexType &x) const
void SetInterpolationWeights(const ContinuousIndexType &x, const vnl_matrix< long > &EvaluateIndex, vnl_matrix< double > &weights, unsigned int splineOrder) const
unsigned int m_SplineOrder
ReducedDimensionBSplineInterpolateImageFunction()
typename CoefficientFilter::Pointer CoefficientFilterPointer
void SetSplineOrder(unsigned int SplineOrder)
void PrintSelf(std::ostream &os, Indent indent) const override
CoefficientImageType::ConstPointer m_Coefficients
CoefficientFilterPointer m_CoefficientFilter