MarkerBasedWatershed2d
Performs a fast determination of the watershed lines in a two-dimensional grayscale image from a predefined set of markers.
Access to parameter description
For an introduction:
It determines the crest lines separating the markers.
Three ways of presenting the resulting image are provided:
See also
Access to parameter description
For an introduction:
- section Image Segmentation
- section Introduction To Watershed
It determines the crest lines separating the markers.
Three ways of presenting the resulting image are provided:
- Crest lines are output in a binary image.
- Marked basins are output in a label image with crest lines considered as background.
- Marked basins are output in a label image with crest lines filled by a marker value.
See also
Function Syntax
This function returns the outputImage output parameter.
// Function prototype. std::shared_ptr< iolink::ImageView > markerBasedWatershed2d( std::shared_ptr< iolink::ImageView > inputGrayImage, std::shared_ptr< iolink::ImageView > inputMarkerImage, MarkerBasedWatershed2d::AlgorithmMode algorithmMode, MarkerBasedWatershed2d::OutputType outputType, MarkerBasedWatershed2d::Neighborhood neighborhood, std::shared_ptr< iolink::ImageView > outputImage = NULL );
This function returns the outputImage output parameter.
// Function prototype. marker_based_watershed_2d( input_gray_image, input_marker_image, algorithm_mode = MarkerBasedWatershed2d.AlgorithmMode.REPEATABLE, output_type = MarkerBasedWatershed2d.OutputType.SEPARATED_REGIONS, neighborhood = MarkerBasedWatershed2d.Neighborhood.CONNECTIVITY_4, output_image = None )
This function returns the outputImage output parameter.
// Function prototype. public static IOLink.ImageView MarkerBasedWatershed2d( IOLink.ImageView inputGrayImage, IOLink.ImageView inputMarkerImage, MarkerBasedWatershed2d.AlgorithmMode algorithmMode = ImageDev.MarkerBasedWatershed2d.AlgorithmMode.REPEATABLE, MarkerBasedWatershed2d.OutputType outputType = ImageDev.MarkerBasedWatershed2d.OutputType.SEPARATED_REGIONS, MarkerBasedWatershed2d.Neighborhood neighborhood = ImageDev.MarkerBasedWatershed2d.Neighborhood.CONNECTIVITY_4, IOLink.ImageView outputImage = null );
Class Syntax
Parameters
Class Name | MarkerBasedWatershed2d |
---|
Parameter Name | Description | Type | Supported Values | Default Value | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
inputGrayImage |
The input grayscale image representing the landscape of the watershed. | Image | Grayscale | nullptr | |||||||
inputMarkerImage |
The input label image of markers. | Image | Label | nullptr | |||||||
algorithmMode |
The mode for applying the watershed algorithm.
|
Enumeration | REPEATABLE | ||||||||
outputType |
The type of output image.
|
Enumeration | SEPARATED_REGIONS | ||||||||
neighborhood |
The type of neighborhood used for the propagation.
|
Enumeration | CONNECTIVITY_4 | ||||||||
outputImage |
The output binary image. Its dimensions are forced to the same values as the input image. Its type depends on the selected outputType and potentially on the highest label of the inputMarkerImage. | Image | nullptr |
Object Examples
std::shared_ptr< iolink::ImageView > polystyrene = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene.tif" ); auto polystyrene_sep_label = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep_label.vip" ); MarkerBasedWatershed2d markerBasedWatershed2dAlgo; markerBasedWatershed2dAlgo.setInputGrayImage( polystyrene ); markerBasedWatershed2dAlgo.setInputMarkerImage( polystyrene_sep_label ); markerBasedWatershed2dAlgo.setAlgorithmMode( MarkerBasedWatershed2d::AlgorithmMode::REPEATABLE ); markerBasedWatershed2dAlgo.setOutputType( MarkerBasedWatershed2d::OutputType::LINES ); markerBasedWatershed2dAlgo.setNeighborhood( MarkerBasedWatershed2d::Neighborhood::CONNECTIVITY_4 ); markerBasedWatershed2dAlgo.execute(); std::cout << "outputImage:" << markerBasedWatershed2dAlgo.outputImage()->toString();
polystyrene = ioformat.read_image(imagedev_data.get_image_path("polystyrene.tif")) polystyrene_sep_label = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep_label.vip")) marker_based_watershed_2d_algo = imagedev.MarkerBasedWatershed2d() marker_based_watershed_2d_algo.input_gray_image = polystyrene marker_based_watershed_2d_algo.input_marker_image = polystyrene_sep_label marker_based_watershed_2d_algo.algorithm_mode = imagedev.MarkerBasedWatershed2d.REPEATABLE marker_based_watershed_2d_algo.output_type = imagedev.MarkerBasedWatershed2d.LINES marker_based_watershed_2d_algo.neighborhood = imagedev.MarkerBasedWatershed2d.CONNECTIVITY_4 marker_based_watershed_2d_algo.execute() print( "output_image:", str( marker_based_watershed_2d_algo.output_image ) )
ImageView polystyrene = ViewIO.ReadImage( @"Data/images/polystyrene.tif" ); ImageView polystyrene_sep_label = Data.ReadVipImage( @"Data/images/polystyrene_sep_label.vip" ); MarkerBasedWatershed2d markerBasedWatershed2dAlgo = new MarkerBasedWatershed2d { inputGrayImage = polystyrene, inputMarkerImage = polystyrene_sep_label, algorithmMode = MarkerBasedWatershed2d.AlgorithmMode.REPEATABLE, outputType = MarkerBasedWatershed2d.OutputType.LINES, neighborhood = MarkerBasedWatershed2d.Neighborhood.CONNECTIVITY_4 }; markerBasedWatershed2dAlgo.Execute(); Console.WriteLine( "outputImage:" + markerBasedWatershed2dAlgo.outputImage.ToString() );
Function Examples
std::shared_ptr< iolink::ImageView > polystyrene = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene.tif" ); auto polystyrene_sep_label = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep_label.vip" ); auto result = markerBasedWatershed2d( polystyrene, polystyrene_sep_label, MarkerBasedWatershed2d::AlgorithmMode::REPEATABLE, MarkerBasedWatershed2d::OutputType::LINES, MarkerBasedWatershed2d::Neighborhood::CONNECTIVITY_4 ); std::cout << "outputImage:" << result->toString();
polystyrene = ioformat.read_image(imagedev_data.get_image_path("polystyrene.tif")) polystyrene_sep_label = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep_label.vip")) result = imagedev.marker_based_watershed_2d( polystyrene, polystyrene_sep_label, imagedev.MarkerBasedWatershed2d.REPEATABLE, imagedev.MarkerBasedWatershed2d.LINES, imagedev.MarkerBasedWatershed2d.CONNECTIVITY_4 ) print( "output_image:", str( result ) )
ImageView polystyrene = ViewIO.ReadImage( @"Data/images/polystyrene.tif" ); ImageView polystyrene_sep_label = Data.ReadVipImage( @"Data/images/polystyrene_sep_label.vip" ); IOLink.ImageView result = Processing.MarkerBasedWatershed2d( polystyrene, polystyrene_sep_label, MarkerBasedWatershed2d.AlgorithmMode.REPEATABLE, MarkerBasedWatershed2d.OutputType.LINES, MarkerBasedWatershed2d.Neighborhood.CONNECTIVITY_4 ); Console.WriteLine( "outputImage:" + result.ToString() );