FillHoles2d
Fills the holes inside particles of a two-dimensional binary image.
Access to parameter description
For an introduction:
Holes inside objects are filled using a numerical reconstruction applied on the complement of the input image, from markers made of pixels of the image frame.
Figure 1. Illustration of the hole filling algorithm
Note: Since the reconstruction is applied on the input image complement, selecting a 4-neighbor connectivity fills holes connected to the background with a 8-neighbor connectivity.
See also
See related example
Access to parameter description
For an introduction:
- section Mathematical Morphology
- section Reconstruction From Markers
Holes inside objects are filled using a numerical reconstruction applied on the complement of the input image, from markers made of pixels of the image frame.
Figure 1. Illustration of the hole filling algorithm
Note: Since the reconstruction is applied on the input image complement, selecting a 4-neighbor connectivity fills holes connected to the background with a 8-neighbor connectivity.
See also
See related example
Function Syntax
This function returns outputObjectImage.
// Function prototype
std::shared_ptr< iolink::ImageView > fillHoles2d( std::shared_ptr< iolink::ImageView > inputObjectImage, FillHoles2d::Neighborhood neighborhood, std::shared_ptr< iolink::ImageView > outputObjectImage = NULL );
This function returns outputObjectImage.
// Function prototype. fill_holes_2d( input_object_image, neighborhood = FillHoles2d.Neighborhood.CONNECTIVITY_8, output_object_image = None )
This function returns outputObjectImage.
// Function prototype. public static IOLink.ImageView FillHoles2d( IOLink.ImageView inputObjectImage, FillHoles2d.Neighborhood neighborhood = ImageDev.FillHoles2d.Neighborhood.CONNECTIVITY_8, IOLink.ImageView outputObjectImage = null );
Class Syntax
Parameters
Parameter Name | Description | Type | Supported Values | Default Value | |||||
---|---|---|---|---|---|---|---|---|---|
inputObjectImage |
The input binary or label image. | Image | Binary or Label | nullptr | |||||
neighborhood |
The 2D neighborhood configuration for performing numerical reconstruction.
|
Enumeration | CONNECTIVITY_8 | ||||||
outputObjectImage |
The output binary or label 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_object_image |
The input binary or label image. | image | Binary or Label | None | |||||
neighborhood |
The 2D neighborhood configuration for performing numerical reconstruction.
|
enumeration | CONNECTIVITY_8 | ||||||
output_object_image |
The output binary or label 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 | |||||
---|---|---|---|---|---|---|---|---|---|
inputObjectImage |
The input binary or label image. | Image | Binary or Label | null | |||||
neighborhood |
The 2D neighborhood configuration for performing numerical reconstruction.
|
Enumeration | CONNECTIVITY_8 | ||||||
outputObjectImage |
The output binary or label image. Its dimensions and type are forced to the same values as the input image. | Image | null |
Object Examples
auto polystyrene_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep.vip" ); FillHoles2d fillHoles2dAlgo; fillHoles2dAlgo.setInputObjectImage( polystyrene_sep ); fillHoles2dAlgo.setNeighborhood( FillHoles2d::Neighborhood::CONNECTIVITY_8 ); fillHoles2dAlgo.execute(); std::cout << "outputObjectImage:" << fillHoles2dAlgo.outputObjectImage()->toString();
polystyrene_sep = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep.vip")) fill_holes_2d_algo = imagedev.FillHoles2d() fill_holes_2d_algo.input_object_image = polystyrene_sep fill_holes_2d_algo.neighborhood = imagedev.FillHoles2d.CONNECTIVITY_8 fill_holes_2d_algo.execute() print( "output_object_image:", str( fill_holes_2d_algo.output_object_image ) )
ImageView polystyrene_sep = Data.ReadVipImage( @"Data/images/polystyrene_sep.vip" ); FillHoles2d fillHoles2dAlgo = new FillHoles2d { inputObjectImage = polystyrene_sep, neighborhood = FillHoles2d.Neighborhood.CONNECTIVITY_8 }; fillHoles2dAlgo.Execute(); Console.WriteLine( "outputObjectImage:" + fillHoles2dAlgo.outputObjectImage.ToString() );
Function Examples
auto polystyrene_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep.vip" ); auto result = fillHoles2d( polystyrene_sep, FillHoles2d::Neighborhood::CONNECTIVITY_8 ); std::cout << "outputObjectImage:" << result->toString();
polystyrene_sep = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep.vip")) result = imagedev.fill_holes_2d( polystyrene_sep, imagedev.FillHoles2d.CONNECTIVITY_8 ) print( "output_object_image:", str( result ) )
ImageView polystyrene_sep = Data.ReadVipImage( @"Data/images/polystyrene_sep.vip" ); IOLink.ImageView result = Processing.FillHoles2d( polystyrene_sep, FillHoles2d.Neighborhood.CONNECTIVITY_8 ); Console.WriteLine( "outputObjectImage:" + result.ToString() );