This algorithm successively runs an Erosion3d and a Dilation3d with the same kernel.
The kernelRadius parameter tunes the number of iterations of each operation, which sets the
kernel size.
This algorithm uses a basic structuring element with 6, 18 or 26 neighbors, according to the
neighborhood parameter.
Figure 1. Structuring elements: 6, 18 and 26 neighbors
With a classic implementation, morphological opening systematically considers areas out of the image as a
replication of the image borders at each step of the algorithm. Therefore, when applying an opening, some thin
object parts cut by the image borders may be removed at the erosion step and not be restored after the
dilation, while one would expect to keep them. The borderPolicy parameter manages this
case. The default mode, LIMITED, corresponds to the classic behavior. The EXTENDED mode properly manages
image borders by extending them by a size equal to the structuring element's. Therefore, this mode can be
slower and more memory consuming, especially when the structuring element size is high.
This option is illustrated in the Opening2d documentation (Figure 2).
// Command constructor.Opening3d();/// Gets the inputImage parameter./// The input image. The image type can be integer or float.
std::shared_ptr< iolink::ImageView> inputImage()const;/// Sets the inputImage parameter./// The input image. The image type can be integer or float.void setInputImage( std::shared_ptr< iolink::ImageView> inputImage );/// Gets the kernelRadius parameter./// The number of iterations (the half size of the structuring element, in voxels). A cube structuring element always has an odd side length (3x3x3, 5x5x5, etc.) which is defined by twice the kernel radius + 1.uint32_t kernelRadius()const;/// Sets the kernelRadius parameter./// The number of iterations (the half size of the structuring element, in voxels). A cube structuring element always has an odd side length (3x3x3, 5x5x5, etc.) which is defined by twice the kernel radius + 1.void setKernelRadius(constuint32_t& kernelRadius );/// Gets the neighborhood parameter./// The 3D neighborhood configuration.Opening3d::Neighborhood neighborhood()const;/// Sets the neighborhood parameter./// The 3D neighborhood configuration.void setNeighborhood(constOpening3d::Neighborhood& neighborhood );/// Gets the borderPolicy parameter./// The border policy to apply.Opening3d::BorderPolicy borderPolicy()const;/// Sets the borderPolicy parameter./// The border policy to apply.void setBorderPolicy(constOpening3d::BorderPolicy& borderPolicy );/// Gets the outputImage parameter./// The output image. Its dimensions and type are forced to the same values as the input image.
std::shared_ptr< iolink::ImageView> outputImage()const;/// Sets the outputImage parameter./// The output image. Its dimensions and type are forced to the same values as the input image.void setOutputImage( std::shared_ptr< iolink::ImageView> outputImage );// Method to launch the command.void execute();
# Property of the inputImage parameter.Opening3d.input_image
# Property of the kernelRadius parameter.Opening3d.kernel_radius
# Property of the neighborhood parameter.Opening3d.neighborhood
# Property of the borderPolicy parameter.Opening3d.border_policy
# Property of the outputImage parameter.Opening3d.output_image
// Method to launch the command.
execute()
// Command constructor.Opening3d()// Property of the inputImage parameter.Opening3d.inputImage
// Property of the kernelRadius parameter.Opening3d.kernelRadius
// Property of the neighborhood parameter.Opening3d.neighborhood
// Property of the borderPolicy parameter.Opening3d.borderPolicy
// Property of the outputImage parameter.Opening3d.outputImage
// Method to launch the command.Execute()
Parameters
Parameter Name
Description
Type
Supported Values
Default Value
inputImage
The input image. The image type can be integer or float.
Image
Binary, Label, Grayscale or Multispectral
nullptr
borderPolicy
The border policy to apply.
LIMITED
The limited mode is faster to compute, but can produce unexpected results for particles close to the image border.
EXTENDED
The Extended mode is slower to compute, but produces the expected results for particles close to the image border.
Enumeration
LIMITED
kernelRadius
The number of iterations (the half size of the structuring element, in voxels). A cube structuring element always has an odd side length (3x3x3, 5x5x5, etc.) which is defined by twice the kernel radius + 1.
UInt32
>=1
3
neighborhood
The 3D neighborhood configuration.
CONNECTIVITY_6
The structuring element is composed of voxels with a common face with the voxel of interest.
CONNECTIVITY_18
The structuring element is composed of voxels with at least one common edge.
CONNECTIVITY_26
The structuring element is a full cube.
Enumeration
CONNECTIVITY_26
outputImage
The output image. Its dimensions and type are forced to the same values as the input image.
Image
nullptr
Parameter Name
Description
Type
Supported Values
Default Value
input_image
The input image. The image type can be integer or float.
image
Binary, Label, Grayscale or Multispectral
None
border_policy
The border policy to apply.
LIMITED
The limited mode is faster to compute, but can produce unexpected results for particles close to the image border.
EXTENDED
The Extended mode is slower to compute, but produces the expected results for particles close to the image border.
enumeration
LIMITED
kernel_radius
The number of iterations (the half size of the structuring element, in voxels). A cube structuring element always has an odd side length (3x3x3, 5x5x5, etc.) which is defined by twice the kernel radius + 1.
uint32
>=1
3
neighborhood
The 3D neighborhood configuration.
CONNECTIVITY_6
The structuring element is composed of voxels with a common face with the voxel of interest.
CONNECTIVITY_18
The structuring element is composed of voxels with at least one common edge.
CONNECTIVITY_26
The structuring element is a full cube.
enumeration
CONNECTIVITY_26
output_image
The output image. Its dimensions and type are forced to the same values as the input image.
image
None
Parameter Name
Description
Type
Supported Values
Default Value
inputImage
The input image. The image type can be integer or float.
Image
Binary, Label, Grayscale or Multispectral
null
borderPolicy
The border policy to apply.
LIMITED
The limited mode is faster to compute, but can produce unexpected results for particles close to the image border.
EXTENDED
The Extended mode is slower to compute, but produces the expected results for particles close to the image border.
Enumeration
LIMITED
kernelRadius
The number of iterations (the half size of the structuring element, in voxels). A cube structuring element always has an odd side length (3x3x3, 5x5x5, etc.) which is defined by twice the kernel radius + 1.
UInt32
>=1
3
neighborhood
The 3D neighborhood configuration.
CONNECTIVITY_6
The structuring element is composed of voxels with a common face with the voxel of interest.
CONNECTIVITY_18
The structuring element is composed of voxels with at least one common edge.
CONNECTIVITY_26
The structuring element is a full cube.
Enumeration
CONNECTIVITY_26
outputImage
The output image. Its dimensions and type are forced to the same values as the input image.