ImageDev

BinarySmoothing2d

Transforms a binary two-dimensional image into another binary image with respect to the real local mean of each pixel 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.

<b> (a) </b>
(a)
<b> (b) </b>
(b)
<b> (c) </b>
(c)
Figure 1. Effects of the binary smoothing algorithm: (a) original grayscale image,@Br (b) binary image after thresholding, (c) result of a binary smoothing using a 9x9 window

See also

Function Syntax

This function returns outputBinaryImage.
// Function prototype
std::shared_ptr< iolink::ImageView > binarySmoothing2d( std::shared_ptr< iolink::ImageView > inputBinaryImage, int32_t kernelRadiusX, int32_t kernelRadiusY, double threshold, std::shared_ptr< iolink::ImageView > outputBinaryImage = NULL );

Class Syntax

Parameters

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
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 and type are forced to the same values as the input. Image nullptr

Object Examples

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

BinarySmoothing2d binarySmoothing2dAlgo;
binarySmoothing2dAlgo.setInputBinaryImage( polystyrene_sep );
binarySmoothing2dAlgo.setKernelRadiusX( 3 );
binarySmoothing2dAlgo.setKernelRadiusY( 3 );
binarySmoothing2dAlgo.setThreshold( 0.5 );
binarySmoothing2dAlgo.execute();

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

Function Examples

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

auto result = binarySmoothing2d( polystyrene_sep, 3, 3, 0.5 );

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