ITK  4.0.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel > Class Template Reference

Base class for fast binary dilation and erosion. More...

#include <itkBinaryMorphologyImageFilter.h>

Inheritance diagram for itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >:
Collaboration diagram for itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >:

List of all members.

Public Types

typedef SmartPointer< const SelfConstPointer
typedef InputImageType::IndexType IndexType
typedef
InputImageType::IndexValueType 
IndexValueType
typedef InputImageType::RegionType InputImageRegionType
typedef TInputImage InputImageType
typedef InputImageType::PixelType InputPixelType
typedef NumericTraits
< InputPixelType >::RealType 
InputRealType
typedef InputImageType::SizeType InputSizeType
typedef
InputImageType::SizeValueType 
InputSizeValueType
typedef KernelType::ConstIterator KernelIteratorType
typedef TKernel KernelType
typedef InputImageType::OffsetType OffsetType
typedef OutputImageType::RegionType OutputImageRegionType
typedef TOutputImage OutputImageType
typedef OutputImageType::PixelType OutputPixelType
typedef SmartPointer< SelfPointer
typedef BinaryMorphologyImageFilter Self
typedef KernelImageFilter
< InputImageType,
OutputImageType, TKernel > 
Superclass

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother (void) const
virtual OutputPixelType GetBackgroundValue () const
virtual InputPixelType GetForegroundValue () const
virtual const char * GetNameOfClass () const
virtual void SetBackgroundValue (OutputPixelType _arg)
virtual void SetForegroundValue (InputPixelType _arg)
void SetKernel (const KernelType &kernel)
 typedef (Concept::SameDimension< itkGetStaticConstMacro(InputImageDimension), itkGetStaticConstMacro(OutputImageDimension) >) ImageDimensionCheck
virtual void SetBoundaryToForeground (bool _arg)
virtual const bool & GetBoundaryToForeground ()
virtual void BoundaryToForegroundOn ()
virtual void BoundaryToForegroundOff ()

Static Public Member Functions

static Pointer New ()

Static Public Attributes

static const unsigned int KernelDimension = TKernel::NeighborhoodDimension
static const unsigned int InputImageDimension = TInputImage::ImageDimension
static const unsigned int OutputImageDimension = TOutputImage::ImageDimension

Protected Types

typedef
ComponentVectorType::const_iterator 
ComponentVectorConstIterator
typedef std::vector< OffsetTypeComponentVectorType
typedef std::vector< OffsetTypeNeighborIndexContainer
typedef std::vector
< NeighborIndexContainer
NeighborIndexContainerContainer

Protected Member Functions

void AnalyzeKernel ()
 BinaryMorphologyImageFilter ()
NeighborIndexContainerGetDifferenceSet (unsigned int code)
ComponentVectorConstIterator KernelCCVectorBegin ()
ComponentVectorConstIterator KernelCCVectorEnd ()
void PrintSelf (std::ostream &os, Indent indent) const
virtual ~BinaryMorphologyImageFilter ()

Protected Attributes

bool m_BoundaryToForeground

Private Member Functions

 BinaryMorphologyImageFilter (const Self &)
void operator= (const Self &)

Private Attributes

OutputPixelType m_BackgroundValue
InputPixelType m_ForegroundValue
std::vector< OffsetTypem_KernelCCVector
NeighborIndexContainerContainer m_KernelDifferenceSets

Detailed Description

template<class TInputImage, class TOutputImage, class TKernel>
class itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >

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.

See also:
ImageToImageFilter BinaryErodeImageFilter BinaryDilateImageFilter

Definition at line 103 of file itkBinaryMorphologyImageFilter.h.


Member Typedef Documentation

template<class TInputImage , class TOutputImage , class TKernel >
typedef ComponentVectorType::const_iterator itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::ComponentVectorConstIterator [protected]

Iterator for ComponentVectorType

Definition at line 218 of file itkBinaryMorphologyImageFilter.h.

template<class TInputImage , class TOutputImage , class TKernel >
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.

template<class TInputImage , class TOutputImage , class TKernel >
typedef SmartPointer< const Self > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::ConstPointer
template<class TInputImage , class TOutputImage , class TKernel >
typedef InputImageType::IndexType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::IndexType
template<class TInputImage , class TOutputImage , class TKernel >
typedef InputImageType::IndexValueType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::IndexValueType

Definition at line 147 of file itkBinaryMorphologyImageFilter.h.

template<class TInputImage , class TOutputImage , class TKernel >
typedef InputImageType::RegionType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputImageRegionType
template<class TInputImage , class TOutputImage , class TKernel >
typedef TInputImage itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputImageType
template<class TInputImage , class TOutputImage , class TKernel >
typedef InputImageType::PixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputPixelType
template<class TInputImage , class TOutputImage , class TKernel >
typedef NumericTraits< InputPixelType >::RealType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputRealType
template<class TInputImage , class TOutputImage , class TKernel >
typedef InputImageType::SizeType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputSizeType
template<class TInputImage , class TOutputImage , class TKernel >
typedef InputImageType::SizeValueType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputSizeValueType

Definition at line 152 of file itkBinaryMorphologyImageFilter.h.

