#include <itkBinaryMorphologyImageFilter.h>
Inheritance diagram for itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >:
Public Types | |
typedef TInputImage | InputImageType |
typedef TOutputImage | OutputImageType |
typedef BinaryMorphologyImageFilter | Self |
typedef ImageToImageFilter< InputImageType, OutputImageType > | Superclass |
typedef SmartPointer< Self > | Pointer |
typedef SmartPointer< const Self > | ConstPointer |
typedef TKernel | KernelType |
typedef KernelType::ConstIterator | KernelIteratorType |
typedef InputImageType::PixelType | InputPixelType |
typedef OutputImageType::PixelType | OutputPixelType |
typedef NumericTraits< InputPixelType >::RealType | InputRealType |
typedef InputImageType::OffsetType | OffsetType |
typedef InputImageType::IndexType | IndexType |
typedef InputImageType::RegionType | InputImageRegionType |
typedef OutputImageType::RegionType | OutputImageRegionType |
typedef InputImageType::SizeType | InputSizeType |
enum | { ImageDimensionCheck = 0 } |
Public Member Functions | |
itkStaticConstMacro (KernelDimension, unsigned int, TKernel::NeighborhoodDimension) | |
virtual const char * | GetNameOfClass () const |
void | SetKernel (const KernelType &kernel) |
virtual const KernelType & | GetKernel () |
virtual void | SetForegroundValue (InputPixelType _arg) |
virtual InputPixelType | GetForegroundValue () const |
virtual void | SetBackgroundValue (OutputPixelType _arg) |
virtual OutputPixelType | GetBackgroundValue () const |
itkStaticConstMacro (InputImageDimension, unsigned int, TInputImage::ImageDimension) | |
itkStaticConstMacro (OutputImageDimension, unsigned int, TOutputImage::ImageDimension) | |
Static Public Member Functions | |
Pointer | New () |
Protected Types | |
typedef std::vector< BorderCell > | BorderCellContainer |
typedef std::vector< unsigned int > | NeighborIndexContainer |
typedef std::vector< NeighborIndexContainer > | NeighborIndexContainerContainer |
typedef std::vector< OffsetType > | ComponentVectorType |
typedef ComponentVectorType::const_iterator | ComponentVectorConstIterator |
Protected Member Functions | |
BinaryMorphologyImageFilter () | |
virtual | ~BinaryMorphologyImageFilter () |
void | PrintSelf (std::ostream &os, Indent indent) const |
void | AnalyzeKernel () |
void | GenerateInputRequestedRegion () throw (InvalidRequestedRegionError) |
NeighborIndexContainer & | GetDifferenceSet (unsigned int code) |
ComponentVectorConstIterator | KernelCCVectorBegin () |
ComponentVectorConstIterator | KernelCCVectorEnd () |
InputSizeType | GetRadius () const |
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 108 of file itkBinaryMorphologyImageFilter.h.
|
Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 225 of file itkBinaryMorphologyImageFilter.h. |
|
|
Definition at line 234 of file itkBinaryMorphologyImageFilter.h. |
|
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 132 of file itkBinaryMorphologyImageFilter.h. |
|
Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 151 of file itkBinaryMorphologyImageFilter.h. |
|
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 153 of file itkBinaryMorphologyImageFilter.h. |
|
Convenient typedefs for simplifying declarations. Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 125 of file itkBinaryMorphologyImageFilter.h. |
|
Image typedef support. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 147 of file itkBinaryMorphologyImageFilter.h. Referenced by itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetRadius(). |
|
Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 149 of file itkBinaryMorphologyImageFilter.h. |
|
|
Kernel (structuring element) iterator. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 144 of file itkBinaryMorphologyImageFilter.h. |
|
Kernel typedef. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 141 of file itkBinaryMorphologyImageFilter.h. Referenced by itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetRadius(). |
|
Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 228 of file itkBinaryMorphologyImageFilter.h. |
|
Definition at line 231 of file itkBinaryMorphologyImageFilter.h. Referenced by itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetRadius(). |
|
Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 150 of file itkBinaryMorphologyImageFilter.h. |
|
Superclass typedefs. Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 154 of file itkBinaryMorphologyImageFilter.h. |
|
Some convenient typedefs. Reimplemented from itk::ImageSource< TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 126 of file itkBinaryMorphologyImageFilter.h. |
|
Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 148 of file itkBinaryMorphologyImageFilter.h. Referenced by itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetRadius(). |
|
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 131 of file itkBinaryMorphologyImageFilter.h. |
|
Standard class typedefs. Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 129 of file itkBinaryMorphologyImageFilter.h. Referenced by itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetRadius(). |
|
Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. Definition at line 130 of file itkBinaryMorphologyImageFilter.h. |
|
Input and output images must be the same dimension. Definition at line 160 of file itkBinaryMorphologyImageFilter.h. |
|
|
|
Definition at line 199 of file itkBinaryMorphologyImageFilter.h. |
|
Analyze kernel and prepare data for GenerateData() function |
|
BinaryMorphologyImageFilter needs to request enough of an input image to account for the structuring element and connectivity element size. The input requested region is expanded by the maximum of the radius of the structuring element and the radius used to determine connectivity (typically one). If the request extends past the LargestPossibleRegion for the input, the request is cropped by the LargestPossibleRegion. Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. |
|
Get the value used as "background". Any pixel value which is not DilateValue is considered background. BackgroundValue is used for defining boundary conditions. Defaults to NumericTraits<PixelType>::NonpositiveMin(). |
|
Get the difference set for a particular offset Definition at line 242 of file itkBinaryMorphologyImageFilter.h. References itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::ComponentVectorConstIterator. |
|
Get the value in the image considered as "foreground". Defaults to maximum value of PixelType. |
|
Get the kernel (structuring element). |
|
Run-time type information (and related methods). Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. |
|
|
Extract the dimension of the kernel Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. |
|
Extract dimension from input and output image. Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. |
|
Extract dimension from input and output image. Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. |
|
Get an iterator to the start of the connected component vector Definition at line 248 of file itkBinaryMorphologyImageFilter.h. References itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::ComponentVectorConstIterator. |
|
Get an iterator to the end of the connected component vector Definition at line 254 of file itkBinaryMorphologyImageFilter.h. References itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputSizeType. |
|
Method for creation through the object factory. Reimplemented from itk::Object. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >. |
|
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 >. Reimplemented in itk::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >. |
|
Set the value used as "background". Any pixel value which is not DilateValue is considered background. BackgroundValue is used for defining boundary conditions. Defaults to NumericTraits<PixelType>::NonpositiveMin(). |
|
Set the value in the image to consider as "foreground". Defaults to maximum value of PixelType. Subclasses may alias this to DilateValue or ErodeValue. |
|
Set kernel (structuring element). |