#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 [132] and [81].
Grayscale 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.
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 implementation based on Jerome's implementation. The common portions of these two implementations were then placed in this superclass.
Definition at line 96 of file itkBinaryMorphologyImageFilter.h.
Public Types | |
using | ConstPointer = SmartPointer<const Self> |
using | IndexType = typename InputImageType::IndexType |
using | IndexValueType = typename InputImageType::IndexValueType |
using | InputImageRegionType = typename InputImageType::RegionType |
using | InputImageType = TInputImage |
using | InputPixelType = typename InputImageType::PixelType |
using | InputRealType = typename NumericTraits<InputPixelType>::RealType |
using | InputSizeType = typename InputImageType::SizeType |
using | InputSizeValueType = typename InputImageType::SizeValueType |
using | KernelIteratorType = typename KernelType::ConstIterator |
using | KernelType = TKernel |
using | OffsetType = typename InputImageType::OffsetType |
using | OutputImageRegionType = typename OutputImageType::RegionType |
using | OutputImageType = TOutputImage |
using | OutputPixelType = typename OutputImageType::PixelType |
using | Pointer = SmartPointer<Self> |
using | Self = BinaryMorphologyImageFilter |
using | Superclass = KernelImageFilter<InputImageType, OutputImageType, TKernel> |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | FlatKernelType = FlatStructuringElement<(Self::ImageDimension)> |
using | IndexType = typename TInputImage::IndexType |
using | InputImageType = TInputImage |
using | InputPixelType = typename TInputImage::PixelType |
using | KernelType = TKernel |
using | OffsetType = typename TInputImage::OffsetType |
using | OutputImageType = TOutputImage |
using | OutputPixelType = typename TOutputImage::PixelType |
using | Pointer = SmartPointer<Self> |
using | RadiusType = typename TInputImage::SizeType |
using | RegionType = typename TInputImage::RegionType |
using | Self = KernelImageFilter |
using | SizeType = typename TInputImage::SizeType |
using | Superclass = BoxImageFilter<TInputImage, TOutputImage> |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | IndexType = typename TInputImage::IndexType |
using | InputImageType = TInputImage |
using | InputPixelType = typename TInputImage::PixelType |
using | OffsetType = typename TInputImage::OffsetType |
using | OutputImageType = TOutputImage |
using | OutputPixelType = typename TOutputImage::PixelType |
using | Pointer = SmartPointer<Self> |
using | RadiusType = typename TInputImage::SizeType |
using | RadiusValueType = typename TInputImage::SizeValueType |
using | RegionType = typename TInputImage::RegionType |
using | Self = BoxImageFilter |
using | SizeType = typename TInputImage::SizeType |
using | Superclass = ImageToImageFilter<TInputImage, TOutputImage> |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | InputImageConstPointer = typename InputImageType::ConstPointer |
using | InputImagePixelType = typename InputImageType::PixelType |
using | InputImagePointer = typename InputImageType::Pointer |
using | InputImageRegionType = typename InputImageType::RegionType |
using | InputImageType = TInputImage |
using | OutputImagePixelType |
using | OutputImageRegionType |
using | Pointer = SmartPointer<Self> |
using | Self = ImageToImageFilter |
using | Superclass = ImageSource<TOutputImage> |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | DataObjectIdentifierType = Superclass::DataObjectIdentifierType |
using | DataObjectPointer = DataObject::Pointer |
using | DataObjectPointerArraySizeType = Superclass::DataObjectPointerArraySizeType |
using | OutputImagePixelType = typename OutputImageType::PixelType |
using | OutputImagePointer = typename OutputImageType::Pointer |
using | OutputImageRegionType = typename OutputImageType::RegionType |
using | OutputImageType = TOutputImage |
using | Pointer = SmartPointer<Self> |
using | Self = ImageSource |
using | Superclass = ProcessObject |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | DataObjectIdentifierType = DataObject::DataObjectIdentifierType |
using | DataObjectPointer = DataObject::Pointer |
using | DataObjectPointerArray = std::vector<DataObjectPointer> |
using | DataObjectPointerArraySizeType = DataObjectPointerArray::size_type |
using | MultiThreaderType = MultiThreaderBase |
using | NameArray = std::vector<DataObjectIdentifierType> |
using | Pointer = SmartPointer<Self> |
using | Self = ProcessObject |
using | Superclass = Object |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | Pointer = SmartPointer<Self> |
using | Self = Object |
using | Superclass = LightObject |
![]() | |
using | ConstPointer = SmartPointer<const Self> |
using | Pointer = SmartPointer<Self> |
using | Self = LightObject |
Static Public Member Functions | |
static Pointer | New () |
![]() | |
static Pointer | New () |
![]() | |
static Pointer | New () |
![]() | |
static double | GetGlobalDefaultCoordinateTolerance () |
static double | GetGlobalDefaultDirectionTolerance () |
static void | SetGlobalDefaultCoordinateTolerance (double) |
static void | SetGlobalDefaultDirectionTolerance (double) |
![]() | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool val) |
![]() | |
static void | BreakOnError () |
static Pointer | New () |
Static Public Attributes | |
static constexpr unsigned int | InputImageDimension = TInputImage::ImageDimension |
static constexpr unsigned int | KernelDimension = TKernel::NeighborhoodDimension |
static constexpr unsigned int | OutputImageDimension = TOutputImage::ImageDimension |
![]() | |
static constexpr unsigned int | ImageDimension = TInputImage::ImageDimension |
![]() | |
static constexpr unsigned int | ImageDimension = TInputImage::ImageDimension |
![]() | |
static constexpr unsigned int | InputImageDimension = TInputImage::ImageDimension |
static constexpr unsigned int | OutputImageDimension = TOutputImage::ImageDimension |
![]() | |
static constexpr unsigned int | OutputImageDimension = TOutputImage::ImageDimension |
Protected Types | |
using | ComponentVectorConstIterator = typename ComponentVectorType::const_iterator |
using | ComponentVectorType = std::vector<OffsetType> |
using | NeighborIndexContainer = std::vector<OffsetType> |
using | NeighborIndexContainerContainer = std::vector<NeighborIndexContainer> |
![]() | |
using | InputToOutputRegionCopierType |
using | OutputToInputRegionCopierType |
Protected Attributes | |
bool | m_BoundaryToForeground {} |
![]() | |
KernelType | m_Kernel {} |
![]() | |
bool | m_DynamicMultiThreading { true } |
![]() | |
TimeStamp | m_OutputInformationMTime {} |
bool | m_Updating {} |
![]() | |
std::atomic< int > | m_ReferenceCount {} |
Private Attributes | |
OutputPixelType | m_BackgroundValue {} |
InputPixelType | m_ForegroundValue {} |
std::vector< OffsetType > | m_KernelCCVector {} |
NeighborIndexContainerContainer | m_KernelDifferenceSets {} |
Additional Inherited Members | |
![]() | |
static const ImageRegionSplitterBase * | GetGlobalDefaultSplitter () |
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION | ThreaderCallback (void *arg) |
![]() | |
template<typename TSourceObject> | |
static void | MakeRequiredOutputs (TSourceObject &sourceObject, const DataObjectPointerArraySizeType numberOfRequiredOutputs) |
static constexpr float | progressFixedToFloat (uint32_t fixed) |
static uint32_t | progressFloatToFixed (float f) |
|
protected |
Iterator for ComponentVectorType
Definition at line 200 of file itkBinaryMorphologyImageFilter.h.
|
protected |
Type definition of the container for indices
Definition at line 197 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::ConstPointer = SmartPointer<const Self> |
Definition at line 117 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::IndexType = typename InputImageType::IndexType |
Definition at line 136 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::IndexValueType = typename InputImageType::IndexValueType |
Definition at line 137 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputImageRegionType = typename InputImageType::RegionType |
Definition at line 139 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputImageType = TInputImage |
Convenient type alias for simplifying declarations.
Definition at line 110 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputPixelType = typename InputImageType::PixelType |
Image type alias support
Definition at line 132 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputRealType = typename NumericTraits<InputPixelType>::RealType |
Definition at line 134 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputSizeType = typename InputImageType::SizeType |
Definition at line 141 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::InputSizeValueType = typename InputImageType::SizeValueType |
Definition at line 142 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelIteratorType = typename KernelType::ConstIterator |
Kernel (structuring element) iterator.
Definition at line 129 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::KernelType = TKernel |
Kernel type alias.
Definition at line 126 of file itkBinaryMorphologyImageFilter.h.
|
protected |
Type definition of container of neighbourhood index
Definition at line 191 of file itkBinaryMorphologyImageFilter.h.
|
protected |
Type definition of container of container of neighbourhood index
Definition at line 194 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OffsetType = typename InputImageType::OffsetType |
Definition at line 135 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputImageRegionType = typename OutputImageType::RegionType |
Definition at line 140 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputImageType = TOutputImage |
Definition at line 111 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::OutputPixelType = typename OutputImageType::PixelType |
Definition at line 133 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::Pointer = SmartPointer<Self> |
Definition at line 116 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::Self = BinaryMorphologyImageFilter |
Standard class type aliases.
Definition at line 114 of file itkBinaryMorphologyImageFilter.h.
using itk::BinaryMorphologyImageFilter< TInputImage, TOutputImage, TKernel >::Superclass = KernelImageFilter<InputImageType, OutputImageType, TKernel> |
Definition at line 115 of file itkBinaryMorphologyImageFilter.h.
|
protected |
|
overrideprotecteddefault |
|
protected |
Analyze kernel and prepare data for GenerateData() function
|
virtual |
Get/Set the borders as foreground (true) or background (false).
|
virtual |
Get/Set the borders as foreground (true) or background (false).
|
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::LightObject.
Reimplemented in itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
|
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 |
Get/Set the borders as foreground (true) or background (false).
|
inlineprotected |
Get the difference set for a particular offset
Definition at line 205 of file itkBinaryMorphologyImageFilter.h.
|
virtual |
Get the value in the image considered as "foreground". Defaults to maximum value of PixelType.
Referenced by itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >::GetErodeValue().
|
overridevirtual |
Reimplemented from itk::LightObject.
Reimplemented in itk::FastIncrementalBinaryDilateImageFilter< TInputImage, TOutputImage, TKernel >.
|
inlineprotected |
Get an iterator to the start of the connected component vector
Definition at line 213 of file itkBinaryMorphologyImageFilter.h.
|
inlineprotected |
Get an iterator to the end of the connected component vector
Definition at line 221 of file itkBinaryMorphologyImageFilter.h.
|
static |
Method for creation through the object factory.
|
overrideprotectedvirtual |
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::LightObject.
|
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 |
Get/Set the borders as foreground (true) or background (false).
|
virtual |
Input and output images must be the same dimension. Set the value in the image to consider as "foreground". Defaults to maximum value of PixelType. Subclasses may alias this to DilateValue or ErodeValue.
Referenced by itk::BinaryErodeImageFilter< TInputImage, TOutputImage, TKernel >::SetErodeValue().
|
overridevirtual |
Set kernel (structuring element).
Reimplemented from itk::KernelImageFilter< TInputImage, TOutputImage, TKernel >.
|
staticconstexpr |
Extract dimension from input and output image.
Definition at line 103 of file itkBinaryMorphologyImageFilter.h.
|
staticconstexpr |
Extract the dimension of the kernel
Definition at line 107 of file itkBinaryMorphologyImageFilter.h.
|
private |
Pixel value for background
Definition at line 233 of file itkBinaryMorphologyImageFilter.h.
|
protected |
Definition at line 226 of file itkBinaryMorphologyImageFilter.h.
|
private |
Pixel value to dilate
Definition at line 230 of file itkBinaryMorphologyImageFilter.h.
|
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 241 of file itkBinaryMorphologyImageFilter.h.
|
private |
Difference sets definition
Definition at line 236 of file itkBinaryMorphologyImageFilter.h.
|
staticconstexpr |
Definition at line 104 of file itkBinaryMorphologyImageFilter.h.