ImageDev

SelectiveDilation3d

Dilates 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 background voxel is transformed into a foreground voxel if the number of foreground 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 dilation.

This operator is smoother than a standard dilation, 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 > selectiveDilation3d( std::shared_ptr< iolink::ImageView > inputBinaryImage, uint32_t numberOfIterations, uint32_t threshold, std::shared_ptr< iolink::ImageView > outputBinaryImage = NULL );
This function returns outputBinaryImage.
// Function prototype.
selective_dilation_3d( input_binary_image,
                       number_of_iterations = 3,
                       threshold = 14,
                       output_binary_image = None )
This function returns outputBinaryImage.
// Function prototype.
public static IOLink.ImageView
SelectiveDilation3d( IOLink.ImageView inputBinaryImage,
                     UInt32 numberOfIterations = 3,
                     UInt32 threshold = 14,
                     IOLink.ImageView outputBinaryImage = null );

Class Syntax

Parameters

Class Name SelectiveDilation3d

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 foreground neighbors that is required to transform a background pixel 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" );

SelectiveDilation3d selectiveDilation3dAlgo;
selectiveDilation3dAlgo.setInputBinaryImage( foam_sep );
selectiveDilation3dAlgo.setNumberOfIterations( 3 );
selectiveDilation3dAlgo.setThreshold( 14 );
selectiveDilation3dAlgo.execute();

std::cout << "outputBinaryImage:" << selectiveDilation3dAlgo.outputBinaryImage()->toString();
foam_sep = imagedev.read_vip_image(imagedev_data.get_image_path("foam_sep.vip"))

selective_dilation_3d_algo = imagedev.SelectiveDilation3d()
selective_dilation_3d_algo.input_binary_image = foam_sep
selective_dilation_3d_algo.number_of_iterations = 3
selective_dilation_3d_algo.threshold = 14
selective_dilation_3d_algo.execute()

print( "output_binary_image:", str( selective_dilation_3d_algo.output_binary_image ) )
ImageView foam_sep = Data.ReadVipImage( @"Data/images/foam_sep.vip" );

SelectiveDilation3d selectiveDilation3dAlgo = new SelectiveDilation3d
{
    inputBinaryImage = foam_sep,
    numberOfIterations = 3,
    threshold = 14
};
selectiveDilation3dAlgo.Execute();

Console.WriteLine( "outputBinaryImage:" + selectiveDilation3dAlgo.outputBinaryImage.ToString() );

Function Examples

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

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

std::cout << "outputBinaryImage:" << result->toString();
foam_sep = imagedev.read_vip_image(imagedev_data.get_image_path("foam_sep.vip"))

result = imagedev.selective_dilation_3d( foam_sep, 3, 14 )

print( "output_binary_image:", str( result ) )
ImageView foam_sep = Data.ReadVipImage( @"Data/images/foam_sep.vip" );

IOLink.ImageView result = Processing.SelectiveDilation3d( foam_sep, 3, 14 );

Console.WriteLine( "outputBinaryImage:" + result.ToString() );