Loading [MathJax]/jax/output/CommonHTML/jax.js
ImageDev

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)=δXx2+y2+z2dt
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 outputMeasurement.
// Function prototype
Area3dMsr::Ptr area3d( std::shared_ptr< iolink::ImageView > inputBinaryImage, Area3dMsr::Ptr outputMeasurement = NULL );

Class Syntax

Parameters

Parameter Name Description Type Supported Values Default Value
input
inputBinaryImage
The 3D binary input image. Image Binary nullptr
output
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( ) ;

Function Examples

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

auto result = area3d( foam_sep );

std::cout << "area: " << result->area( ) ;