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

#include <itkLandweberDeconvolutionImageFilter.h>

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

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef TInputImage InputImageType
typedef
Superclass::InternalComplexImagePointerType 
InternalComplexImagePointerType
typedef
Superclass::InternalComplexImageType 
InternalComplexImageType
typedef
Superclass::InternalComplexType 
InternalComplexType
typedef
Superclass::InternalImagePointerType 
InternalImagePointerType
typedef
Superclass::InternalImageType 
InternalImageType
typedef TKernelImage KernelImageType
typedef TOutputImage OutputImageType
typedef SmartPointer< SelfPointer
typedef
LandweberDeconvolutionImageFilter 
Self
typedef
IterativeDeconvolutionImageFilter
< TInputImage, TKernelImage,
TOutputImage > 
Superclass

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
virtual const char * GetNameOfClass () const
virtual void SetAlpha (double _arg)
virtual double GetAlpha ()

Static Public Member Functions

static Pointer New ()

Protected Types

typedef Superclass::FFTFilterType FFTFilterType
typedef Superclass::IFFTFilterType IFFTFilterType

Protected Member Functions

virtual void Finish (ProgressAccumulator *progress, float progressWeight)
virtual void Initialize (ProgressAccumulator *progress, float progressWeight, float iterationProgressWeight)
virtual void Iteration (ProgressAccumulator *progress, float iterationProgressWeight)
 LandweberDeconvolutionImageFilter ()
virtual void PrintSelf (std::ostream &os, Indent indent) const
virtual ~LandweberDeconvolutionImageFilter ()

Private Types

typedef
TernaryFunctorImageFilter
< InternalComplexImageType,
InternalComplexImageType,
InternalComplexImageType,
InternalComplexImageType,
LandweberFunctor
LandweberFilterType
typedef
Functor::LandweberMethod
< InternalComplexType,
InternalComplexType,
InternalComplexType,
InternalComplexType
LandweberFunctor

Private Member Functions

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

Private Attributes

double m_Alpha
IFFTFilterType::Pointer m_IFFTFilter
LandweberFilterType::Pointer m_LandweberFilter
InternalComplexImagePointerType m_TransformedInput

Detailed Description

template<class TInputImage, class TKernelImage = TInputImage, class TOutputImage = TInputImage>
class itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >

Deconvolve an image using the Landweber deconvolution algorithm.

This filter implements the Landweber deconvolution algorthm as defined in Bertero M and Boccacci P, "Introduction to Inverse Problems in Imaging", 1998. The algorithm assumes that the input image has been formed by a linear shift-invariant system with a known kernel.

The Landweber algorithm converges to a solution that minimizes the sum of squared errors $||f \otimes h - g||$ where $f$ is the estimate of the unblurred image, $\otimes$ is the convolution operator, $h$ is the blurring kernel, and $g$ is the blurred input image. As such, it is best suited for images that have zero-mean Gaussian white noise.

This is the base implementation of the Landweber algorithm. It may produce results with negative values. For a version of this algorithm that enforces a positivity constraint on each intermediate solution, see ProjectedLandweberDeconvolutionImageFilter.

This code was adapted from the Insight Journal contribution:

"Deconvolution: infrastructure and reference algorithms" by Gaetan Lehmann http://hdl.handle.net/10380/3207

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

Definition at line 101 of file itkLandweberDeconvolutionImageFilter.h.


Member Typedef Documentation

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef SmartPointer< const Self > itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::ConstPointer
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef Superclass::FFTFilterType itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::FFTFilterType [protected]

Because the inputs are real, we can use the specialized filters for real-to-complex Fourier transforms.

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

Definition at line 150 of file itkLandweberDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef Superclass::IFFTFilterType itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::IFFTFilterType [protected]
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef TInputImage itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::InputImageType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef Superclass::InternalComplexImagePointerType itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::InternalComplexImagePointerType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef Superclass::InternalComplexImageType itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::InternalComplexImageType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef Superclass::InternalComplexType itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::InternalComplexType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef Superclass::InternalImagePointerType itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::InternalImagePointerType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef Superclass::InternalImageType itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::InternalImageType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef TKernelImage itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::KernelImageType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef TernaryFunctorImageFilter< InternalComplexImageType, InternalComplexImageType, InternalComplexImageType, InternalComplexImageType, LandweberFunctor > itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::LandweberFilterType [private]

Definition at line 171 of file itkLandweberDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef Functor::LandweberMethod< InternalComplexType, InternalComplexType, InternalComplexType, InternalComplexType > itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::LandweberFunctor [private]

Definition at line 166 of file itkLandweberDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef TOutputImage itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::OutputImageType
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef SmartPointer< Self > itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::Pointer
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef LandweberDeconvolutionImageFilter itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::Self
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
typedef IterativeDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage > itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::Superclass

Constructor & Destructor Documentation

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::LandweberDeconvolutionImageFilter ( ) [protected]
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
virtual itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::~LandweberDeconvolutionImageFilter ( ) [protected, virtual]
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::LandweberDeconvolutionImageFilter ( const Self ) [private]

Member Function Documentation

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
virtual::itk::LightObject::Pointer itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::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::FFTConvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

Reimplemented in itk::ProjectedLandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >, and itk::ProjectedIterativeDeconvolutionImageFilter< LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage > >.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
virtual void itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::Finish ( ProgressAccumulator progress,
float  progressWeight 
) [protected, virtual]
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
virtual double itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::GetAlpha ( ) [virtual]

Set/get relaxation factor.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
virtual const char* itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::GetNameOfClass ( ) const [virtual]
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
virtual void itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::Initialize ( ProgressAccumulator progress,
float  progressWeight,
float  iterationProgressWeight 
) [protected, virtual]
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
virtual void itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::Iteration ( ProgressAccumulator ,
float   
) [protected, virtual]
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
static Pointer itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::New ( ) [static]
template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
void itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::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::IterativeDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

Reimplemented in itk::ProjectedIterativeDeconvolutionImageFilter< LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage > >, and itk::ProjectedLandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
virtual void itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::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::IterativeDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
virtual void itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::SetAlpha ( double  _arg) [virtual]

Set/get relaxation factor.


Member Data Documentation

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
double itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::m_Alpha [private]

Definition at line 159 of file itkLandweberDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
IFFTFilterType::Pointer itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::m_IFFTFilter [private]

Definition at line 174 of file itkLandweberDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
LandweberFilterType::Pointer itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::m_LandweberFilter [private]

Definition at line 173 of file itkLandweberDeconvolutionImageFilter.h.

template<class TInputImage , class TKernelImage = TInputImage, class TOutputImage = TInputImage>
InternalComplexImagePointerType itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage >::m_TransformedInput [private]

Definition at line 161 of file itkLandweberDeconvolutionImageFilter.h.


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