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 <
typename TImageType,
typename TCoordinate =
double,
typename TCoefficientType =
double>
86 :
public InterpolateImageFunction<TImageType, TCoordinate>
93 using Superclass = InterpolateImageFunction<TImageType, TCoordinate>;
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<TCoordinate>(point);
162 itkGetConstMacro(SplineOrder,
int);
180 itkSetMacro(UseImageDirection,
bool);
181 itkGetConstMacro(UseImageDirection,
bool);
182 itkBooleanMacro(UseImageDirection);
188 PrintSelf(std::ostream & os, Indent indent)
const override;
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
ReducedDimensionBSplineInterpolateImageFunction()
CovariantVector< OutputType, Self::ImageDimension > CovariantVectorType
SmartPointer< const Self > ConstPointer
MultiOrderBSplineDecompositionImageFilter< MovingImageType, CoefficientImageType > CoefficientFilter
~ReducedDimensionBSplineInterpolateImageFunction() override=default
MovingImageType::SizeType m_DataLength
CoefficientImageType::ConstPointer m_Coefficients
void PrintSelf(std::ostream &os, Indent indent) const override
Image< CoefficientDataType, Self::ImageDimension > CoefficientImageType
CovariantVectorType EvaluateDerivativeAtContinuousIndex(const ContinuousIndexType &x) const
InterpolateImageFunction< MovingImageType, CoordinateRepresentationType > Superclass
OutputType EvaluateAtContinuousIndex(const ContinuousIndexType &index) const override
itkOverrideGetNameOfClassMacro(ReducedDimensionBSplineInterpolateImageFunction)
void SetInterpolationWeights(const ContinuousIndexType &x, const vnl_matrix< long > &EvaluateIndex, vnl_matrix< double > &weights, unsigned int splineOrder) const
itkStaticConstMacro(ImageDimension, unsigned int, Superclass::ImageDimension)
void SetDerivativeWeights(const ContinuousIndexType &x, const vnl_matrix< long > &EvaluateIndex, vnl_matrix< double > &weights, unsigned int splineOrder) const
SmartPointer< Self > Pointer
void SetSplineOrder(unsigned int SplineOrder)
double CoefficientDataType
CoefficientFilterPointer m_CoefficientFilter
ReducedDimensionBSplineInterpolateImageFunction Self
unsigned int m_SplineOrder
typename CoefficientFilter::Pointer CoefficientFilterPointer
ITK_DISALLOW_COPY_AND_MOVE(ReducedDimensionBSplineInterpolateImageFunction)
void ApplyMirrorBoundaryConditions(vnl_matrix< long > &evaluateIndex, unsigned int splineOrder) const
void DetermineRegionOfSupport(vnl_matrix< long > &evaluateIndex, const ContinuousIndexType &x, unsigned int splineOrder) const
CovariantVectorType EvaluateDerivative(const PointType &point) const
SizeType GetRadius() const override
void GeneratePointsToIndex()
std::vector< IndexType > m_PointsToIndex
void SetInputImage(const TImageType *inputData) override
typename MovingImageType::SizeType SizeType