18 #ifndef itkDiscreteGaussianDerivativeImageFunction_h
19 #define itkDiscreteGaussianDerivativeImageFunction_h
46 template <
typename TInputImage,
typename TOutput =
double>
68 using typename Superclass::InputImageType;
69 using typename Superclass::InputPixelType;
72 using typename Superclass::ContinuousIndexType;
76 static constexpr
unsigned int ImageDimension2 = InputImageType::ImageDimension;
79 using typename Superclass::OutputType;
99 #if !defined(ITK_LEGACY_REMOVE)
102 InterpolationModeEnum::NearestNeighbourInterpolation;
103 static constexpr
InterpolationModeEnum LinearInterpolation = InterpolationModeEnum::LinearInterpolation;
113 EvaluateAtIndex(
const IndexType & index)
const override;
127 itkSetVectorMacro(Variance,
double, VarianceArrayType::Length);
134 m_Variance.Fill(variance);
145 SetVariance(sigma * sigma);
154 itkSetClampMacro(MaximumError,
double, 0.00001, 0.99999);
155 itkGetConstMacro(MaximumError,
double);
159 itkSetMacro(Order, OrderArrayType);
160 itkGetConstMacro(Order,
const OrderArrayType);
161 itkSetVectorMacro(Order,
unsigned int, OrderArrayType::Length);
176 itkSetMacro(NormalizeAcrossScale,
bool);
177 itkGetConstMacro(NormalizeAcrossScale,
bool);
178 itkBooleanMacro(NormalizeAcrossScale);
182 itkSetMacro(UseImageSpacing,
bool);
183 itkGetConstMacro(UseImageSpacing,
bool);
184 itkBooleanMacro(UseImageSpacing);
191 itkSetMacro(MaximumKernelWidth,
unsigned int);
192 itkGetConstMacro(MaximumKernelWidth,
unsigned int);
196 itkSetEnumMacro(InterpolationMode, InterpolationModeEnum);
197 itkGetEnumMacro(InterpolationMode, InterpolationModeEnum);
205 SetInputImage(
const InputImageType * ptr)
override;
213 RecomputeGaussianKernel();
226 PrintSelf(std::ostream & os,
Indent indent)
const override;
229 RecomputeGaussianKernel();
240 double m_MaximumError{ 0.005 };
245 unsigned int m_MaximumKernelWidth{ 30 };
258 bool m_NormalizeAcrossScale{
true };
261 bool m_UseImageSpacing{
true };
268 #ifndef ITK_MANUAL_INSTANTIATION
269 # include "itkDiscreteGaussianDerivativeImageFunction.hxx"