18#ifndef itkDiscreteGaussianDerivativeImageFunction_h
19#define itkDiscreteGaussianDerivativeImageFunction_h
46template <
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;
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);
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);
213 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"
Compute the discrete gaussian derivatives of an the image at a specific location in space,...
DiscreteGaussianDerivativeImageFunction()
virtual void Initialize()
void PrintSelf(std::ostream &os, Indent indent) const override
void RecomputeGaussianKernel()
DiscreteGaussianDerivativeImageFunction(const Self &)
virtual void SetVariance(double variance)
void operator=(const Self &)
~DiscreteGaussianDerivativeImageFunction() override=default
typename OperatorImageFunctionType::Pointer OperatorImageFunctionPointer
virtual void SetOrder(unsigned int order)
OutputType Evaluate(const PointType &point) const override
void SetInputImage(const InputImageType *ptr) override
void SetSigma(const double sigma)
OutputType EvaluateAtIndex(const IndexType &index) const override
OutputType EvaluateAtContinuousIndex(const ContinuousIndexType &index) const override
A NeighborhoodOperator whose coefficients are a one dimensional, discrete derivative Gaussian kernel.
Evaluates a function of an image at specified position.
TInputImage InputImageType
typename InputImageType::IndexType IndexType
Control indentation during Print() invocation.
Light weight base class for most itk classes.
Compute the convolution of a neighborhood operator with the image at a specific location in space,...
A light-weight container object for storing an N-dimensional neighborhood of values.
SmartPointer< Self > Pointer
ImageBaseType::IndexType IndexType
ImageBaseType::PointType PointType
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
*par Constraints *The filter image with at least two dimensions and a vector *length of at least The theory supports extension to scalar but *the implementation of the itk vector classes do not **The template parameter TRealType must be floating point(float or double) or *a user-defined "real" numerical type with arithmetic operations defined *sufficient to compute derivatives. **\par Performance *This filter will automatically multithread if run with *SetUsePrincipleComponents