ImageDev

CentroidPathTortuosity3d

Computes the tortuosity of a path formed by the centroids on each plan along the Z axis of a three-dimensional binary image.

Access to parameter description

Tortuosity is the ratio of the length of a curve to the distance between the ends of it along the Z axis. In this algorithm, the distance between the ends of curve is given by the number of planes along the Z axis.

This algorithm first computes the centroid $c(i)$ of each plane $z(i)$ of the image. Then it computes the path length through the centroids $l=\Sigma d(i)$ and then divides it by the height traveled along the Z axis: $H=z(n)-z(0)$ .

<b> Figure 1.</b> Centroid path tortuosity computation
Figure 1. Centroid path tortuosity computation
See also

Function Syntax

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

Class Syntax

Parameters

Class Name CentroidPathTortuosity3d

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

Object Examples

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

CentroidPathTortuosity3d centroidPathTortuosity3dAlgo;
centroidPathTortuosity3dAlgo.setInputBinaryImage( foam_sep );
centroidPathTortuosity3dAlgo.execute();

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

centroid_path_tortuosity_3d_algo = imagedev.CentroidPathTortuosity3d()
centroid_path_tortuosity_3d_algo.input_binary_image = foam_sep
centroid_path_tortuosity_3d_algo.execute()

print( "tortuosityFactor: ", str( centroid_path_tortuosity_3d_algo.output_measurement.tortuosity_factor( ) ) )
ImageView foam_sep = Data.ReadVipImage( @"Data/images/foam_sep.vip" );

CentroidPathTortuosity3d centroidPathTortuosity3dAlgo = new CentroidPathTortuosity3d
{
    inputBinaryImage = foam_sep
};
centroidPathTortuosity3dAlgo.Execute();

Console.WriteLine( "tortuosityFactor: " + centroidPathTortuosity3dAlgo.outputMeasurement.tortuosityFactor( ) );

Function Examples

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

auto result = centroidPathTortuosity3d( foam_sep );

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

result = imagedev.centroid_path_tortuosity_3d( foam_sep )

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

CentroidTortuosity3dMsr result = Processing.CentroidPathTortuosity3d( foam_sep );

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