14 #ifndef __itkBSplineInterpolationWeightFunctionBase_h
15 #define __itkBSplineInterpolationWeightFunctionBase_h
17 #include "itkFunctionBase.h"
18 #include "itkContinuousIndex.h"
20 #include "itkArray2D.h"
21 #include "itkMatrix.h"
23 #include "itkBSplineDerivativeKernelFunction.h"
30 template<
unsigned int SplineOrder,
unsigned int Dimension >
31 class GetConstNumberOfWeightsHack
35 typedef GetConstNumberOfWeightsHack< SplineOrder, Dimension - 1 > OneDimensionLess;
36 itkStaticConstMacro( Value,
unsigned long, ( SplineOrder + 1 ) * OneDimensionLess::Value );
40 template<
unsigned int SplineOrder >
41 class GetConstNumberOfWeightsHack< SplineOrder, 0 >
45 itkStaticConstMacro( Value,
unsigned long, 1 );
64 template<
class TCoordRep =
float,
65 unsigned int VSpaceDimension = 2,
66 unsigned int VSplineOrder = 3 >
68 public FunctionBase< ContinuousIndex< TCoordRep, VSpaceDimension >, Array< double > >
75 ContinuousIndex< TCoordRep, VSpaceDimension >,
90 typedef GetConstNumberOfWeightsHack<
91 itkGetStaticConstMacro( SplineOrder ),
92 itkGetStaticConstMacro( SpaceDimension ) > GetConstNumberOfWeightsHackType;
93 itkStaticConstMacro( NumberOfWeights,
unsigned long, GetConstNumberOfWeightsHackType::Value );
123 itkGetConstReferenceMacro( SupportSize,
SizeType );
126 itkGetConstMacro( NumberOfWeights,
unsigned long );
150 itkGetStaticConstMacro( SpaceDimension ),
160 virtual void PrintSelf( std::ostream & os, Indent indent )
const;
190 #ifndef ITK_MANUAL_INSTANTIATION
191 #include "itkBSplineInterpolationWeightFunctionBase.hxx"
Matrix< double, itkGetStaticConstMacro(SpaceDimension), itkGetStaticConstMacro(SplineOrder)+1 > OneDWeightsType
SecondOrderDerivativeKernelType::Pointer SecondOrderDerivativeKernelPointer
ContinuousIndex< TCoordRep, VSpaceDimension > ContinuousIndexType
Size< VSpaceDimension > SizeType
DerivativeKernelType::Pointer m_DerivativeKernel
SmartPointer< Self > Pointer
virtual WeightsType Evaluate(const ContinuousIndexType &index) const
void InitializeOffsetToIndexTable(void)
BSplineSecondOrderDerivativeKernelFunction2< Self::SplineOrder > SecondOrderDerivativeKernelType
TableType m_OffsetToIndexTable
BSplineDerivativeKernelFunction< Self::SplineOrder > DerivativeKernelType
~BSplineInterpolationWeightFunctionBase()
Array< double > WeightsType
KernelType::Pointer m_Kernel
SmartPointer< const Self > ConstPointer
BSplineInterpolationWeightFunctionBase()
SecondOrderDerivativeKernelType::Pointer m_SecondOrderDerivativeKernel
void ComputeStartIndex(const ContinuousIndexType &index, IndexType &startIndex) const
void InitializeSupport(void)
unsigned long m_NumberOfWeights
BSplineKernelFunction2< Self::SplineOrder > KernelType
DerivativeKernelType::Pointer DerivativeKernelPointer
itkStaticConstMacro(SpaceDimension, unsigned int, VSpaceDimension)
KernelType::WeightArrayType WeightArrayType
Array2D< unsigned long > TableType
SmartPointer< Self > Pointer
Index< VSpaceDimension > IndexType
KernelType::Pointer KernelPointer
virtual void PrintSelf(std::ostream &os, Indent indent) const
FunctionBase< ContinuousIndex< TCoordRep, VSpaceDimension >, Array< double > > Superclass
FixedArray< double, itkGetStaticConstMacro(SplineOrder)+1 > WeightArrayType
B-spline kernel used for density estimation and nonparameteric regression.
virtual void Compute1DWeights(const ContinuousIndexType &index, const IndexType &startIndex, OneDWeightsType &weights1D) const =0
BSplineInterpolationWeightFunctionBase Self
Returns the weights over the support region used for B-spline interpolation/reconstruction.
Derivative of a B-spline kernel used for density estimation and nonparametric regression.
void operator=(const Self &)
SmartPointer< Self > Pointer