18#ifndef itkPatchBasedDenoisingBaseImageFilter_h
19#define itkPatchBasedDenoisingBaseImageFilter_h
31#include "ITKDenoisingExport.h"
77extern ITKDenoising_EXPORT std::ostream &
79extern ITKDenoising_EXPORT std::ostream &
82extern ITKDenoising_EXPORT std::ostream &
129template <
typename TInputImage,
typename TOutputImage>
162#if !defined(ITK_LEGACY_REMOVE)
167 static constexpr NoiseModelEnum NOMODEL = NoiseModelEnum::NOMODEL;
168 static constexpr NoiseModelEnum GAUSSIAN = NoiseModelEnum::GAUSSIAN;
170 static constexpr NoiseModelEnum POISSON = NoiseModelEnum::POISSON;
198 itkSetMacro(PatchRadius,
unsigned int);
199 itkGetConstMacro(PatchRadius,
unsigned int);
208 typename PatchRadiusType::SizeValueType
234 itkSetClampMacro(SmoothingWeight,
double, 0.0, 1.0);
235 itkGetConstMacro(SmoothingWeight,
double);
243 itkSetClampMacro(NoiseModelFidelityWeight,
double, 0.0, 1.0);
244 itkGetConstMacro(NoiseModelFidelityWeight,
double);
251 itkSetMacro(KernelBandwidthEstimation,
bool);
252 itkBooleanMacro(KernelBandwidthEstimation);
253 itkGetConstMacro(KernelBandwidthEstimation,
bool);
263 itkGetConstMacro(KernelBandwidthUpdateFrequency,
unsigned int);
271 itkGetConstReferenceMacro(NumberOfIterations,
unsigned int);
275 itkGetConstReferenceMacro(ElapsedIterations,
unsigned int);
281 itkSetMacro(AlwaysTreatComponentsAsEuclidean,
bool);
282 itkBooleanMacro(AlwaysTreatComponentsAsEuclidean);
283 itkGetConstMacro(AlwaysTreatComponentsAsEuclidean,
bool);
295#if !defined(ITK_WRAPPING_PARSER)
305 itkSetMacro(ManualReinitialization,
bool);
306 itkGetConstReferenceMacro(ManualReinitialization,
bool);
307 itkBooleanMacro(ManualReinitialization);
371 itkSetMacro(ElapsedIterations,
unsigned int);
377 return ComponentSpaceEnum::EUCLIDEAN;
383 return ComponentSpaceEnum::EUCLIDEAN;
389 return ComponentSpaceEnum::RIEMANNIAN;
392 template <
typename PixelT>
396 return ComponentSpaceEnum::EUCLIDEAN;
439#ifndef ITK_MANUAL_INSTANTIATION
440# include "itkPatchBasedDenoisingBaseImageFilter.hxx"
Array class with size defined at construction time.
Const version of NeighborhoodIterator, defining iteration of a local N-dimensional neighborhood of pi...
Represent a diffusion tensor as used in DTI images.
Control indentation during Print() invocation.
static constexpr T max(const T &)
Contains all enum classes used by the PatchBasedDenoisingBaseImageFilter class.
virtual void PostProcessOutput()
OutputImageType * m_OutputImage
double m_NoiseModelFidelityWeight
static constexpr unsigned int ImageDimension
ComponentSpaceEnum DetermineComponentSpace(const RGBPixel< PixelValueType > &p)
typename NumericTraits< PixelType >::ValueType PixelValueType
typename InputImageType::PixelType InputPixelType
virtual void CopyInputToOutput()=0
typename itk::Statistics::ImageToNeighborhoodSampleAdaptor< OutputImageType, BoundaryConditionType > ListAdaptorType
ComponentSpaceEnum DetermineComponentSpace(const PixelT &p)
bool m_ManualReinitialization
void PrintSelf(std::ostream &os, Indent indent) const override
PatchWeightsType GetPatchWeights() const
typename OutputImageType::PixelType OutputPixelType
virtual void InitializeIteration()
unsigned int m_ElapsedIterations
virtual void ComputeKernelBandwidthUpdate()=0
ComponentSpaceEnum m_ComponentSpace
virtual void PreProcessInput()
typename ListAdaptorType::NeighborhoodRadiusType PatchRadiusType
const InputImageType * m_InputImage
void GenerateData() override
void GenerateInputRequestedRegion() override
~PatchBasedDenoisingBaseImageFilter() override=default
Array< float > PatchWeightsType
PatchRadiusType GetPatchDiameterInVoxels() const
ComponentSpaceEnum DetermineComponentSpace(const DiffusionTensor3D< PixelValueType > &p)
PatchBasedDenoisingBaseImageFilter Self
TOutputImage OutputImageType
SmartPointer< Self > Pointer
unsigned int m_NumberOfIterations
PatchBasedDenoisingBaseImageFilter()
PatchRadiusType::SizeValueType GetPatchLengthInVoxels() const
virtual void InitializePatchWeights()
virtual void SetStateToUninitialized()
bool m_AlwaysTreatComponentsAsEuclidean
virtual void ApplyUpdate()=0
PatchBasedDenoisingBaseImageFilterEnums::ComponentSpace ComponentSpaceEnum
void SetPatchWeights(const PatchWeightsType &weights)
ImageToImageFilter< TInputImage, TOutputImage > Superclass
unsigned int m_KernelBandwidthUpdateFrequency
ConstNeighborhoodIterator< InputImageType, BoundaryConditionType > InputImagePatchIterator
ZeroFluxNeumannBoundaryCondition< OutputImageType > BoundaryConditionType
virtual bool ThreadedHalt(void *threadInfo)
virtual void ComputeImageUpdate()=0
virtual void Initialize()
ComponentSpaceEnum DetermineComponentSpace(const RGBAPixel< PixelValueType > &p)
virtual void SetStateToInitialized()
PatchWeightsType m_PatchWeights
PatchBasedDenoisingBaseImageFilterEnums::NoiseModel NoiseModelEnum
NoiseModelEnum m_NoiseModel
PatchRadiusType GetPatchRadiusInVoxels() const
TInputImage InputImageType
PatchBasedDenoisingBaseImageFilterEnums::FilterState FilterStateEnum
virtual void AllocateUpdateBuffer()=0
SmartPointer< const Self > ConstPointer
unsigned int m_PatchRadius
OutputPixelType PixelType
bool m_KernelBandwidthEstimation
Represent Red, Green, Blue and Alpha components for color images.
Represent Red, Green and Blue components for color images.
Implements transparent reference counting.
This class provides ListSample interface to ITK Image.
A function object that determines a neighborhood of values at an image boundary according to a Neuman...
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
ITKCommon_EXPORT std::ostream & operator<<(std::ostream &out, typename AnatomicalOrientation::CoordinateEnum value)