ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
#include <itkBinaryMorphologyImageFilter.h>
Base class for fast binary dilation and erosion.
BinaryMorphologyImageFilter is a base class for fast binary morphological operations. The implementation of this class and its subclasses are based on the papers:
L.Vincent "Morphological transformations of binary images with arbitrary structuring elements", and
N.Nikopoulos et al. "An efficient algorithm for 3d binary morphological transformations with 3d structuring elements for arbitrary size and shape". IEEE Transactions on Image Processing. Vol. 9. No. 3. 2000. pp. 283-286.
Gray scale images can be processed as binary images by selecting a "ForegroundValued" (which subclasses may alias as "DilateValue" or "ErodeValue"). Pixel not matching the foreground value are considered "background". This is useful in processing segmented images where all pixels in segment #1 have value 1 and pixels in segment #2 have value 2, etc. A particular "segment number" can be processed. ForegroundValue defaults to the maximum possible value of the PixelType.
The structuring element is assumed to be composed of binary values (zero or one). Only elements of the structuring element having values > 0 are candidates for affecting the center pixel. A reasonable choice of structuring element is itk::BinaryBallStructuringElement.
Description of the algorithm: ---------------------------------------------- Let's consider the set of the ON elements of the input image as X.
Let's consider the structuring element as B = {B0, B1, ..., Bn}, where Bi denotes a connected component of B.
Let's consider bi, i in [0,n], an arbitrary point of Bi.
We use hence the next property in order to compute minkoswki addition ( which will be written (+) ):
X (+) B = ( Xb0 UNION Xb1 UNION ... Xbn ) UNION ( BORDER(X) (+) B ),
where Xbi is the set X translated with respect to vector bi :
Xbi ={ x + bi, x belongs to X }
where BORDER(X) is the extracted border of X ( 8 connectivity in 2D, 26 in 3D )
Our implementation for dilation is defined as:
X (+) SYM(B) = DILATION(X)_B
Where DILATION(X)_B is the dilation of set with structuring element B. Where SYM(B) is the symmetric of the structuring element relatively to its center.
This code was contributed by Jerome Schmid from the University of Strasbourg who provided a fast dilation implementation. Gaetan Lehmann from INRA de Jouy-en-Josas then provided a fast erosion implementaton based on Jerome's implementation. The common portions of these two implementations were then placed in this superclass.
Definition at line 103 of file itkBinaryMorphologyImageFilter.h.
typedef ComponentVectorType::const_iterator itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::ComponentVectorConstIterator [protected] |
Iterator for ComponentVectorType
Definition at line 218 of file itkBinaryMorphologyImageFilter.h.
typedef std::vector< OffsetType > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::ComponentVectorType [protected] |
Type definition of the container for indices
Definition at line 214 of file itkBinaryMorphologyImageFilter.h.
typedef SmartPointer< const Self > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::ConstPointer |
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 127 of file itkBinaryMorphologyImageFilter.h.
typedef InputImageType::IndexType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::IndexType |
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 146 of file itkBinaryMorphologyImageFilter.h.
typedef InputImageType::IndexValueType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::IndexValueType |
Definition at line 147 of file itkBinaryMorphologyImageFilter.h.
typedef InputImageType::RegionType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputImageRegionType |
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 149 of file itkBinaryMorphologyImageFilter.h.
typedef TInputImage itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputImageType |
Convenient typedefs for simplifying declarations.
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 120 of file itkBinaryMorphologyImageFilter.h.
typedef InputImageType::PixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputPixelType |
Image typedef support.
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 142 of file itkBinaryMorphologyImageFilter.h.
typedef NumericTraits< InputPixelType >::RealType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputRealType |
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 144 of file itkBinaryMorphologyImageFilter.h.
typedef InputImageType::SizeType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputSizeType |
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 151 of file itkBinaryMorphologyImageFilter.h.
typedef InputImageType::SizeValueType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputSizeValueType |
Definition at line 152 of file itkBinaryMorphologyImageFilter.h.
typedef KernelType::ConstIterator itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelIteratorType |
Kernel (structuring element) iterator.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 139 of file itkBinaryMorphologyImageFilter.h.
typedef TKernel itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelType |
Kernel typedef.
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 133 of file itkBinaryMorphologyImageFilter.h.
typedef std::vector< OffsetType > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::NeighborIndexContainer [protected] |
Type definition of container of neighbourhood index
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 208 of file itkBinaryMorphologyImageFilter.h.
typedef std::vector< NeighborIndexContainer > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::NeighborIndexContainerContainer [protected] |
Type definition of container of container of neighbourhood index
Definition at line 211 of file itkBinaryMorphologyImageFilter.h.
typedef InputImageType::OffsetType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OffsetType |
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 145 of file itkBinaryMorphologyImageFilter.h.
typedef OutputImageType::RegionType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputImageRegionType |
Superclass typedefs.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 150 of file itkBinaryMorphologyImageFilter.h.
typedef TOutputImage itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputImageType |
Some convenient typedefs.
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 121 of file itkBinaryMorphologyImageFilter.h.
typedef OutputImageType::PixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputPixelType |
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 143 of file itkBinaryMorphologyImageFilter.h.
typedef SmartPointer< Self > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::Pointer |
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 126 of file itkBinaryMorphologyImageFilter.h.
typedef BinaryMorphologyImageFilter itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::Self |
Standard class typedefs.
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 124 of file itkBinaryMorphologyImageFilter.h.
typedef KernelImageFilter< InputImageType, OutputImageType, TKernel > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::Superclass |
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 125 of file itkBinaryMorphologyImageFilter.h.
itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::BinaryMorphologyImageFilter | ( | ) | [protected] |
virtual itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::~BinaryMorphologyImageFilter | ( | ) | [inline, protected, virtual] |
Definition at line 200 of file itkBinaryMorphologyImageFilter.h.
itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::BinaryMorphologyImageFilter | ( | const Self & | ) | [private] |
void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::AnalyzeKernel | ( | ) | [protected] |
Analyze kernel and prepare data for GenerateData() function
virtual void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::BoundaryToForegroundOff | ( | ) | [virtual] |
Get/Set the borders as foreground (true) or background (false).
virtual void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::BoundaryToForegroundOn | ( | ) | [virtual] |
Get/Set the borders as foreground (true) or background (false).
virtual::itk::LightObject::Pointer itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::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::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
virtual OutputPixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetBackgroundValue | ( | ) | const [virtual] |
Get the value used as "background". Any pixel value which is not DilateValue is considered background. BackgroundValue is used to fill the removed pixels.
virtual const bool& itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetBoundaryToForeground | ( | ) | [virtual] |
Get/Set the borders as foreground (true) or background (false).
NeighborIndexContainer& itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetDifferenceSet | ( | unsigned int | code | ) | [inline, protected] |
Get the difference set for a particular offset
Definition at line 222 of file itkBinaryMorphologyImageFilter.h.
virtual InputPixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetForegroundValue | ( | ) | const [virtual] |
Get the value in the image considered as "foreground". Defaults to maximum value of PixelType.
virtual const char* itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetNameOfClass | ( | ) | const [virtual] |
Run-time type information (and related methods).
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
ComponentVectorConstIterator itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelCCVectorBegin | ( | ) | [inline, protected] |
Get an iterator to the start of the connected component vector
Definition at line 227 of file itkBinaryMorphologyImageFilter.h.
ComponentVectorConstIterator itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelCCVectorEnd | ( | ) | [inline, protected] |
Get an iterator to the end of the connected component vector
Definition at line 232 of file itkBinaryMorphologyImageFilter.h.
static Pointer itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::New | ( | ) | [static] |
Method for creation through the object factory.
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::operator= | ( | const Self & | ) | [private] |
kernel or structuring element to use.
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::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::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
virtual void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::SetBackgroundValue | ( | OutputPixelType | _arg | ) | [virtual] |
Set the value used as "background". Any pixel value which is not DilateValue is considered background. BackgroundValue is used to fill the removed pixels.
virtual void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::SetBoundaryToForeground | ( | bool | _arg | ) | [virtual] |
Get/Set the borders as foreground (true) or background (false).
virtual void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::SetForegroundValue | ( | InputPixelType | _arg | ) | [virtual] |
Set the value in the image to consider as "foreground". Defaults to maximum value of PixelType. Subclasses may alias this to DilateValue or ErodeValue.
void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::SetKernel | ( | const KernelType & | kernel | ) | [virtual] |
Set kernel (structuring element).
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::typedef | ( | Concept::SameDimension< itkGetStaticConstMacro(InputImageDimension), itkGetStaticConstMacro(OutputImageDimension) > | ) |
Input and output images must be the same dimension. This class requires ImageDimensionCheck in the form of ( Concept::SameDimension< itkGetStaticConstMacro(InputImageDimension), itkGetStaticConstMacro(OutputImageDimension) > )
const unsigned int itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputImageDimension = TInputImage::ImageDimension [static] |
Extract dimension from input and output image.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 110 of file itkBinaryMorphologyImageFilter.h.
const unsigned int itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelDimension = TKernel::NeighborhoodDimension [static] |
Extract the dimension of the kernel
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 117 of file itkBinaryMorphologyImageFilter.h.
OutputPixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::m_BackgroundValue [private] |
Pixel value for background
Definition at line 244 of file itkBinaryMorphologyImageFilter.h.
bool itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::m_BoundaryToForeground [protected] |
Definition at line 235 of file itkBinaryMorphologyImageFilter.h.
InputPixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::m_ForegroundValue [private] |
Pixel value to dilate
Definition at line 241 of file itkBinaryMorphologyImageFilter.h.
std::vector< OffsetType > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::m_KernelCCVector [private] |
For each Connected Component ( CC ) of structuring element we store the position of one element, arbitrary chosen, which belongs to the CC
Definition at line 252 of file itkBinaryMorphologyImageFilter.h.
NeighborIndexContainerContainer itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::m_KernelDifferenceSets [private] |
Difference sets definition
Definition at line 247 of file itkBinaryMorphologyImageFilter.h.
const unsigned int itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputImageDimension = TOutputImage::ImageDimension [static] |
Extract dimension from input and output image.
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.
Reimplemented in itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
Definition at line 112 of file itkBinaryMorphologyImageFilter.h.