Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::BilateralImageFilter< TInputImage, TOutputImage > Class Template Reference
[Image Enhancement FiltersImage Feature Extraction Filters]

Blurs an image while preserving edges. More...

#include <itkBilateralImageFilter.h>

Inheritance diagram for itk::BilateralImageFilter:

Inheritance graph
[legend]
Collaboration diagram for itk::BilateralImageFilter< TInputImage, TOutputImage >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef BilateralImageFilter Self
typedef ImageToImageFilter<
TInputImage, TOutputImage > 
Superclass
typedef SmartPointer< SelfPointer
typedef SmartPointer< const
Self
ConstPointer
typedef TInputImage InputImageType
typedef TOutputImage OutputImageType
typedef Superclass::OutputImageRegionType OutputImageRegionType
typedef TOutputImage::PixelType OutputPixelType
typedef TOutputImage::InternalPixelType OutputInternalPixelType
typedef NumericTraits< OutputPixelType
>::RealType 
OutputPixelRealType
typedef TInputImage::PixelType InputPixelType
typedef TInputImage::InternalPixelType InputInternalPixelType
typedef ConstNeighborhoodIterator<
TInputImage > 
NeighborhoodIteratorType
typedef ConstSmartNeighborhoodIterator<
TInputImage > 
SmartNeighborhoodIteratorType
typedef Neighborhood< double,
itkGetStaticConstMacro(ImageDimension) 
KernelType )
typedef KernelType::Iterator KernelIteratorType
typedef KernelType::ConstIterator KernelConstIteratorType
typedef Image< double, itkGetStaticConstMacro(ImageDimension) GaussianImageType )

Public Methods

virtual const char * GetClassName () const
 itkStaticConstMacro (ImageDimension, unsigned int, TOutputImage::ImageDimension)
virtual void GenerateInputRequestedRegion () throw (InvalidRequestedRegionError)
virtual void SetDomainSigma (double data[])
virtual void SetDomainSigma (float data[])
virtual const double * GetDomainSigma () const
virtual void SetRangeSigma (double _arg)
virtual double GetRangeSigma ()
virtual unsigned int GetFilterDimensionality ()
virtual void SetFilterDimensionality (unsigned int _arg)
void SetDomainSigma (const double v)
void SetDomainSigma (const float v)

Static Public Methods

Pointer New ()

Protected Methods

void BeforeThreadedGenerateData ()
void ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, int threadId)
 BilateralImageFilter ()
virtual ~BilateralImageFilter ()
void PrintSelf (std::ostream &os, Indent indent) const

Detailed Description

template<class TInputImage, class TOutputImage>
class itk::BilateralImageFilter< TInputImage, TOutputImage >

Blurs an image while preserving edges.

This filter uses bilateral filtering to blur an image using both domain and range "neighborhoods". Pixels that are close to a pixel in the image domain and similar to a pixel in the image range are used to calculate the filtered value. Two gaussian kernels (one in the image domain and one in the image range) are used to smooth the image. The result is an image that is smoothed in homogeneous regions yet has edges preserved. The result is similar to anisotropic diffusion but the implementation in non-iterative. Another benefit to bilateral filtering is that any distance metric can be used for kernel smoothing the image range. Hence, color images can be smoothed as vector images, using the CIE distances between intensity values as the similarity metric (the Gaussian kernel for the image domain is evaluated using CIE distances). A separate version of this filter will be designed for color and vector images.

Bilateral filtering is capable of reducing the noise in an image by an order of magnitude while maintaining edges.

The bilateral operator used here was described by Tomasi and Manduchi (Bilateral Filtering for Gray and ColorImages. IEEE ICCV. 1998.)

See also:
GaussianOperator , AnisotropicDiffusionImageFilter , Image , Neighborhood , NeighborhoodOperator
Todo:
Support color images

Support vector images

Definition at line 68 of file itkBilateralImageFilter.h.


Member Typedef Documentation

template<class TInputImage, class TOutputImage>
typedef SmartPointer<const Self> itk::BilateralImageFilter< TInputImage, TOutputImage >::ConstPointer
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 76 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef Image<double, itkGetStaticConstMacro(ImageDimension) itk::BilateralImageFilter< TInputImage, TOutputImage >::GaussianImageType)
 

Gaussian image type

Definition at line 120 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage itk::BilateralImageFilter< TInputImage, TOutputImage >::InputImageType
 

Image type information.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 85 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage::InternalPixelType itk::BilateralImageFilter< TInputImage, TOutputImage >::InputInternalPixelType
 

Definition at line 97 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage::PixelType itk::BilateralImageFilter< TInputImage, TOutputImage >::InputPixelType
 

Definition at line 96 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef KernelType::ConstIterator itk::BilateralImageFilter< TInputImage, TOutputImage >::KernelConstIteratorType
 

Definition at line 116 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef KernelType::Iterator itk::BilateralImageFilter< TInputImage, TOutputImage >::KernelIteratorType
 

Kernel iterator.

Definition at line 115 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef Neighborhood<double, itkGetStaticConstMacro(ImageDimension) itk::BilateralImageFilter< TInputImage, TOutputImage >::KernelType)
 

Kernel typedef.

Definition at line 112 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef ConstNeighborhoodIterator<TInputImage> itk::BilateralImageFilter< TInputImage, TOutputImage >::NeighborhoodIteratorType
 

Neighborhood iterator types.

Definition at line 106 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef Superclass::OutputImageRegionType itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputImageRegionType
 

Superclass typedefs.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 89 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TOutputImage itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputImageType
 

Some convenient typedefs.

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 86 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TOutputImage::InternalPixelType itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputInternalPixelType
 

