ImageDev

AverageObjectThickness3d

Measures the thickness of structures inside the volume of interest of a three-dimensional binary image.

Access to parameter description

For an introduction: This algorithm estimates the object thickness by assimilation to a structure model which can be selected among a parallel plate model, a cylinder rod model, and a sphere model.

The average object thickness $Th$ is computed as follows: $$ Th = k \times \frac{V}{S} $$ where Note: This algorithm estimates the average thickness of the morphology of a structure under specific assumption of structure models. Different measurements of thickness exist, and a more direct approach is accessible with the LocalThicknessMap3d algorithm.

See also

Function Syntax

This function returns the outputMeasurement output parameter.
// Function prototype.
AverageObjectThicknessMsr::Ptr
averageObjectThickness3d( std::shared_ptr< iolink::ImageView > inputObjectImage,
                          std::shared_ptr< iolink::ImageView > inputMaskImage,
                          AverageObjectThickness3d::Model model,
                          AverageObjectThicknessMsr::Ptr outputMeasurement = NULL );
This function returns the outputMeasurement output parameter.
// Function prototype.
average_object_thickness_3d( input_object_image,
                             input_mask_image,
                             model = AverageObjectThickness3d.Model.PARALLEL_PLATE_MODEL,
                             output_measurement = None )
This function returns the outputMeasurement output parameter.
// Function prototype.
public static AverageObjectThicknessMsr
AverageObjectThickness3d( IOLink.ImageView inputObjectImage,
                          IOLink.ImageView inputMaskImage,
                          AverageObjectThickness3d.Model model = ImageDev.AverageObjectThickness3d.Model.PARALLEL_PLATE_MODEL,
                          AverageObjectThicknessMsr outputMeasurement = null );

Class Syntax

Parameters

Class Name AverageObjectThickness3d

Parameter Name Description Type Supported Values Default Value
input
inputObjectImage
The input 3D binary image. Image Binary nullptr
input
inputMaskImage
The binary image defining the volume of interest. The measurement is computed from voxels having a value of 1 in this image. If it equals null, the computation is performed from all voxels of the input image. It must have same dimensions as the input image. Image Binary nullptr
input
model
The structure model used to compute the thickness.
PARALLEL_PLATE_MODEL The computation uses a parallel plate model.
CYLINDER_ROD_MODEL The computation uses a cylinder rod model.
SPHERE_MODEL The computation uses a sphere model.
Enumeration PARALLEL_PLATE_MODEL
output
outputMeasurement
The output measurement result. AverageObjectThicknessMsr nullptr

Object Examples

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

AverageObjectThickness3d averageObjectThickness3dAlgo;
averageObjectThickness3dAlgo.setInputObjectImage( foam_sep );
averageObjectThickness3dAlgo.setInputMaskImage( foam_sep );
averageObjectThickness3dAlgo.setModel( AverageObjectThickness3d::Model::PARALLEL_PLATE_MODEL );
averageObjectThickness3dAlgo.execute();

std::cout << "thickness: " << averageObjectThickness3dAlgo.outputMeasurement()->thickness( ) ;
foam_sep = imagedev.read_vip_image(imagedev_data.get_image_path("foam_sep.vip"))

average_object_thickness_3d_algo = imagedev.AverageObjectThickness3d()
average_object_thickness_3d_algo.input_object_image = foam_sep
average_object_thickness_3d_algo.input_mask_image = foam_sep
average_object_thickness_3d_algo.model = imagedev.AverageObjectThickness3d.PARALLEL_PLATE_MODEL
average_object_thickness_3d_algo.execute()

print( "thickness: ", str( average_object_thickness_3d_algo.output_measurement.thickness( ) ) )
ImageView foam_sep = Data.ReadVipImage( @"Data/images/foam_sep.vip" );

AverageObjectThickness3d averageObjectThickness3dAlgo = new AverageObjectThickness3d
{
    inputObjectImage = foam_sep,
    inputMaskImage = foam_sep,
    model = AverageObjectThickness3d.Model.PARALLEL_PLATE_MODEL
};
averageObjectThickness3dAlgo.Execute();

Console.WriteLine( "thickness: " + averageObjectThickness3dAlgo.outputMeasurement.thickness( ) );

Function Examples

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

auto result = averageObjectThickness3d( foam_sep, foam_sep, AverageObjectThickness3d::Model::PARALLEL_PLATE_MODEL );

std::cout << "thickness: " << result->thickness( ) ;
foam_sep = imagedev.read_vip_image(imagedev_data.get_image_path("foam_sep.vip"))

result = imagedev.average_object_thickness_3d( foam_sep, foam_sep, imagedev.AverageObjectThickness3d.PARALLEL_PLATE_MODEL )

print( "thickness: ", str( result.thickness( ) )  )
ImageView foam_sep = Data.ReadVipImage( @"Data/images/foam_sep.vip" );

AverageObjectThicknessMsr result = Processing.AverageObjectThickness3d( foam_sep, foam_sep, AverageObjectThickness3d.Model.PARALLEL_PLATE_MODEL );

Console.WriteLine(  "thickness: " + result.thickness( )  );