ImageDev

ObjectSpecificSurface

Measures the ratio of binarized surface to volume of objects contained inside the volume of interest of a binary image.

Access to parameter description

For an introduction: In the 2D case, the Object Specific Surface, $OSS$, is calculated as the division of the perimeter $P$ by area $Ar$. In the 3D case, it is calculated as the division of the surface $S$ from the Area3d algorithm by the 3D volume $V$.
  • $P$ is the object Crofton Perimeter.
  • $Ar$ is the object area.
  • $S$ is the object surface area calculated using the Area3d algorithm.
  • $V$ is the object volume.
  • See also

    Function Syntax

    This function returns the outputMeasurement output parameter.
    // Function prototype.
    ObjectSpecificSurfaceMsr::Ptr
    objectSpecificSurface( std::shared_ptr< iolink::ImageView > inputBinaryImage, ObjectSpecificSurfaceMsr::Ptr outputMeasurement = NULL );
    This function returns the outputMeasurement output parameter.
    // Function prototype.
    object_specific_surface( input_binary_image, output_measurement = None )
    This function returns the outputMeasurement output parameter.
    // Function prototype.
    public static ObjectSpecificSurfaceMsr
    ObjectSpecificSurface( IOLink.ImageView inputBinaryImage, ObjectSpecificSurfaceMsr outputMeasurement = null );

    Class Syntax

    Parameters

    Class Name ObjectSpecificSurface

    Parameter Name Description Type Supported Values Default Value
    input
    inputBinaryImage
    The input binary image. Image Binary nullptr
    output
    outputMeasurement
    The output measurement result. ObjectSpecificSurfaceMsr nullptr

    Object Examples

    auto polystyrene_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep.vip" );
    
    ObjectSpecificSurface objectSpecificSurfaceAlgo;
    objectSpecificSurfaceAlgo.setInputBinaryImage( polystyrene_sep );
    objectSpecificSurfaceAlgo.execute();
    
    std::cout << "ratio: " << objectSpecificSurfaceAlgo.outputMeasurement()->ratio( 0 ) ;
    
    polystyrene_sep = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep.vip"))
    
    object_specific_surface_algo = imagedev.ObjectSpecificSurface()
    object_specific_surface_algo.input_binary_image = polystyrene_sep
    object_specific_surface_algo.execute()
    
    print( 
    print("ratio: ", object_specific_surface_algo.output_measurement.ratio( 0 ) ) );
    
    ImageView polystyrene_sep = Data.ReadVipImage( @"Data/images/polystyrene_sep.vip" );
    
    ObjectSpecificSurface objectSpecificSurfaceAlgo = new ObjectSpecificSurface
    {
        inputBinaryImage = polystyrene_sep
    };
    objectSpecificSurfaceAlgo.Execute();
    
    Console.WriteLine( "ratio: " + objectSpecificSurfaceAlgo.outputMeasurement.ratio( 0 ) );
    

    Function Examples

    auto polystyrene_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene_sep.vip" );
    
    auto result = objectSpecificSurface( polystyrene_sep );
    
    std::cout << "ratio: " << result->ratio( 0 ) ;
    
    polystyrene_sep = imagedev.read_vip_image(imagedev_data.get_image_path("polystyrene_sep.vip"))
    
    result = imagedev.object_specific_surface( polystyrene_sep )
    
    print( "ratio: ", result.ratio( 0 ) );
    
    ImageView polystyrene_sep = Data.ReadVipImage( @"Data/images/polystyrene_sep.vip" );
    
    ObjectSpecificSurfaceMsr result = Processing.ObjectSpecificSurface( polystyrene_sep );
    
    Console.WriteLine(  "ratio: " + result.ratio( 0 )  );