18 #ifndef __itkPatchBasedDenoisingBaseImageFilter_h
19 #define __itkPatchBasedDenoisingBaseImageFilter_h
94 template <
class TInputImage,
class TOutputImage>
113 itkStaticConstMacro(ImageDimension,
unsigned int,
114 InputImageType::ImageDimension);
128 typedef enum { GAUSSIAN = 0, RICIAN = 1, POISSON = 2 } NoiseModelType;
133 typedef enum { EUCLIDEAN = 0, RIEMANNIAN = 1 } ComponentSpaceType;
135 typedef enum { UNINITIALIZED = 0, INITIALIZED = 1 } FilterStateType;
146 typedef typename ::itk::Statistics::ImageToNeighborhoodSampleAdaptor<
158 itkSetMacro(PatchRadius,
unsigned int);
159 itkGetConstMacro(PatchRadius,
unsigned int);
187 itkSetClampMacro(SmoothingWeight,
double, 0.0, 1.0);
188 itkGetConstMacro(SmoothingWeight,
double);
195 itkSetClampMacro(FidelityWeight,
double, 0.0, 1.0);
196 itkGetConstMacro(FidelityWeight,
double);
204 itkSetMacro(DoKernelBandwidthEstimation,
bool);
205 itkBooleanMacro(DoKernelBandwidthEstimation);
206 itkGetConstMacro(DoKernelBandwidthEstimation,
bool);
216 itkGetConstMacro(KernelBandwidthUpdateFrequency,
unsigned int);
225 itkGetConstReferenceMacro(NumberOfIterations,
unsigned int);
229 itkGetConstReferenceMacro(ElapsedIterations,
unsigned int);
236 itkSetMacro(AlwaysTreatComponentsAsEuclidean,
bool);
237 itkBooleanMacro(AlwaysTreatComponentsAsEuclidean);
238 itkGetConstMacro(AlwaysTreatComponentsAsEuclidean,
bool);
243 virtual void SetStateToInitialized();
246 virtual void SetStateToUninitialized();
249 #if !defined(CABLE_CONFIGURATION)
257 itkSetMacro(ManualReinitialization,
bool);
258 itkGetConstReferenceMacro(ManualReinitialization,
bool);
259 itkBooleanMacro(ManualReinitialization);
271 virtual void PrintSelf(std::ostream& os,
Indent indent)
const;
273 virtual void GenerateInputRequestedRegion();
275 virtual void GenerateData();
277 virtual void CopyInputToOutput() = 0;
280 virtual void InitializePatchWeights();
285 virtual void AllocateUpdateBuffer() = 0;
292 virtual void ComputeKernelBandwidthUpdate() = 0;
295 virtual void ComputeImageUpdate() = 0;
296 virtual void ApplyUpdate() = 0;
303 virtual bool ThreadedHalt(
void *itkNotUsed(threadInfo)) {
return this->Halt(); }
306 itkSetMacro(ElapsedIterations,
unsigned int);
312 {
return EUCLIDEAN; }
314 {
return EUCLIDEAN; }
316 {
return RIEMANNIAN; }
317 template <
class PixelT>
319 {
return EUCLIDEAN; }
355 void operator=(
const Self&);
366 #define ITK_TEMPLATE_PatchBasedDenoisingBaseImageFilter(_, EXPORT, x, y) namespace itk { \
367 _(2(class EXPORT PatchBasedDenoisingBaseImageFilter< ITK_TEMPLATE_2 x >)) | \
368 namespace Templates { typedef PatchBasedDenoisingBaseImageFilter< ITK_TEMPLATE_2 x > \
369 PatchBasedDenoisingBaseImageFilter##y; } \
372 #if ITK_TEMPLATE_EXPLICIT
373 # include "Templates/itkPatchBasedDenoisingBaseImageFilter+-.h"
377 # include "itkPatchBasedDenoisingBaseImageFilter.hxx"