Area3d
Computes the surface area of foreground voxels in a three-dimensional binary image.
Access to parameter description
For an introduction: section Image Analysis.
Area3d approximates the surface area of the object boundary.
In the continuous case, let x(t), y(t) and z(t) be a parametric representation of the boundary curve X, its area is obtained as: $$L(X)=\int_{\delta X} \sqrt{x'^2+y'^2+z'^2}dt$$
This formula has no obvious discrete equivalent, and is therefore mostly useless for our purposes.
This algorithm uses an intercept method to take into account the exposed surface of the outer voxels.
The idea of this method is that, depending on the type of connectivity relying two boundary voxels, their contribution to the area can vary from a factor 1 to 3.
This measurement can be seen as a 3D extension of the Crofton perimeter formula by using 13 intercept directions.
This approximation is especially irrelevant for objects made of few voxels. For an isolated voxel, it underestimates the surface as 50% of the sum of voxels faces area. For a cube made of more than 5000 voxels the error rate falls below 10%.
See also
Access to parameter description
For an introduction: section Image Analysis.
Area3d approximates the surface area of the object boundary.
In the continuous case, let x(t), y(t) and z(t) be a parametric representation of the boundary curve X, its area is obtained as: $$L(X)=\int_{\delta X} \sqrt{x'^2+y'^2+z'^2}dt$$
This formula has no obvious discrete equivalent, and is therefore mostly useless for our purposes.
This algorithm uses an intercept method to take into account the exposed surface of the outer voxels.
The idea of this method is that, depending on the type of connectivity relying two boundary voxels, their contribution to the area can vary from a factor 1 to 3.
This measurement can be seen as a 3D extension of the Crofton perimeter formula by using 13 intercept directions.
This approximation is especially irrelevant for objects made of few voxels. For an isolated voxel, it underestimates the surface as 50% of the sum of voxels faces area. For a cube made of more than 5000 voxels the error rate falls below 10%.
See also
Function Syntax
This function returns the outputMeasurement output parameter.
// Function prototype. Area3dMsr::Ptr area3d( std::shared_ptr< iolink::ImageView > inputBinaryImage, Area3dMsr::Ptr outputMeasurement = NULL );
This function returns the outputMeasurement output parameter.
// Function prototype. area_3d( input_binary_image, output_measurement = None )
This function returns the outputMeasurement output parameter.
// Function prototype. public static Area3dMsr Area3d( IOLink.ImageView inputBinaryImage, Area3dMsr outputMeasurement = null );
Class Syntax
Parameters
Class Name | Area3d |
---|
Parameter Name | Description | Type | Supported Values | Default Value | |
---|---|---|---|---|---|
inputBinaryImage |
The 3D binary input image. | Image | Binary | nullptr | |
outputMeasurement |
The output measurement results. | Area3dMsr | nullptr |
Object Examples
auto foam_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "foam_sep.vip" ); Area3d area3dAlgo; area3dAlgo.setInputBinaryImage( foam_sep ); area3dAlgo.execute(); std::cout << "area: " << area3dAlgo.outputMeasurement()->area( ) ;
foam_sep = imagedev.read_vip_image(imagedev_data.get_image_path("foam_sep.vip")) area_3d_algo = imagedev.Area3d() area_3d_algo.input_binary_image = foam_sep area_3d_algo.execute() print( print("area: ", area_3d_algo.output_measurement.area( ) ) );
ImageView foam_sep = Data.ReadVipImage( @"Data/images/foam_sep.vip" ); Area3d area3dAlgo = new Area3d { inputBinaryImage = foam_sep }; area3dAlgo.Execute(); Console.WriteLine( "area: " + area3dAlgo.outputMeasurement.area( ) );
Function Examples
auto foam_sep = readVipImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "foam_sep.vip" ); auto result = area3d( foam_sep ); std::cout << "area: " << result->area( ) ;
foam_sep = imagedev.read_vip_image(imagedev_data.get_image_path("foam_sep.vip")) result = imagedev.area_3d( foam_sep ) print( "area: ", result.area( ) );
ImageView foam_sep = Data.ReadVipImage( @"Data/images/foam_sep.vip" ); Area3dMsr result = Processing.Area3d( foam_sep ); Console.WriteLine( "area: " + result.area( ) );