|
SimpleITK
|
The Wiener deconvolution image filter is designed to restore an image convolved with a blurring kernel while keeping noise enhancement to a minimum. More...
#include <sitkWienerDeconvolutionImageFilter.h>
Inheritance diagram for itk::simple::WienerDeconvolutionImageFilter:
Collaboration diagram for itk::simple::WienerDeconvolutionImageFilter:The Wiener deconvolution image filter is designed to restore an image convolved with a blurring kernel while keeping noise enhancement to a minimum.
The Wiener filter aims to minimize noise enhancement induced by frequencies with low signal-to-noise ratio. The Wiener filter kernel is defined in the frequency domain as \(W(\omega) = H^*(\omega) / (|H(\omega)|^2 + (1 / SNR(\omega)))\) where \(H(\omega)\) is the Fourier transform of the blurring kernel with which the original image was convolved and the signal-to-noise ratio \(SNR(\omega)\) . \(SNR(\omega)\) is defined by \(P_f(\omega) / P_n(\omega)\) where \(P_f(\omega)\) is the power spectral density of the uncorrupted signal and \(P_n(\omega)\) is the power spectral density of the noise. When applied to the input blurred image, this filter produces an estimate \(\hat{f}(x)\) of the true underlying signal \(f(x)\) that minimizes the expected error between \(\hat{f}(x)\) and \(f(x)\) .
This filter requires two inputs, the image to be deconvolved and the blurring kernel. These two inputs can be set using the methods SetInput() and SetKernelImage(), respectively.
The power spectral densities of the signal and noise are typically unavailable for a given problem. In particular, \(P_f(\omega)\) cannot be computed from \(f(x)\) because this unknown signal is precisely the signal that this filter aims to recover. Nevertheless, it is common for the noise to have a power spectral density that is flat or decreasing significantly more slowly than the power spectral density of a typical image as the frequency \(\omega\) increases. Hence, \(P_n(\omega)\) can typically be approximated with a constant, and this filter makes this assumption (see the NoiseVariance member variable). \(P_f(\omega)\) , on the other hand, will vary with input. This filter computes the power spectral density of the input blurred image, subtracts the power spectral density of the noise, and uses the result as the estimate of \(P_f(\omega)\) .
For further information on the Wiener deconvolution filter, please see "Digital Signal Processing" by Kenneth R. Castleman, Prentice Hall, 1995
Definition at line 73 of file sitkWienerDeconvolutionImageFilter.h.
Public Types | |
| enum | BoundaryConditionType { ZERO_PAD , ZERO_FLUX_NEUMANN_PAD , PERIODIC_PAD } |
| enum | OutputRegionModeType { SAME , VALID } |
| using | PixelIDTypeList = BasicPixelIDTypeList |
| using | Self = WienerDeconvolutionImageFilter |
Public Types inherited from itk::simple::ImageFilter | |
| using | Self = ImageFilter |
Public Types inherited from itk::simple::ProcessObject | |
| using | Self = ProcessObject |
Public Member Functions | |
| Image | Execute (const Image &image1, const Image &image2) |
| BoundaryConditionType | GetBoundaryCondition () const |
| std::string | GetName () const |
| double | GetNoiseVariance () const |
| bool | GetNormalize () const |
| OutputRegionModeType | GetOutputRegionMode () const |
| void | NormalizeOff () |
| void | NormalizeOn () |
| void | SetBoundaryCondition (BoundaryConditionType BoundaryCondition) |
| void | SetNoiseVariance (double NoiseVariance) |
| void | SetNormalize (bool Normalize) |
| void | SetOutputRegionMode (OutputRegionModeType OutputRegionMode) |
| std::string | ToString () const |
| WienerDeconvolutionImageFilter () | |
| virtual | ~WienerDeconvolutionImageFilter () |
Public Member Functions inherited from itk::simple::ImageFilter | |
| ImageFilter () | |
| virtual | ~ImageFilter ()=0 |
Public Member Functions inherited from itk::simple::ProcessObject | |
| virtual void | Abort () |
| virtual int | AddCommand (itk::simple::EventEnum event, const std::function< void()> &func) |
| Directly add a callback to observe an event. | |
| virtual int | AddCommand (itk::simple::EventEnum event, itk::simple::Command &cmd) |
| Add a Command Object to observer the event. | |
| virtual float | GetProgress () const |
| An Active Measurement of the progress of execution. | |
| virtual bool | HasCommand (itk::simple::EventEnum event) const |
| Query of this object has any registered commands for event. | |
| ProcessObject () | |
| virtual void | RemoveAllCommands () |
| Remove all registered commands. | |
| virtual | ~ProcessObject () |
| virtual void | DebugOn () |
| virtual void | DebugOff () |
| virtual bool | GetDebug () const |
| virtual void | SetDebug (bool debugFlag) |
| virtual void | SetNumberOfThreads (unsigned int n) |
| virtual unsigned int | GetNumberOfThreads () const |
| virtual void | SetNumberOfWorkUnits (unsigned int n) |
| virtual unsigned int | GetNumberOfWorkUnits () const |
Private Types | |
| using | MemberFunctionType = Image (Self::*)(const Image &image1, const Image &image2) |
Private Member Functions | |
| template<class TImageType> | |
| Image | ExecuteInternal (const Image &image1, const Image &image2) |
Static Private Member Functions | |
| static const detail::MemberFunctionFactory< MemberFunctionType > & | GetMemberFunctionFactory () |
Private Attributes | |
| BoundaryConditionType | m_BoundaryCondition { itk::simple::WienerDeconvolutionImageFilter::ZERO_FLUX_NEUMANN_PAD } |
| double | m_NoiseVariance { 0.0 } |
| bool | m_Normalize { false } |
| OutputRegionModeType | m_OutputRegionMode { itk::simple::WienerDeconvolutionImageFilter::SAME } |
Friends | |
| struct | detail::MemberFunctionAddressor< MemberFunctionType > |
Additional Inherited Members | |
Static Public Member Functions inherited from itk::simple::ProcessObject | |
| static bool | GetGlobalDefaultDebug () |
| static void | GlobalDefaultDebugOff () |
| static void | GlobalDefaultDebugOn () |
| static void | SetGlobalDefaultDebug (bool debugFlag) |
| static void | GlobalWarningDisplayOn () |
| static void | GlobalWarningDisplayOff () |
| static void | SetGlobalWarningDisplay (bool flag) |
| static bool | GetGlobalWarningDisplay () |
| static double | GetGlobalDefaultCoordinateTolerance () |
| Access the global tolerance to determine congruent spaces. | |
| static void | SetGlobalDefaultCoordinateTolerance (double) |
| Access the global tolerance to determine congruent spaces. | |
| static double | GetGlobalDefaultDirectionTolerance () |
| Access the global tolerance to determine congruent spaces. | |
| static void | SetGlobalDefaultDirectionTolerance (double) |
| Access the global tolerance to determine congruent spaces. | |
| static bool | SetGlobalDefaultThreader (const std::string &threader) |
| Set/Get the default threader used for process objects. | |
| static std::string | GetGlobalDefaultThreader () |
| Set/Get the default threader used for process objects. | |
| static void | SetGlobalDefaultNumberOfThreads (unsigned int n) |
| static unsigned int | GetGlobalDefaultNumberOfThreads () |
| Set/Get the default threader used for process objects. | |
Protected Member Functions inherited from itk::simple::ImageFilter | |
| void | CheckImageMatchingDimension (const Image &image1, const Image &image2, const std::string &image2Name) |
| void | CheckImageMatchingPixelType (const Image &image1, const Image &image2, const std::string &image2Name) |
| void | CheckImageMatchingSize (const Image &image1, const Image &image2, const std::string &image2Name) |
Protected Member Functions inherited from itk::simple::ProcessObject | |
| virtual unsigned long | AddITKObserver (const itk::EventObject &, itk::Command *) |
| virtual itk::ProcessObject * | GetActiveProcess () |
| virtual void | OnActiveProcessDelete () |
| virtual void | onCommandDelete (const itk::simple::Command *cmd) noexcept |
| virtual void | PreUpdate (itk::ProcessObject *p) |
| virtual void | RemoveITKObserver (EventCommand &e) |
Protected Member Functions inherited from itk::simple::NonCopyable | |
| NonCopyable ()=default | |
| NonCopyable (const NonCopyable &)=delete | |
| NonCopyable & | operator= (const NonCopyable &)=delete |
Static Protected Member Functions inherited from itk::simple::ImageFilter | |
| template<class TImageType> | |
| static void | FixNonZeroIndex (TImageType *img) |
Static Protected Member Functions inherited from itk::simple::ProcessObject | |
| template<class TImageType> | |
| static TImageType::ConstPointer | CastImageToITK (const Image &img) |
| template<class TPixelType, unsigned int VImageDimension, unsigned int VLength, template< typename, unsigned int > class TVector> | |
| static Image | CastITKToImage (itk::Image< TVector< TPixelType, VLength >, VImageDimension > *img) |
| template<unsigned int VImageDimension, unsigned int VLength, template< unsigned int > class TVector> | |
| static Image | CastITKToImage (itk::Image< TVector< VLength >, VImageDimension > *img) |
| template<class TImageType> | |
| static Image | CastITKToImage (TImageType *img) |
| static const itk::EventObject & | GetITKEventObject (EventEnum e) |
| template<typename T> | |
| static std::ostream & | ToStringHelper (std::ostream &os, const T &v) |
| static std::ostream & | ToStringHelper (std::ostream &os, const char &v) |
| static std::ostream & | ToStringHelper (std::ostream &os, const signed char &v) |
| static std::ostream & | ToStringHelper (std::ostream &os, const unsigned char &v) |
|
private |
Setup for member function dispatching
Definition at line 158 of file sitkWienerDeconvolutionImageFilter.h.
Define the pixels types supported by this filter
Definition at line 85 of file sitkWienerDeconvolutionImageFilter.h.
Definition at line 75 of file sitkWienerDeconvolutionImageFilter.h.
| Enumerator | |
|---|---|
| ZERO_PAD | |
| ZERO_FLUX_NEUMANN_PAD | |
| PERIODIC_PAD | |
Definition at line 120 of file sitkWienerDeconvolutionImageFilter.h.
| Enumerator | |
|---|---|
| SAME | |
| VALID | |
Definition at line 132 of file sitkWienerDeconvolutionImageFilter.h.
|
virtual |
Destructor
| itk::simple::WienerDeconvolutionImageFilter::WienerDeconvolutionImageFilter | ( | ) |
Default Constructor that takes no arguments and initializes default parameters
| Image itk::simple::WienerDeconvolutionImageFilter::Execute | ( | const Image & | image1, |
| const Image & | image2 ) |
Execute the filter on the input images
|
private |
Referenced by detail::MemberFunctionAddressor< MemberFunctionType >.
|
inline |
Definition at line 130 of file sitkWienerDeconvolutionImageFilter.h.
References m_BoundaryCondition.
|
staticprivate |
|
inlinevirtual |
Name of this class
Implements itk::simple::ProcessObject.
Definition at line 146 of file sitkWienerDeconvolutionImageFilter.h.
|
inline |
Set/get the variance of the zero-mean Gaussian white noise assumed to be added to the input.
Definition at line 100 of file sitkWienerDeconvolutionImageFilter.h.
References m_NoiseVariance.
|
inline |
Definition at line 118 of file sitkWienerDeconvolutionImageFilter.h.
References m_Normalize.
|
inline |
Definition at line 142 of file sitkWienerDeconvolutionImageFilter.h.
References m_OutputRegionMode.
|
inline |
Definition at line 114 of file sitkWienerDeconvolutionImageFilter.h.
References SetNormalize().
|
inline |
Set the value of Normalize to true or false respectfully.
Definition at line 112 of file sitkWienerDeconvolutionImageFilter.h.
References SetNormalize().
|
inline |
Definition at line 125 of file sitkWienerDeconvolutionImageFilter.h.
References m_BoundaryCondition.
|
inline |
Set/get the variance of the zero-mean Gaussian white noise assumed to be added to the input.
Definition at line 94 of file sitkWienerDeconvolutionImageFilter.h.
References m_NoiseVariance.
|
inline |
Normalize the output image by the sum of the kernel components
Definition at line 107 of file sitkWienerDeconvolutionImageFilter.h.
References m_Normalize, and itk::simple::Normalize().
Referenced by NormalizeOff(), and NormalizeOn().
|
inline |
Definition at line 137 of file sitkWienerDeconvolutionImageFilter.h.
References m_OutputRegionMode.
|
virtual |
Print ourselves out
Reimplemented from itk::simple::ProcessObject.
|
friend |
Definition at line 159 of file sitkWienerDeconvolutionImageFilter.h.
References ExecuteInternal().
|
private |
Definition at line 168 of file sitkWienerDeconvolutionImageFilter.h.
Referenced by GetBoundaryCondition(), and SetBoundaryCondition().
|
private |
Definition at line 164 of file sitkWienerDeconvolutionImageFilter.h.
Referenced by GetNoiseVariance(), and SetNoiseVariance().
|
private |
Definition at line 166 of file sitkWienerDeconvolutionImageFilter.h.
Referenced by GetNormalize(), and SetNormalize().
|
private |
Definition at line 170 of file sitkWienerDeconvolutionImageFilter.h.
Referenced by GetOutputRegionMode(), and SetOutputRegionMode().
1.13.2 |
Privacy Policy