18 #ifndef __itkGaussianDerivativeOperator_h
19 #define __itkGaussianDerivativeOperator_h
72 template<
class TPixel,
unsigned int VDimension=2,
73 class TAllocator = NeighborhoodAllocator<TPixel> >
92 m_MaximumError = 0.005;
93 m_MaximumKernelWidth = 30;
94 m_UseDerivativeOperator =
false;
95 m_NormalizeAcrossScale =
true;
102 m_UseDerivativeOperator = other.m_UseDerivativeOperator;
103 m_NormalizeAcrossScale = other.m_NormalizeAcrossScale;
104 m_Spacing = other.m_Spacing;
105 m_Order = other.m_Order;
106 m_Variance = other.m_Variance;
107 m_MaximumError = other.m_MaximumError;
108 m_MaximumKernelWidth = other.m_MaximumKernelWidth;
114 Superclass::operator=(other);
115 m_UseDerivativeOperator = other.m_UseDerivativeOperator;
116 m_NormalizeAcrossScale = other.m_NormalizeAcrossScale;
117 m_Spacing = other.m_Spacing;
118 m_Order = other.m_Order;
119 m_Variance = other.m_Variance;
120 m_MaximumError = other.m_MaximumError;
121 m_MaximumKernelWidth = other.m_MaximumKernelWidth;
130 void SetUseDerivativeOperator(
bool flag )
132 if( m_UseDerivativeOperator != flag )
134 m_UseDerivativeOperator = flag;
138 itkBooleanMacro(UseDerivativeOperator);
142 void SetNormalizeAcrossScale(
bool flag )
144 if( m_NormalizeAcrossScale != flag )
146 m_NormalizeAcrossScale = flag;
150 itkBooleanMacro(NormalizeAcrossScale);
153 void SetVariance(
const double variance) { m_Variance = variance; }
156 void SetSpacing(
const double spacing)
165 void SetMaximumError(
const double maxerror )
167 const double Min = 0.00001;
168 const double Max = 1.0 - Min;
169 m_MaximumError = (maxerror<Min?Min:(maxerror>Max?Max:maxerror));
185 void SetMaximumKernelWidth(
unsigned int n )
187 m_MaximumKernelWidth = n;
194 void SetOrder(
const unsigned int order)
203 virtual void PrintSelf(std::ostream &os,
Indent i)
const
205 os << i <<
"GaussianDerivativeOperator { this=" <<
this
206 <<
", m_UseDerivativeOperator = " << m_UseDerivativeOperator
207 <<
", m_NormalizeAcrossScale = " << m_NormalizeAcrossScale
208 <<
", m_Order = " << m_Order
209 <<
", m_Spacing = " << m_Spacing
210 <<
", m_Variance = " << m_Variance
211 <<
", m_MaximumError = " << m_MaximumError
212 <<
", m_MaximumKernelWidth = " << m_MaximumKernelWidth
213 <<
"} " << std::endl;
222 double ModifiedBesselI0(
double);
226 double ModifiedBesselI1(
double);
230 double ModifiedBesselI(
int,
double);
237 { this->FillCenteredDirectional(coeff); }
242 const char *GetNameOfClass()
243 {
return "itkGaussianDerivativeOperator"; }
273 #define ITK_TEMPLATE_GaussianDerivativeOperator(_, EXPORT, x, y) namespace itk { \
274 _(2(class EXPORT GaussianDerivativeOperator< ITK_TEMPLATE_2 x >)) \
275 namespace Templates { typedef GaussianDerivativeOperator< ITK_TEMPLATE_2 x > \
276 GaussianDerivativeOperator##y; } \
279 #if ITK_TEMPLATE_EXPLICIT
280 # include "Templates/itkGaussianDerivativeOperator+-.h"