18 #ifndef itkDiscreteGaussianImageFilter_h
19 #define itkDiscreteGaussianImageFilter_h
63 template <
typename TInputImage,
typename TOutputImage = TInputImage>
98 static constexpr
unsigned int ImageDimension = TOutputImage::ImageDimension;
128 itkGetConstMacro(Variance,
const ArrayType);
135 itkGetConstMacro(MaximumError,
const ArrayType);
140 itkGetConstMacro(MaximumKernelWidth,
unsigned int);
141 itkSetMacro(MaximumKernelWidth,
unsigned int);
149 itkGetConstMacro(FilterDimensionality,
unsigned int);
150 itkSetMacro(FilterDimensionality,
unsigned int);
173 m_MaximumError.Fill(v);
182 for (
unsigned int i = 0; i < ImageDimension; ++i)
186 this->SetVariance(dv);
194 for (
unsigned int i = 0; i < ImageDimension; ++i)
198 this->SetVariance(dv);
207 for (
unsigned int i = 0; i < ImageDimension; ++i)
209 variance[i] = sigma[i] * sigma[i];
211 this->SetVariance(variance);
219 this->SetSigma(sigmas);
224 this->SetVariance(sigma * sigma);
233 for (
unsigned int i = 0; i < ImageDimension; ++i)
235 sigmas[i] = std::sqrt(m_Variance[i]);
246 return std::sqrt(m_Variance[0]);
254 for (
unsigned int i = 0; i < ImageDimension; ++i)
258 this->SetMaximumError(dv);
266 for (
unsigned int i = 0; i < ImageDimension; ++i)
270 this->SetMaximumError(dv);
275 GetKernelRadius(
const unsigned int dimension)
const;
279 GetKernelRadius()
const;
284 GetKernelSize()
const;
291 itkSetMacro(UseImageSpacing,
bool);
292 itkGetConstMacro(UseImageSpacing,
bool);
293 itkBooleanMacro(UseImageSpacing);
296 #if !defined(ITK_FUTURE_LEGACY_REMOVE)
302 SetUseImageSpacingOn()
304 this->SetUseImageSpacing(
true);
311 SetUseImageSpacingOff()
313 this->SetUseImageSpacing(
false);
326 itkLegacyMacro(
unsigned int GetInternalNumberOfStreamDivisions()
const);
327 itkLegacyMacro(
void SetInternalNumberOfStreamDivisions(
unsigned int));
329 #ifdef ITK_USE_CONCEPT_CHECKING
332 itkConceptMacro(OutputHasNumericTraitsCheck, (Concept::HasNumericTraits<OutputPixelValueType>));
340 m_Variance.Fill(0.0);
341 m_MaximumError.Fill(0.01);
342 m_MaximumKernelWidth = 32;
343 m_UseImageSpacing =
true;
344 m_FilterDimensionality = ImageDimension;
345 m_InputBoundaryCondition = &m_InputDefaultBoundaryCondition;
346 m_RealBoundaryCondition = &m_RealDefaultBoundaryCondition;
351 PrintSelf(std::ostream & os,
Indent indent)
const override;
360 GenerateInputRequestedRegion()
override;
368 GenerateData()
override;
372 GenerateKernel(
const unsigned int dimension, KernelType & oper)
const;
376 GetKernelVarianceArray()
const;
413 #ifndef ITK_MANUAL_INSTANTIATION
414 # include "itkDiscreteGaussianImageFilter.hxx"