template<class TInputImage , class TOutputImage , class TKernel >
typedef KernelType::ConstIterator itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelIteratorType
template<class TInputImage , class TOutputImage , class TKernel >
typedef TKernel itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelType
template<class TInputImage , class TOutputImage , class TKernel >
typedef std::vector< OffsetType > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::NeighborIndexContainer [protected]
template<class TInputImage , class TOutputImage , class TKernel >
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.

template<class TInputImage , class TOutputImage , class TKernel >
typedef InputImageType::OffsetType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OffsetType
template<class TInputImage , class TOutputImage , class TKernel >
typedef OutputImageType::RegionType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputImageRegionType
template<class TInputImage , class TOutputImage , class TKernel >
typedef TOutputImage itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputImageType
template<class TInputImage , class TOutputImage , class TKernel >
typedef OutputImageType::PixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputPixelType
template<class TInputImage , class TOutputImage , class TKernel >
typedef SmartPointer< Self > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::Pointer
template<class TInputImage , class TOutputImage , class TKernel >
typedef BinaryMorphologyImageFilter itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::Self
template<class TInputImage , class TOutputImage , class TKernel >
typedef KernelImageFilter< InputImageType, OutputImageType, TKernel > itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::Superclass

Constructor & Destructor Documentation

template<class TInputImage , class TOutputImage , class TKernel >
itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::BinaryMorphologyImageFilter ( ) [protected]
template<class TInputImage , class TOutputImage , class TKernel >
virtual itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::~BinaryMorphologyImageFilter ( ) [inline, protected, virtual]

Definition at line 200 of file itkBinaryMorphologyImageFilter.h.

template<class TInputImage , class TOutputImage , class TKernel >
itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::BinaryMorphologyImageFilter ( const Self ) [private]

Member Function Documentation

template<class TInputImage , class TOutputImage , class TKernel >
void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::AnalyzeKernel ( ) [protected]

Analyze kernel and prepare data for GenerateData() function

template<class TInputImage , class TOutputImage , class TKernel >
virtual void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::BoundaryToForegroundOff ( ) [virtual]

Get/Set the borders as foreground (true) or background (false).

template<class TInputImage , class TOutputImage , class TKernel >
virtual void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::BoundaryToForegroundOn ( ) [virtual]

Get/Set the borders as foreground (true) or background (false).

template<class TInputImage , class TOutputImage , class TKernel >
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::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >, and itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.

template<class TInputImage , class TOutputImage , class 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.

template<class TInputImage , class TOutputImage , class TKernel >
virtual const bool& itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetBoundaryToForeground ( ) [virtual]

Get/Set the borders as foreground (true) or background (false).

template<class TInputImage , class TOutputImage , class TKernel >
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.

template<class TInputImage , class TOutputImage , class TKernel >
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.

template<class TInputImage , class TOutputImage , class TKernel >
virtual const char* itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::GetNameOfClass ( ) const [virtual]
template<class TInputImage , class TOutputImage , class 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.

template<class TInputImage , class TOutputImage , class TKernel >
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.

template<class TInputImage , class TOutputImage , class TKernel >
static Pointer itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::New ( ) [static]
template<class TInputImage , class TOutputImage , class TKernel >
void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::operator= ( const Self ) [private]
template<class TInputImage , class TOutputImage , class 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::BinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >, and itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >.

template<class TInputImage , class TOutputImage , class 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.

template<class TInputImage , class TOutputImage , class TKernel >
virtual void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::SetBoundaryToForeground ( bool  _arg) [virtual]

Get/Set the borders as foreground (true) or background (false).

template<class TInputImage , class TOutputImage , class TKernel >
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.

template<class TInputImage , class TOutputImage , class TKernel >
void itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::SetKernel ( const KernelType kernel) [virtual]

Set kernel (structuring element).

Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.

template<class TInputImage , class TOutputImage , class 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) > )


Member Data Documentation

template<class TInputImage , class TOutputImage , class TKernel >
const unsigned int itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputImageDimension = TInputImage::ImageDimension [static]
template<class TInputImage , class TOutputImage , class TKernel >
const unsigned int itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelDimension = TKernel::NeighborhoodDimension [static]
template<class TInputImage , class TOutputImage , class TKernel >
OutputPixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::m_BackgroundValue [private]

Pixel value for background

Definition at line 244 of file itkBinaryMorphologyImageFilter.h.

template<class TInputImage , class TOutputImage , class TKernel >
bool itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::m_BoundaryToForeground [protected]

Definition at line 235 of file itkBinaryMorphologyImageFilter.h.

template<class TInputImage , class TOutputImage , class TKernel >
InputPixelType itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::m_ForegroundValue [private]

Pixel value to dilate

Definition at line 241 of file itkBinaryMorphologyImageFilter.h.

template<class TInputImage , class TOutputImage , class TKernel >
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.

template<class TInputImage , class TOutputImage , class TKernel >
NeighborIndexContainerContainer itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::m_KernelDifferenceSets [private]

Difference sets definition

Definition at line 247 of file itkBinaryMorphologyImageFilter.h.

template<class TInputImage , class TOutputImage , class TKernel >
const unsigned int itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputImageDimension = TOutputImage::ImageDimension [static]

The documentation for this class was generated from the following file: