18 #ifndef itkDiscreteGradientMagnitudeGaussianImageFunction_h
19 #define itkDiscreteGradientMagnitudeGaussianImageFunction_h
46 template <
typename TInputImage,
typename TOutput =
double>
69 using typename Superclass::InputImageType;
70 using typename Superclass::InputPixelType;
73 using typename Superclass::ContinuousIndexType;
77 static constexpr
unsigned int ImageDimension2 = InputImageType::ImageDimension;
80 using typename Superclass::OutputType;
103 #if !defined(ITK_LEGACY_REMOVE)
106 InterpolationModeEnum::NearestNeighbourInterpolation;
107 static constexpr
InterpolationModeEnum LinearInterpolation = InterpolationModeEnum::LinearInterpolation;
117 EvaluateAtIndex(
const IndexType & index)
const override;
129 itkSetVectorMacro(Variance,
double, VarianceArrayType::Length);
136 m_Variance.Fill(variance);
146 SetVariance(sigma * sigma);
154 itkSetClampMacro(MaximumError,
double, 0.00001, 0.99999);
155 itkGetConstMacro(MaximumError,
double);
161 itkSetMacro(NormalizeAcrossScale,
bool);
162 itkGetConstMacro(NormalizeAcrossScale,
bool);
163 itkBooleanMacro(NormalizeAcrossScale);
167 itkSetMacro(UseImageSpacing,
bool);
168 itkGetConstMacro(UseImageSpacing,
bool);
169 itkBooleanMacro(UseImageSpacing);
176 itkSetMacro(MaximumKernelWidth,
unsigned int);
177 itkGetConstMacro(MaximumKernelWidth,
unsigned int);
181 itkSetEnumMacro(InterpolationMode, InterpolationModeEnum);
182 itkGetEnumMacro(InterpolationMode, InterpolationModeEnum);
190 SetInputImage(
const InputImageType * ptr)
override;
197 RecomputeGaussianKernel();
210 PrintSelf(std::ostream & os,
Indent indent)
const override;
213 RecomputeGaussianKernel();
224 double m_MaximumError{ 0.005 };
229 unsigned int m_MaximumKernelWidth{ 30 };
243 bool m_NormalizeAcrossScale{
true };
246 bool m_UseImageSpacing{
true };
253 #ifndef ITK_MANUAL_INSTANTIATION
254 # include "itkDiscreteGradientMagnitudeGaussianImageFunction.hxx"