Definition at line 94 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef NumericTraits<OutputPixelType>::RealType itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputPixelRealType
 

Definition at line 95 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TOutputImage::PixelType itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputPixelType
 

Extract some information from the image types. Dimensionality of the two images is assumed to be the same.

Definition at line 93 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef SmartPointer<Self> itk::BilateralImageFilter< TInputImage, TOutputImage >::Pointer
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 75 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef BilateralImageFilter itk::BilateralImageFilter< TInputImage, TOutputImage >::Self
 

Standard class typedefs.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 73 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef ConstSmartNeighborhoodIterator<TInputImage> itk::BilateralImageFilter< TInputImage, TOutputImage >::SmartNeighborhoodIteratorType
 

Definition at line 108 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef ImageToImageFilter< TInputImage, TOutputImage > itk::BilateralImageFilter< TInputImage, TOutputImage >::Superclass
 

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

Definition at line 74 of file itkBilateralImageFilter.h.


Constructor & Destructor Documentation

template<class TInputImage, class TOutputImage>
itk::BilateralImageFilter< TInputImage, TOutputImage >::BilateralImageFilter   [inline, protected]
 

Constructor. Default value for DomainSigma is 4. Default value RangeSigma is 50.

Definition at line 165 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
virtual itk::BilateralImageFilter< TInputImage, TOutputImage >::~BilateralImageFilter   [inline, protected, virtual]
 

Constructor. Default value for DomainSigma is 4. Default value RangeSigma is 50.

Definition at line 175 of file itkBilateralImageFilter.h.


Member Function Documentation

template<class TInputImage, class TOutputImage>
void itk::BilateralImageFilter< TInputImage, TOutputImage >::BeforeThreadedGenerateData   [protected, virtual]
 

Do some setup before the ThreadedGenerateData

Reimplemented from itk::ImageSource< TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::GenerateInputRequestedRegion   throw (InvalidRequestedRegionError) [virtual]
 

BilateralImageFilter needs a larger input requested region than the output requested region (larger by the size of the domain Gaussian kernel). As such, BilateralImageFilter needs to provide an implementation for GenerateInputRequestedRegion() in order to inform the pipeline execution model.

See also:
ImageToImageFilter::GenerateInputRequestedRegion()

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual const char* itk::BilateralImageFilter< TInputImage, TOutputImage >::GetClassName   const [virtual]
 

Run-time type information (and related methods).

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual const double* itk::BilateralImageFilter< TInputImage, TOutputImage >::GetDomainSigma   const [virtual]
 

Standard get/set macros for filter parameters. DomainSigma is specified in the same units as the Image spacing. RangeSigma is specified in the units of intensity.

template<class TInputImage, class TOutputImage>
virtual unsigned int itk::BilateralImageFilter< TInputImage, TOutputImage >::GetFilterDimensionality   [virtual]
 

Standard get/set macros for filter parameters. DomainSigma is specified in the same units as the Image spacing. RangeSigma is specified in the units of intensity.

template<class TInputImage, class TOutputImage>
virtual double itk::BilateralImageFilter< TInputImage, TOutputImage >::GetRangeSigma   [virtual]
 

Standard get/set macros for filter parameters. DomainSigma is specified in the same units as the Image spacing. RangeSigma is specified in the units of intensity.

template<class TInputImage, class TOutputImage>
itk::BilateralImageFilter< TInputImage, TOutputImage >::itkStaticConstMacro ImageDimension   ,
unsigned    int,
TOutputImage::ImageDimension   
 

Extract some information from the image types. Dimensionality of the two images is assumed to be the same.

template<class TInputImage, class TOutputImage>
Pointer itk::BilateralImageFilter< TInputImage, TOutputImage >::New   [static]
 

Method for creation through the object factory.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
void itk::BilateralImageFilter< TInputImage, TOutputImage >::PrintSelf std::ostream &    os,
Indent    indent
const [protected, virtual]
 

Constructor. Default value for DomainSigma is 4. Default value RangeSigma is 50.

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetDomainSigma const float    v [inline]
 

Convenience get/set methods for setting all domain parameters to the same values.

Definition at line 146 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetDomainSigma const double    v [inline]
 

Convenience get/set methods for setting all domain parameters to the same values.

Definition at line 136 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetDomainSigma float    data[] [virtual]
 

Standard get/set macros for filter parameters. DomainSigma is specified in the same units as the Image spacing. RangeSigma is specified in the units of intensity.

template<class TInputImage, class TOutputImage>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetDomainSigma double    data[] [virtual]
 

Standard get/set macros for filter parameters. DomainSigma is specified in the same units as the Image spacing. RangeSigma is specified in the units of intensity.

template<class TInputImage, class TOutputImage>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetFilterDimensionality unsigned int    _arg [virtual]
 

Standard get/set macros for filter parameters. DomainSigma is specified in the same units as the Image spacing. RangeSigma is specified in the units of intensity.

template<class TInputImage, class TOutputImage>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetRangeSigma double    _arg [virtual]
 

Standard get/set macros for filter parameters. DomainSigma is specified in the same units as the Image spacing. RangeSigma is specified in the units of intensity.

template<class TInputImage, class TOutputImage>
void itk::BilateralImageFilter< TInputImage, TOutputImage >::ThreadedGenerateData const OutputImageRegionType   outputRegionForThread,
int    threadId
[protected, virtual]
 

Standard pipeline method. This filter is implemented as a multi-threaded filter.

Reimplemented from itk::ImageSource< TOutputImage >.


The documentation for this class was generated from the following file:
Generated at Wed Mar 12 01:14:00 2003 for ITK by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2000