ImageDev

SelectiveErosion3d

Erodes objects of a three-dimensional binary image conditionally to a local constraint.

Access to parameter description

For an introduction: This algorithm can be applied only on binary images. It is performed iteratively and at each step a foreground voxel is transformed into a background voxel if the number of background voxels in its 26-neighborhood is greater than or equal to a specified threshold.
Using a threshold of 1 amounts to applying a standard morphological erosion.

This operator is smoother than a standard erosion, and softens the appearance of the structuring element in the filtered image.

See also

Function Syntax

This function returns outputBinaryImage.
// Function prototype
std::shared_ptr< iolink::ImageView > selectiveErosion3d( std::shared_ptr< iolink::ImageView > inputBinaryImage, uint32_t numberOfIterations, uint32_t threshold, std::shared_ptr< iolink::ImageView > outputBinaryImage = NULL );

Class Syntax

Parameters

Parameter Name Description Type Supported Values Default Value
input
inputBinaryImage
The binary input image. Image Binary nullptr
input
numberOfIterations
The number of iterations. UInt32 >=1 3
input
threshold
The minimum number of background neighbors that is required to transform a foreground voxel into a background one. UInt32 [1, 26] 14
output
outputBinaryImage
The binary output image. Its size and type are forced to the same values as the input. Image nullptr

Object Examples

auto foam_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "foam_sep.vip" );

SelectiveErosion3d selectiveErosion3dAlgo;
selectiveErosion3dAlgo.setInputBinaryImage( foam_sep );
selectiveErosion3dAlgo.setNumberOfIterations( 3 );
selectiveErosion3dAlgo.setThreshold( 14 );
selectiveErosion3dAlgo.execute();

std::cout << "outputBinaryImage:" << selectiveErosion3dAlgo.outputBinaryImage()->toString();

Function Examples

auto foam_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "foam_sep.vip" );

auto result = selectiveErosion3d( foam_sep, 3, 14 );

std::cout << "outputBinaryImage:" << result->toString();