18#ifndef itkDiscreteHessianGaussianImageFunction_h
19#define itkDiscreteHessianGaussianImageFunction_h
45template <
typename TInputImage,
typename TOutput =
double>
47 :
public ImageFunction<TInputImage, SymmetricSecondRankTensor<TOutput, TInputImage::ImageDimension>, TOutput>
103#if !defined(ITK_LEGACY_REMOVE)
106 InterpolationModeEnum::NearestNeighbourInterpolation;
107 static constexpr InterpolationModeEnum LinearInterpolation = InterpolationModeEnum::LinearInterpolation;
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);
253#ifndef ITK_MANUAL_INSTANTIATION
254# include "itkDiscreteHessianGaussianImageFunction.hxx"
GaussianDerivativeOperatorArrayType m_OperatorArray
typename OperatorImageFunctionType::Pointer OperatorImageFunctionPointer
static constexpr unsigned int ImageDimension2
InterpolationModeEnum m_InterpolationMode
SmartPointer< const Self > ConstPointer
SmartPointer< Self > Pointer
Neighborhood< TOutput, Self::ImageDimension2 > KernelType
DiscreteHessianGaussianImageFunction()
~DiscreteHessianGaussianImageFunction() override=default
DiscreteHessianGaussianImageFunction(const Self &)
virtual void SetVariance(double variance)
VarianceArrayType m_Variance
FixedArray< KernelType, Self::ImageDimension2 *(Self::ImageDimension2+1)/2 > KernelArrayType
void RecomputeGaussianKernel()
KernelArrayType m_KernelArray
SymmetricSecondRankTensor< TOutput, TInputImage::ImageDimension > TensorType
FixedArray< GaussianDerivativeOperatorType, 3 *Self::ImageDimension2 > GaussianDerivativeOperatorArrayType
void PrintSelf(std::ostream &os, Indent indent) const override
OutputType EvaluateAtContinuousIndex(const ContinuousIndexType &index) const override
itk::GaussianDerivativeOperator< TOutput, Self::ImageDimension2 > GaussianDerivativeOperatorType
bool m_NormalizeAcrossScale
void SetInputImage(const InputImageType *ptr) override
unsigned int m_MaximumKernelWidth
FixedArray< double, Self::ImageDimension2 > VarianceArrayType
OperatorImageFunctionPointer m_OperatorImageFunction
void operator=(const Self &)
NeighborhoodOperatorImageFunction< InputImageType, TOutput > OperatorImageFunctionType
virtual void SetVariance(VarianceArrayType _arg)
DiscreteHessianGaussianImageFunction Self
OutputType EvaluateAtIndex(const IndexType &index) const override
OutputType Evaluate(const PointType &point) const override
void SetSigma(const double sigma)
virtual void Initialize()
itk::GaussianDerivativeOperatorEnums::InterpolationMode InterpolationModeEnum
ImageFunction< TInputImage, SymmetricSecondRankTensor< TOutput, TInputImage::ImageDimension >, TOutput > Superclass
Simulate a standard C array with copy semantics.
static constexpr unsigned int Length
A NeighborhoodOperator whose coefficients are a one dimensional, discrete derivative Gaussian kernel.
typename InputImageType::PixelType InputPixelType
typename InputImageType::IndexValueType IndexValueType
typename InputImageType::IndexType IndexType
Point< TOutput, Self::ImageDimension > PointType
ContinuousIndex< TOutput, Self::ImageDimension > ContinuousIndexType
TInputImage InputImageType
Control indentation during Print() invocation.
Compute the convolution of a neighborhood operator with the image at a specific location in space,...
SmartPointer< Self > Pointer
A light-weight container object for storing an N-dimensional neighborhood of values.
virtual void Modified() const
Implements transparent reference counting.
Represent a symmetric tensor of second rank.
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