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< TInputImage, TOutputImage >:

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

Collaboration graph
[legend]
List of all members.

[NOHEADER]

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

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 FixedArray< double,
itkGetStaticConstMacro(ImageDimension) 
ArrayType )
typedef ConstNeighborhoodIterator<
TInputImage > 
NeighborhoodIteratorType
typedef Neighborhood< double,
itkGetStaticConstMacro(ImageDimension) 
KernelType )
typedef KernelType::SizeType SizeType
typedef KernelType::Iterator KernelIteratorType
typedef KernelType::ConstIterator KernelConstIteratorType
typedef Image< double, itkGetStaticConstMacro(ImageDimension) GaussianImageType )

Public Member Functions

virtual const char * GetNameOfClass () const
 itkStaticConstMacro (ImageDimension, unsigned int, TOutputImage::ImageDimension)
void SetDomainSigma (const double v)
virtual void SetDomainSigma (ArrayType _arg)
virtual const ArrayType GetDomainSigma ()
virtual void SetRangeSigma (double _arg)
virtual double GetRangeSigma ()
virtual unsigned int GetFilterDimensionality ()
virtual void SetFilterDimensionality (unsigned int _arg)
virtual void AutomaticKernelSizeOn ()
virtual void AutomaticKernelSizeOff ()
virtual bool GetAutomaticKernelSize ()
virtual void SetAutomaticKernelSize (bool _arg)
void SetRadius (const unsigned long)
virtual void SetRadius (SizeType _arg)
virtual const SizeTypeGetRadius ()
virtual void SetNumberOfRangeGaussianSamples (unsigned long _arg)
virtual unsigned long GetNumberOfRangeGaussianSamples ()

Static Public Member Functions

Pointer New ()

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 69 of file itkBilateralImageFilter.h.


Member Typedef Documentation

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

Typedef of double containers

Definition at line 106 of file itkBilateralImageFilter.h.

Referenced by itk::BilateralImageFilter< TInputImage, TOutputImage >::~BilateralImageFilter().

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

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

Definition at line 77 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 123 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 86 of file itkBilateralImageFilter.h.

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

Definition at line 98 of file itkBilateralImageFilter.h.

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

Definition at line 97 of file itkBilateralImageFilter.h.

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

Definition at line 119 of file itkBilateralImageFilter.h.

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

Kernel iterator.

Definition at line 118 of file itkBilateralImageFilter.h.

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

Kernel typedef.

Definition at line 114 of file itkBilateralImageFilter.h.

Referenced by itk::BilateralImageFilter< TInputImage, TOutputImage >::~BilateralImageFilter().

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

Neighborhood iterator types.

Definition at line 110 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 90 of file itkBilateralImageFilter.h.

Referenced by itk::BilateralImageFilter< TInputImage, TOutputImage >::~BilateralImageFilter().

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

Some convenient typedefs.

Reimplemented from itk::ImageSource< TOutputImage >.

Definition at line 87 of file itkBilateralImageFilter.h.

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

Definition at line 95 of file itkBilateralImageFilter.h.

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

Definition at line 96 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 94 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 76 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 74 of file itkBilateralImageFilter.h.

Referenced by itk::BilateralImageFilter< TInputImage, TOutputImage >::~BilateralImageFilter().

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

Definition at line 115 of file itkBilateralImageFilter.h.

Referenced by itk::BilateralImageFilter< TInputImage, TOutputImage >::~BilateralImageFilter().

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

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

Definition at line 75 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 171 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 187 of file itkBilateralImageFilter.h.

References itk::BilateralImageFilter< TInputImage, TOutputImage >::ArrayType, itk::BilateralImageFilter< TInputImage, TOutputImage >::KernelType, itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputImageRegionType, itk::BilateralImageFilter< TInputImage, TOutputImage >::Self, and itk::BilateralImageFilter< TInputImage, TOutputImage >::SizeType.


Member Function Documentation

template<class TInputImage, class TOutputImage>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::AutomaticKernelSizeOff  )  [virtual]
 

Control automatic kernel size determination. When automatic is "on", the kernel size is a function of the domain sigma. When automatic is "off", the kernel size is whatever is specified by the user.

See also:
SetRadius()

template<class TInputImage, class TOutputImage>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::AutomaticKernelSizeOn  )  [virtual]
 

Control automatic kernel size determination. When automatic is "on", the kernel size is a function of the domain sigma. When automatic is "off", the kernel size is whatever is specified by the user.

See also:
SetRadius()

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) [protected, 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 bool itk::BilateralImageFilter< TInputImage, TOutputImage >::GetAutomaticKernelSize  )  [virtual]
 

Control automatic kernel size determination. When automatic is "on", the kernel size is a function of the domain sigma. When automatic is "off", the kernel size is whatever is specified by the user.

See also:
SetRadius()

template<class TInputImage, class TOutputImage>
virtual const ArrayType itk::BilateralImageFilter< TInputImage, TOutputImage >::GetDomainSigma  )  [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 const char* itk::BilateralImageFilter< TInputImage, TOutputImage >::GetNameOfClass  )  const [virtual]
 

Run-time type information (and related methods).

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

template<class TInputImage, class TOutputImage>
virtual unsigned long itk::BilateralImageFilter< TInputImage, TOutputImage >::GetNumberOfRangeGaussianSamples  )  [virtual]
 

Set/Get the number of samples in the approximation to the Gaussian used for the range smoothing. Samples are only generated in the range of [0, 4*m_RangeSigma]. Default is 100.

template<class TInputImage, class TOutputImage>
virtual const SizeType& itk::BilateralImageFilter< TInputImage, TOutputImage >::GetRadius  )  [virtual]
 

Set/Get the kernel radius, specified in pixels. This parameter is used only when AutomaticNeighborhoodSize is "off".

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::Object.

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>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetAutomaticKernelSize bool  _arg  )  [virtual]
 

Control automatic kernel size determination. When automatic is "on", the kernel size is a function of the domain sigma. When automatic is "off", the kernel size is whatever is specified by the user.

See also:
SetRadius()

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 138 of file itkBilateralImageFilter.h.

template<class TInputImage, class TOutputImage>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetDomainSigma ArrayType  _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 >::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 >::SetNumberOfRangeGaussianSamples unsigned long  _arg  )  [virtual]
 

Set/Get the number of samples in the approximation to the Gaussian used for the range smoothing. Samples are only generated in the range of [0, 4*m_RangeSigma]. Default is 100.

template<class TInputImage, class TOutputImage>
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetRadius SizeType  _arg  )  [virtual]
 

Set/Get the kernel radius, specified in pixels. This parameter is used only when AutomaticNeighborhoodSize is "off".

template<class TInputImage, class TOutputImage>
void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetRadius const unsigned  long  ) 
 

Set/Get the kernel radius, specified in pixels. This parameter is used only when AutomaticNeighborhoodSize is "off".

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 Thu May 25 00:24:01 2006 for ITK by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2000