18 #ifndef itkWienerDeconvolutionImageFilter_h
19 #define itkWienerDeconvolutionImageFilter_h
74 template<
typename TInputImage,
typename TKernelImage = TInputImage,
typename TOutputImage = TInputImage,
typename TInternalPrecision=
double >
94 itkStaticConstMacro(ImageDimension,
unsigned int,
95 TInputImage::ImageDimension);
123 itkSetMacro(NoiseVariance,
double);
124 itkGetConstMacro(NoiseVariance,
double);
132 void GenerateData() ITK_OVERRIDE;
134 virtual
void PrintSelf( std::ostream & os,
Indent indent ) const ITK_OVERRIDE;
139 double m_NoiseVariance;
144 template<
typename TPixel >
157 return !(*
this != other);
159 inline TPixel
operator()(
const TPixel & I,
const TPixel & H)
const
161 TPixel Pn = m_NoisePowerSpectralDensityConstant;
166 TPixel Pf = std::norm( I );
168 TPixel denominator = std::norm( H ) + ( Pn / (Pf - Pn) );
170 if (
std::abs( denominator ) >= m_KernelZeroMagnitudeThreshold )
172 value = I * ( std::conj( H ) / denominator );
182 m_NoisePowerSpectralDensityConstant = constant;
186 return m_NoisePowerSpectralDensityConstant;
194 m_KernelZeroMagnitudeThreshold = mu;
198 return m_KernelZeroMagnitudeThreshold;
210 #ifndef ITK_MANUAL_INSTANTIATION
211 #include "itkWienerDeconvolutionImageFilter.hxx"
double m_KernelZeroMagnitudeThreshold
Superclass::InputIndexType InputIndexType
TPixel operator()(const TPixel &I, const TPixel &H) const
Superclass::InputRegionType InputRegionType
Superclass::InternalComplexImageType InternalComplexImageType
double GetNoisePowerSpectralDensityConstant() const
The Wiener deconvolution image filter is designed to restore an image convolved with a blurring kerne...
Superclass::InputPixelType InputPixelType
~WienerDeconvolutionFunctor()
~WienerDeconvolutionImageFilter() override
Base class for all process objects that output image data.
double m_NoisePowerSpectralDensityConstant
TInputImage InputImageType
unsigned long SizeValueType
SmartPointer< const Self > ConstPointer
WienerDeconvolutionFunctor()
Superclass::OutputIndexType OutputIndexType
WienerDeconvolutionImageFilter Self
Superclass::InputSizeType InputSizeType
Superclass::InternalComplexType InternalComplexType
void SetNoisePowerSpectralDensityConstant(double constant)
Superclass::KernelRegionType KernelRegionType
Superclass::InternalImagePointerType InternalImagePointerType
bool operator!=(const WienerDeconvolutionFunctor &) const
Superclass::OutputRegionType OutputRegionType
bool operator==(const WienerDeconvolutionFunctor &other) const
Superclass::KernelSizeType KernelSizeType
Superclass::OutputPixelType OutputPixelType
SmartPointer< Self > Pointer
Superclass::KernelPixelType KernelPixelType
Superclass::InternalImageType InternalImageType
InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision > Superclass
double GetKernelZeroMagnitudeThreshold() const
Superclass::KernelIndexType KernelIndexType
Control indentation during Print() invocation.
TKernelImage KernelImageType
Superclass::OutputSizeType OutputSizeType
The direct linear inverse deconvolution filter.
TOutputImage OutputImageType
void SetKernelZeroMagnitudeThreshold(double mu)
Superclass::InternalComplexImagePointerType InternalComplexImagePointerType
Superclass::SizeValueType SizeValueType