ImageDev

BinarySmoothing3d

Transforms a binary three-dimensional image into another binary image with respect to the real local mean of each voxel neighborhood.

Access to parameter description

This algorithm computes a binary smoothing using a specified window size.
It consists of a two step procedure: Note: the binary smoothing does not preserve the topology of objects.

See also

Function Syntax

This function returns outputBinaryImage.
// Function prototype
std::shared_ptr< iolink::ImageView > binarySmoothing3d( std::shared_ptr< iolink::ImageView > inputBinaryImage, int32_t kernelRadiusX, int32_t kernelRadiusY, int32_t kernelRadiusZ, double threshold, std::shared_ptr< iolink::ImageView > outputBinaryImage = NULL );
This function returns outputBinaryImage.
// Function prototype.
binary_smoothing_3d( input_binary_image,
                     kernel_radius_x = 3,
                     kernel_radius_y = 3,
                     kernel_radius_z = 3,
                     threshold = 0.5,
                     output_binary_image = None )
This function returns outputBinaryImage.
// Function prototype.
public static IOLink.ImageView
BinarySmoothing3d( IOLink.ImageView inputBinaryImage,
                   Int32 kernelRadiusX = 3,
                   Int32 kernelRadiusY = 3,
                   Int32 kernelRadiusZ = 3,
                   double threshold = 0.5,
                   IOLink.ImageView outputBinaryImage = null );

Class Syntax

Parameters

Class Name BinarySmoothing3d

Parameter Name Description Type Supported Values Default Value
input
inputBinaryImage
The input binary image. Image Binary nullptr
input
kernelRadiusX
The kernel horizontal half length, in pixels. A value N produces a 2N+1 pixels length. Int32 >=1 3
input
kernelRadiusY
The kernel vertical half length, in pixels. A value N produces a 2N+1 pixels length. Int32 >=1 3
input
kernelRadiusZ
The kernel depth half length, in pixels. A value N produces a 2N+1 pixels length. Int32 >=1 3
input
threshold
The threshold value applied to the local mean (the minimum volume fraction in the window to set a pixel to 1). Float64 ]0, 1] 0.5
output
outputBinaryImage
The output binary image. Its dimensions 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" );

BinarySmoothing3d binarySmoothing3dAlgo;
binarySmoothing3dAlgo.setInputBinaryImage( foam_sep );
binarySmoothing3dAlgo.setKernelRadiusX( 3 );
binarySmoothing3dAlgo.setKernelRadiusY( 3 );
binarySmoothing3dAlgo.setKernelRadiusZ( 3 );
binarySmoothing3dAlgo.setThreshold( 0.5 );
binarySmoothing3dAlgo.execute();

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

binary_smoothing_3d_algo = imagedev.BinarySmoothing3d()
binary_smoothing_3d_algo.input_binary_image = foam_sep
binary_smoothing_3d_algo.kernel_radius_x = 3
binary_smoothing_3d_algo.kernel_radius_y = 3
binary_smoothing_3d_algo.kernel_radius_z = 3
binary_smoothing_3d_algo.threshold = 0.5
binary_smoothing_3d_algo.execute()

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

BinarySmoothing3d binarySmoothing3dAlgo = new BinarySmoothing3d
{
    inputBinaryImage = foam_sep,
    kernelRadiusX = 3,
    kernelRadiusY = 3,
    kernelRadiusZ = 3,
    threshold = 0.5
};
binarySmoothing3dAlgo.Execute();

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

Function Examples

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

auto result = binarySmoothing3d( foam_sep, 3, 3, 3, 0.5 );

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

result = imagedev.binary_smoothing_3d( foam_sep, 3, 3, 3, 0.5 )

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

IOLink.ImageView result = Processing.BinarySmoothing3d( foam_sep, 3, 3, 3, 0.5 );

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