Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef __itkBSplineInterpolationSecondOrderDerivativeWeightFunction_h
00015 #define __itkBSplineInterpolationSecondOrderDerivativeWeightFunction_h
00016
00017 #include "itkBSplineInterpolationWeightFunctionBase.h"
00018 #include "vnl/vnl_vector_fixed.h"
00019
00020 namespace itk
00021 {
00022
00040 template < class TCoordRep = float,
00041 unsigned int VSpaceDimension = 2,
00042 unsigned int VSplineOrder = 3 >
00043 class ITK_EXPORT BSplineInterpolationSecondOrderDerivativeWeightFunction :
00044 public BSplineInterpolationWeightFunctionBase<
00045 TCoordRep, VSpaceDimension, VSplineOrder >
00046 {
00047 public:
00049 typedef BSplineInterpolationSecondOrderDerivativeWeightFunction Self;
00050 typedef BSplineInterpolationWeightFunctionBase<
00051 TCoordRep, VSpaceDimension, VSplineOrder > Superclass;
00052 typedef SmartPointer<Self> Pointer;
00053 typedef SmartPointer<const Self> ConstPointer;
00054
00056 itkNewMacro( Self );
00057
00059 itkTypeMacro( BSplineInterpolationSecondOrderDerivativeWeightFunction,
00060 BSplineInterpolationWeightFunctionBase );
00061
00063 itkStaticConstMacro( SpaceDimension, unsigned int, VSpaceDimension );
00064
00066 itkStaticConstMacro( SplineOrder, unsigned int, VSplineOrder );
00067
00069 typedef typename Superclass::WeightsType WeightsType;
00070 typedef typename Superclass::IndexType IndexType;
00071 typedef typename Superclass::SizeType SizeType;
00072 typedef typename Superclass::ContinuousIndexType ContinuousIndexType;
00073
00075 virtual void SetDerivativeDirections( unsigned int dir0, unsigned int dir1 );
00076
00077 protected:
00078 BSplineInterpolationSecondOrderDerivativeWeightFunction();
00079 ~BSplineInterpolationSecondOrderDerivativeWeightFunction() {}
00080
00082 typedef typename Superclass::KernelType KernelType;
00083 typedef typename Superclass::DerivativeKernelType DerivativeKernelType;
00084 typedef typename Superclass
00085 ::SecondOrderDerivativeKernelType SecondOrderDerivativeKernelType;
00086 typedef typename Superclass::TableType TableType;
00087 typedef typename Superclass::OneDWeightsType OneDWeightsType;
00088
00098 virtual void Compute1DWeights(
00099 const ContinuousIndexType & index,
00100 const IndexType & startIndex,
00101 OneDWeightsType & weights1D ) const;
00102
00104 virtual void PrintSelf( std::ostream & os, Indent indent ) const;
00105
00106 private:
00107 BSplineInterpolationSecondOrderDerivativeWeightFunction(const Self&);
00108 void operator=(const Self&);
00109
00110 vnl_vector_fixed< double, 2 > m_DerivativeDirections;
00111 bool m_EqualDerivativeDirections;
00112
00113 };
00114
00115 }
00116
00117
00118 #define ITK_TEMPLATE_BSplineInterpolationSecondOrderDerivativeWeightFunction(_, EXPORT, x, y) namespace itk { \
00119 _(3(class EXPORT BSplineInterpolationSecondOrderDerivativeWeightFunction< ITK_TEMPLATE_3 x >)) \
00120 namespace Templates { typedef BSplineInterpolationSecondOrderDerivativeWeightFunction< ITK_TEMPLATE_3 x > BSplineInterpolationSecondOrderDerivativeWeightFunction##y; } \
00121 }
00122
00123 #if ITK_TEMPLATE_EXPLICIT
00124 # include "Templates/itkBSplineInterpolationSecondOrderDerivativeWeightFunction+-.h"
00125 #endif
00126
00127 #if ITK_TEMPLATE_TXX
00128 # include "itkBSplineInterpolationSecondOrderDerivativeWeightFunction.txx"
00129 #endif
00130
00131
00132 #endif