ITK  4.1.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes
itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision > Class Template Reference

#include <itkWienerDeconvolutionImageFilter.h>

+ Inheritance diagram for itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >:
+ Collaboration diagram for itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >:

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef TInputImage InputImageType
typedef Superclass::InputIndexType InputIndexType
typedef Superclass::InputPixelType InputPixelType
typedef Superclass::InputRegionType InputRegionType
typedef Superclass::InputSizeType InputSizeType
typedef
Superclass::InternalComplexImagePointerType 
InternalComplexImagePointerType
typedef
Superclass::InternalComplexImageType 
InternalComplexImageType
typedef
Superclass::InternalComplexType 
InternalComplexType
typedef
Superclass::InternalImagePointerType 
InternalImagePointerType
typedef
Superclass::InternalImageType 
InternalImageType
typedef TKernelImage KernelImageType
typedef Superclass::KernelIndexType KernelIndexType
typedef Superclass::KernelPixelType KernelPixelType
typedef
Superclass::KernelRegionType 
KernelRegionType
typedef Superclass::KernelSizeType KernelSizeType
typedef TOutputImage OutputImageType
typedef Superclass::OutputIndexType OutputIndexType
typedef Superclass::OutputPixelType OutputPixelType
typedef
Superclass::OutputRegionType 
OutputRegionType
typedef Superclass::OutputSizeType OutputSizeType
typedef SmartPointer< SelfPointer
typedef
WienerDeconvolutionImageFilter 
Self
typedef Superclass::SizeValueType SizeValueType
typedef
FFTConvolutionImageFilter
< TInputImage, TOutputImage > 
Superclass

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
virtual const char * GetNameOfClass () const
virtual void SetNoiseVariance (double _arg)
virtual double GetNoiseVariance () const

Static Public Member Functions

static Pointer New ()

Static Public Attributes

static const unsigned int ImageDimension = TInputImage::ImageDimension

Protected Member Functions

void GenerateData ()
virtual void PrintSelf (std::ostream &os, Indent indent) const
 WienerDeconvolutionImageFilter ()
 ~WienerDeconvolutionImageFilter ()

Private Member Functions

void operator= (const Self &)
 WienerDeconvolutionImageFilter (const Self &)

Private Attributes

double m_NoiseVariance

Detailed Description

template<class TInputImage, class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
class itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >

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

Author:
Gaeten Lehmann, Biologie du Developpement et de la Reproduction, INRA de Jouy-en-Josas, France
Chris Mullins, The University of North Carolina at Chapel Hill
Cory Quammen, The University of North Carolina at Chapel Hill

Definition at line 75 of file itkWienerDeconvolutionImageFilter.h.


Member Typedef Documentation

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef SmartPointer< const Self > itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::ConstPointer
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef TInputImage itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InputImageType

Some convenient typedefs.

Reimplemented from itk::InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

Definition at line 94 of file itkWienerDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::InputIndexType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InputIndexType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::InputPixelType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InputPixelType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::InputRegionType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InputRegionType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::InputSizeType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InputSizeType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::InternalComplexImagePointerType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InternalComplexImagePointerType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::InternalComplexImageType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InternalComplexImageType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::InternalComplexType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InternalComplexType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::InternalImagePointerType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InternalImagePointerType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::InternalImageType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::InternalImageType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef TKernelImage itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::KernelImageType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::KernelIndexType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::KernelIndexType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::KernelPixelType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::KernelPixelType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::KernelRegionType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::KernelRegionType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::KernelSizeType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::KernelSizeType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef TOutputImage itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::OutputImageType

Some convenient typedefs.

Reimplemented from itk::InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

Definition at line 95 of file itkWienerDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::OutputIndexType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::OutputIndexType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::OutputPixelType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::OutputPixelType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::OutputRegionType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::OutputRegionType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::OutputSizeType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::OutputSizeType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef SmartPointer< Self > itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::Pointer
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef WienerDeconvolutionImageFilter itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::Self
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef Superclass::SizeValueType itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::SizeValueType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
typedef FFTConvolutionImageFilter< TInputImage, TOutputImage > itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::Superclass

Constructor & Destructor Documentation

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::WienerDeconvolutionImageFilter ( ) [protected]
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::~WienerDeconvolutionImageFilter ( ) [inline, protected]

Definition at line 126 of file itkWienerDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::WienerDeconvolutionImageFilter ( const Self ) [private]

Member Function Documentation

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
virtual::itk::LightObject::Pointer itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::CreateAnother ( void  ) const [virtual]

Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.

Reimplemented from itk::InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
void itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::GenerateData ( ) [protected, virtual]

This filter uses a minipipeline to compute the output.

Reimplemented from itk::InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
virtual const char* itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::GetNameOfClass ( ) const [virtual]

Run-time type information ( and related methods )

Reimplemented from itk::InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
virtual double itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::GetNoiseVariance ( ) const [virtual]

Set/get the variance of the zero-mean Gaussian white noise assumed to be added to the input.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
static Pointer itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::New ( ) [static]

Method for creation through the object factory.

Reimplemented from itk::InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
void itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::operator= ( const Self ) [private]

PushBackInput(), PushFronInput() in the public section force the input to be the type expected by an ImageToImageFilter. However, these methods end of "hiding" the versions from the superclass (ProcessObject) whose arguments are DataObjects. Here, we re-expose the versions from ProcessObject to avoid warnings about hiding methods from the superclass.

Reimplemented from itk::InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
virtual void itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [protected, virtual]

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
virtual void itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::SetNoiseVariance ( double  _arg) [virtual]

Set/get the variance of the zero-mean Gaussian white noise assumed to be added to the input.


Member Data Documentation

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
const unsigned int itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::ImageDimension = TInputImage::ImageDimension [static]

Dimensionality of input and output data is assumed to be the same.

Reimplemented from itk::InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

Definition at line 92 of file itkWienerDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage, class TInternalPrecision = double>
double itk::WienerDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >::m_NoiseVariance [private]

Definition at line 137 of file itkWienerDeconvolutionImageFilter.h.


The documentation for this class was generated from the following file: