ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
#include <itkBilateralImageFilter.h>
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.)
Support color images
Support vector images
Definition at line 75 of file itkBilateralImageFilter.h.
typedef FixedArray< double, itkGetStaticConstMacro(ImageDimension) > itk::BilateralImageFilter< TInputImage, TOutputImage >::ArrayType |
Typedef of double containers
Definition at line 112 of file itkBilateralImageFilter.h.
typedef SmartPointer< const Self > itk::BilateralImageFilter< TInputImage, TOutputImage >::ConstPointer |
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Definition at line 83 of file itkBilateralImageFilter.h.
typedef Image< double, itkGetStaticConstMacro(ImageDimension) > itk::BilateralImageFilter< TInputImage, TOutputImage >::GaussianImageType |
Gaussian image type
Definition at line 129 of file itkBilateralImageFilter.h.
typedef TInputImage itk::BilateralImageFilter< TInputImage, TOutputImage >::InputImageType |
Image type information.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Definition at line 89 of file itkBilateralImageFilter.h.
typedef TInputImage::InternalPixelType itk::BilateralImageFilter< TInputImage, TOutputImage >::InputInternalPixelType |
Definition at line 104 of file itkBilateralImageFilter.h.
typedef TInputImage::PixelType itk::BilateralImageFilter< TInputImage, TOutputImage >::InputPixelType |
Definition at line 103 of file itkBilateralImageFilter.h.
typedef KernelType::ConstIterator itk::BilateralImageFilter< TInputImage, TOutputImage >::KernelConstIteratorType |
Definition at line 125 of file itkBilateralImageFilter.h.
typedef KernelType::Iterator itk::BilateralImageFilter< TInputImage, TOutputImage >::KernelIteratorType |
Kernel iterator.
Definition at line 124 of file itkBilateralImageFilter.h.
typedef Neighborhood< double, itkGetStaticConstMacro(ImageDimension) > itk::BilateralImageFilter< TInputImage, TOutputImage >::KernelType |
Kernel typedef.
Definition at line 119 of file itkBilateralImageFilter.h.
typedef ConstNeighborhoodIterator< TInputImage > itk::BilateralImageFilter< TInputImage, TOutputImage >::NeighborhoodIteratorType |
Neighborhood iterator types.
Definition at line 115 of file itkBilateralImageFilter.h.
typedef Superclass::OutputImageRegionType itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputImageRegionType |
Superclass typedefs.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Definition at line 96 of file itkBilateralImageFilter.h.
typedef TOutputImage itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputImageType |
Some convenient typedefs.
Reimplemented from itk::ImageSource< TOutputImage >.
Definition at line 93 of file itkBilateralImageFilter.h.
typedef TOutputImage::InternalPixelType itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputInternalPixelType |
Definition at line 101 of file itkBilateralImageFilter.h.
typedef NumericTraits< OutputPixelType >::RealType itk::BilateralImageFilter< TInputImage, TOutputImage >::OutputPixelRealType |
Definition at line 102 of file itkBilateralImageFilter.h.
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 100 of file itkBilateralImageFilter.h.
typedef SmartPointer< Self > itk::BilateralImageFilter< TInputImage, TOutputImage >::Pointer |
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Definition at line 82 of file itkBilateralImageFilter.h.
typedef BilateralImageFilter itk::BilateralImageFilter< TInputImage, TOutputImage >::Self |
Standard class typedefs.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Definition at line 80 of file itkBilateralImageFilter.h.
typedef KernelType::SizeType itk::BilateralImageFilter< TInputImage, TOutputImage >::SizeType |
Definition at line 120 of file itkBilateralImageFilter.h.
typedef KernelType::SizeValueType itk::BilateralImageFilter< TInputImage, TOutputImage >::SizeValueType |
Definition at line 121 of file itkBilateralImageFilter.h.
typedef ImageToImageFilter< TInputImage, TOutputImage > itk::BilateralImageFilter< TInputImage, TOutputImage >::Superclass |
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Definition at line 81 of file itkBilateralImageFilter.h.
itk::BilateralImageFilter< TInputImage, TOutputImage >::BilateralImageFilter | ( | ) | [inline, protected] |
End concept checking Constructor. Default value for DomainSigma is 4. Default value RangeSigma is 50.
Definition at line 184 of file itkBilateralImageFilter.h.
virtual itk::BilateralImageFilter< TInputImage, TOutputImage >::~BilateralImageFilter | ( | ) | [inline, protected, virtual] |
Definition at line 200 of file itkBilateralImageFilter.h.
itk::BilateralImageFilter< TInputImage, TOutputImage >::BilateralImageFilter | ( | const Self & | ) | [private] |
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.
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.
void itk::BilateralImageFilter< TInputImage, TOutputImage >::BeforeThreadedGenerateData | ( | ) | [protected, virtual] |
Do some setup before the ThreadedGenerateData
Reimplemented from itk::ImageSource< TOutputImage >.
virtual::itk::LightObject::Pointer itk::BilateralImageFilter< TInputImage, 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::Object.
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.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
virtual bool itk::BilateralImageFilter< TInputImage, TOutputImage >::GetAutomaticKernelSize | ( | ) | const [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.
virtual const ArrayType 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.
virtual unsigned int itk::BilateralImageFilter< TInputImage, TOutputImage >::GetFilterDimensionality | ( | ) | 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.
virtual const char* itk::BilateralImageFilter< TInputImage, TOutputImage >::GetNameOfClass | ( | ) | const [virtual] |
Run-time type information (and related methods).
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
virtual unsigned long itk::BilateralImageFilter< TInputImage, TOutputImage >::GetNumberOfRangeGaussianSamples | ( | ) | const [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.
virtual const SizeType& itk::BilateralImageFilter< TInputImage, TOutputImage >::GetRadius | ( | ) | [virtual] |
virtual double itk::BilateralImageFilter< TInputImage, TOutputImage >::GetRangeSigma | ( | ) | 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.
static Pointer itk::BilateralImageFilter< TInputImage, TOutputImage >::New | ( | ) | [static] |
Method for creation through the object factory.
Reimplemented from itk::Object.
void itk::BilateralImageFilter< TInputImage, 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::ImageToImageFilter< TInputImage, TOutputImage >.
void itk::BilateralImageFilter< TInputImage, 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::ImageToImageFilter< TInputImage, 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.
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.
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 144 of file itkBilateralImageFilter.h.
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.
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.
void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetRadius | ( | const SizeValueType | ) |
Set/Get the kernel radius, specified in pixels. This parameter is used only when AutomaticNeighborhoodSize is "off".
virtual void itk::BilateralImageFilter< TInputImage, TOutputImage >::SetRadius | ( | SizeType | _arg | ) | [virtual] |
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.
void itk::BilateralImageFilter< TInputImage, TOutputImage >::ThreadedGenerateData | ( | const OutputImageRegionType & | outputRegionForThread, |
ThreadIdType | threadId | ||
) | [protected, virtual] |
Standard pipeline method. This filter is implemented as a multi-threaded filter.
Reimplemented from itk::ImageSource< TOutputImage >.
itk::BilateralImageFilter< TInputImage, TOutputImage >::typedef | ( | Concept::HasNumericTraits< OutputPixelType > | ) |
Begin concept checking This class requires OutputHasNumericTraitsCheck in the form of ( Concept::HasNumericTraits< OutputPixelType > )
const unsigned int itk::BilateralImageFilter< TInputImage, TOutputImage >::ImageDimension = TOutputImage::ImageDimension [static] |
Extract some information from the image types. Dimensionality of the two images is assumed to be the same.
Definition at line 109 of file itkBilateralImageFilter.h.
bool itk::BilateralImageFilter< TInputImage, TOutputImage >::m_AutomaticKernelSize [private] |
Definition at line 243 of file itkBilateralImageFilter.h.
double itk::BilateralImageFilter< TInputImage, TOutputImage >::m_DomainMu [private] |
Multiplier used to define statistical thresholds. Gaussians are only evaluated to m_DomainMu*m_DomainSigma or m_RangeMu*m_RangeSigma.
Definition at line 234 of file itkBilateralImageFilter.h.
ArrayType itk::BilateralImageFilter< TInputImage, TOutputImage >::m_DomainSigma [private] |
The standard deviation of the gaussian blurring kernel in each dimensional direction. Units match image spacing units.
Definition at line 230 of file itkBilateralImageFilter.h.
double itk::BilateralImageFilter< TInputImage, TOutputImage >::m_DynamicRange [private] |
Definition at line 247 of file itkBilateralImageFilter.h.
double itk::BilateralImageFilter< TInputImage, TOutputImage >::m_DynamicRangeUsed [private] |
Definition at line 248 of file itkBilateralImageFilter.h.
unsigned int itk::BilateralImageFilter< TInputImage, TOutputImage >::m_FilterDimensionality [private] |
Number of dimensions to process. Default is all dimensions
Definition at line 238 of file itkBilateralImageFilter.h.
KernelType itk::BilateralImageFilter< TInputImage, TOutputImage >::m_GaussianKernel [private] |
Gaussian kernel used for smoothing in the spatial domain
Definition at line 241 of file itkBilateralImageFilter.h.
unsigned long itk::BilateralImageFilter< TInputImage, TOutputImage >::m_NumberOfRangeGaussianSamples [private] |
Variables for the lookup table of range gaussian values
Definition at line 246 of file itkBilateralImageFilter.h.
SizeType itk::BilateralImageFilter< TInputImage, TOutputImage >::m_Radius [private] |
Definition at line 242 of file itkBilateralImageFilter.h.
std::vector< double > itk::BilateralImageFilter< TInputImage, TOutputImage >::m_RangeGaussianTable [private] |
Definition at line 249 of file itkBilateralImageFilter.h.
double itk::BilateralImageFilter< TInputImage, TOutputImage >::m_RangeMu [private] |
Definition at line 235 of file itkBilateralImageFilter.h.
double itk::BilateralImageFilter< TInputImage, TOutputImage >::m_RangeSigma [private] |
The standard deviation of the gaussian blurring kernel in the image range. Units are intensity.
Definition at line 226 of file itkBilateralImageFilter.h.