VolumeFractionByRegion
            Computes, for each region of a first label image, the intersection ratio with particles of a second label image.
Access to parameter description
This algorithm computes the intersection ratio of a particle in a given region.
$IR(P, R)= \frac{A(R\cap P)}{A(P)}$
Where $IR$ is the intersection ratio, $A$ the number of pixels (area in the 2D case, volume in 3D), $R$ a given region and $P$ a given particle.
 
For example, it can be used in digital rock analysis by setting a ganglia segmentation as region input (object image) and a pore segmentation as particle input (label image). If the ganglia segmentation is oil and water, one can get the percentage of oil and water per pore.
 
Result is a two-dimensional array where the first index refers to particles and the second index to regions. For regions, index 0 refers to the background (pixels having an intensity equal to 0). For particles, index 0 refers to the first label (pixels having an intensity equal to 1).
 
See also
		Access to parameter description
This algorithm computes the intersection ratio of a particle in a given region.
$IR(P, R)= \frac{A(R\cap P)}{A(P)}$
Where $IR$ is the intersection ratio, $A$ the number of pixels (area in the 2D case, volume in 3D), $R$ a given region and $P$ a given particle.
For example, it can be used in digital rock analysis by setting a ganglia segmentation as region input (object image) and a pore segmentation as particle input (label image). If the ganglia segmentation is oil and water, one can get the percentage of oil and water per pore.
Result is a two-dimensional array where the first index refers to particles and the second index to regions. For regions, index 0 refers to the background (pixels having an intensity equal to 0). For particles, index 0 refers to the first label (pixels having an intensity equal to 1).
See also
Function Syntax
This function returns the outputMeasurement output parameter.
                        
                    
// Function prototype.
VolumeFractionByRegionMsr::Ptr
volumeFractionByRegion( std::shared_ptr< iolink::ImageView > inputObjectImage,
                        std::shared_ptr< iolink::ImageView > inputLabelImage,
                        VolumeFractionByRegionMsr::Ptr outputMeasurement = NULL );
                    
This function returns the outputMeasurement output parameter.
                        
                    // Function prototype. volume_fraction_by_region( input_object_image, input_label_image, output_measurement = None )
This function returns the outputMeasurement output parameter.
                        
                
// Function prototype.
public static VolumeFractionByRegionMsr
VolumeFractionByRegion( IOLink.ImageView inputObjectImage,
                        IOLink.ImageView inputLabelImage,
                        VolumeFractionByRegionMsr outputMeasurement = null );
                    Class Syntax
Parameters
| Class Name | VolumeFractionByRegion | 
|---|
| Parameter Name | Description | Type | Supported Values | Default Value | |
|---|---|---|---|---|---|
![]()  | 
  inputObjectImage    | 
 The input binary or label image representing the regions to be analyzed. | Image | Binary or Label | nullptr | 
![]()  | 
  inputLabelImage    | 
 The input label image containing the particles to be intersected with regions. This image must have same dimensions as the region input image. | Image | Label | nullptr | 
![]()  | 
  outputMeasurement    | 
 The output measurement result providing the intersection ratio between each region and particle. | VolumeFractionByRegionMsr | nullptr | |
Object Examples
auto polystyrene_sep_label = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep_label.vip" ); VolumeFractionByRegion volumeFractionByRegionAlgo; volumeFractionByRegionAlgo.setInputObjectImage( polystyrene_sep_label ); volumeFractionByRegionAlgo.setInputLabelImage( polystyrene_sep_label ); volumeFractionByRegionAlgo.execute(); std::cout << "intersectionRatio: " << volumeFractionByRegionAlgo.outputMeasurement()->intersectionRatio( 0 , 0 ) ;
polystyrene_sep_label = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep_label.vip"))
volume_fraction_by_region_algo = imagedev.VolumeFractionByRegion()
volume_fraction_by_region_algo.input_object_image = polystyrene_sep_label
volume_fraction_by_region_algo.input_label_image = polystyrene_sep_label
volume_fraction_by_region_algo.execute()
print( 
print("intersectionRatio: ", volume_fraction_by_region_algo.output_measurement.intersection_ratio( 0 , 0 ) ) );
            
ImageView polystyrene_sep_label = Data.ReadVipImage( @"Data/images/polystyrene_sep_label.vip" );
VolumeFractionByRegion volumeFractionByRegionAlgo = new VolumeFractionByRegion
{
    inputObjectImage = polystyrene_sep_label,
    inputLabelImage = polystyrene_sep_label
};
volumeFractionByRegionAlgo.Execute();
Console.WriteLine( "intersectionRatio: " + volumeFractionByRegionAlgo.outputMeasurement.intersectionRatio( 0 , 0 ) );
            Function Examples
auto polystyrene_sep_label = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep_label.vip" ); auto result = volumeFractionByRegion( polystyrene_sep_label, polystyrene_sep_label ); std::cout << "intersectionRatio: " << result->intersectionRatio( 0 , 0 ) ;
polystyrene_sep_label = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep_label.vip"))
result = imagedev.volume_fraction_by_region( polystyrene_sep_label, polystyrene_sep_label )
print( "intersectionRatio: ", result.intersection_ratio( 0 , 0 ) );
            ImageView polystyrene_sep_label = Data.ReadVipImage( @"Data/images/polystyrene_sep_label.vip" ); VolumeFractionByRegionMsr result = Processing.VolumeFractionByRegion( polystyrene_sep_label, polystyrene_sep_label ); Console.WriteLine( "intersectionRatio: " + result.intersectionRatio( 0 , 0 ) );

