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"
31 template <
unsigned int SplineOrder,
unsigned int Dimension>
32 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>
44 itkStaticConstMacro( Value,
unsigned long, 1 );
63 template <
class TCoordRep =
float,
64 unsigned int VSpaceDimension = 2,
65 unsigned int VSplineOrder = 3 >
67 public FunctionBase< ContinuousIndex<TCoordRep,VSpaceDimension>, Array<double> >
73 ContinuousIndex< TCoordRep, VSpaceDimension >,
82 itkStaticConstMacro( SpaceDimension,
unsigned int, VSpaceDimension );
85 itkStaticConstMacro( SplineOrder,
unsigned int, VSplineOrder );
88 typedef GetConstNumberOfWeightsHack<
89 itkGetStaticConstMacro(SplineOrder),
90 itkGetStaticConstMacro(SpaceDimension) > GetConstNumberOfWeightsHackType;
91 itkStaticConstMacro( NumberOfWeights,
unsigned long, GetConstNumberOfWeightsHackType::Value );
121 itkGetConstReferenceMacro( SupportSize,
SizeType );
124 itkGetConstMacro( NumberOfWeights,
unsigned long );
132 itkGetStaticConstMacro( SplineOrder ) > KernelType;
133 typedef BSplineDerivativeKernelFunction<
147 itkGetStaticConstMacro( SpaceDimension ),
151 virtual void Compute1DWeights(
157 virtual void PrintSelf( std::ostream & os, Indent indent )
const;
172 void operator=(
const Self&);
175 void InitializeSupport(
void );
181 void InitializeOffsetToIndexTable(
void );
188 #define ITK_TEMPLATE_BSplineInterpolationWeightFunctionBase(_, EXPORT, x, y) namespace itk { \
189 _(3(class EXPORT BSplineInterpolationWeightFunctionBase< ITK_TEMPLATE_3 x >)) \
190 namespace Templates { typedef BSplineInterpolationWeightFunctionBase< ITK_TEMPLATE_3 x > BSplineInterpolationWeightFunctionBase##y; } \
193 #if ITK_TEMPLATE_EXPLICIT
194 # include "Templates/itkBSplineInterpolationWeightFunctionBase+-.h"
198 # include "itkBSplineInterpolationWeightFunctionBase.txx"
Matrix< double, itkGetStaticConstMacro(SpaceDimension), itkGetStaticConstMacro(SplineOrder)+1 > OneDWeightsType
Array2D< unsigned long > TableType
SmartPointer< const Self > ConstPointer
DerivativeKernelType::Pointer m_DerivativeKernel
BSplineDerivativeKernelFunction< itkGetStaticConstMacro(SplineOrder) > DerivativeKernelType
SmartPointer< Self > Pointer
TableType m_OffsetToIndexTable
FunctionBase< ContinuousIndex< TCoordRep, VSpaceDimension >, Array< double > > Superclass
Index< VSpaceDimension > IndexType
~BSplineInterpolationWeightFunctionBase()
Array< double > WeightsType
KernelType::Pointer m_Kernel
SecondOrderDerivativeKernelType::Pointer m_SecondOrderDerivativeKernel
unsigned long m_NumberOfWeights
KernelType::WeightArrayType WeightArrayType
Size< VSpaceDimension > SizeType
FixedArray< double, itkGetStaticConstMacro(SplineOrder)+1 > WeightArrayType
B-spline kernel used for density estimation and nonparameteric regression.
BSplineInterpolationWeightFunctionBase Self
ContinuousIndex< TCoordRep, VSpaceDimension > ContinuousIndexType
SmartPointer< Self > Pointer
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.
BSplineSecondOrderDerivativeKernelFunction2< itkGetStaticConstMacro(SplineOrder) > SecondOrderDerivativeKernelType
SmartPointer< Self > Pointer