18 #ifndef itkDiscreteHessianGaussianImageFunction_h
19 #define itkDiscreteHessianGaussianImageFunction_h
45 template<
typename TInputImage,
typename TOutput =
double >
48 SymmetricSecondRankTensor< TOutput, TInputImage::ImageDimension >,
80 static constexpr
unsigned int ImageDimension2 = InputImageType::ImageDimension;
84 TInputImage::ImageDimension >;
90 Self::ImageDimension2 >;
95 3 *Self::ImageDimension2 >;
102 * ( Self::ImageDimension2 + 1 ) / 2 >;
116 OutputType Evaluate(
const PointType & point)
const override;
119 OutputType EvaluateAtIndex(
const IndexType & index)
const override;
122 OutputType EvaluateAtContinuousIndex(
123 const ContinuousIndexType & index)
const override;
129 itkSetMacro(Variance, VarianceArrayType);
130 itkGetConstMacro(Variance,
const VarianceArrayType);
131 itkSetVectorMacro(Variance,
double, VarianceArrayType::Length);
137 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 itkSetMacro(InterpolationMode, InterpolationModeType);
182 itkGetConstMacro(InterpolationMode, InterpolationModeType);
189 void SetInputImage(
const InputImageType *ptr)
override;
203 void PrintSelf(std::ostream & os,
Indent indent)
const override;
205 void RecomputeGaussianKernel();
246 #ifndef ITK_MANUAL_INSTANTIATION
247 #include "itkDiscreteHessianGaussianImageFunction.hxx"
OperatorImageFunctionPointer m_OperatorImageFunction
KernelArrayType m_KernelArray
Light weight base class for most itk classes.
typename Superclass::ContinuousIndexType ContinuousIndexType
Represent a symmetric tensor of second rank.
bool m_NormalizeAcrossScale
~DiscreteHessianGaussianImageFunction() override
VarianceArrayType m_Variance
typename Superclass::InputPixelType InputPixelType
Compute the convolution of a neighborhood operator with the image at a specific location in space...
virtual void SetVariance(double variance)
A NeighborhoodOperator whose coefficients are a one dimensional, discrete derivative Gaussian kernel...
ImageBaseType::IndexType IndexType
typename Superclass::IndexValueType IndexValueType
signed long IndexValueType
typename OperatorImageFunctionType::Pointer OperatorImageFunctionPointer
InterpolationModeType m_InterpolationMode
unsigned int m_MaximumKernelWidth
typename Superclass::InputImageType InputImageType
virtual void Initialize()
DiscreteHessianGaussianImageFunction(const Self &)
typename Superclass::IndexType IndexType
void operator=(const Self &)
GaussianDerivativeOperatorArrayType m_OperatorArray
Control indentation during Print() invocation.
ImageBaseType::PointType PointType
Compute the Hessian Gaussian of an image at a specific location in space by calculating discrete seco...
typename Superclass::PointType PointType
Evaluates a function of an image at specified position.
void SetSigma(const double sigma)
typename Superclass::OutputType OutputType