ImageDev

StructureModelIndex3d

Indicates the relative prevalence of rod and plate structures in three-dimensional binary image.

Access to parameter description

For an introduction: As the fragmentation algorithm, this measurement is based on surface convexity analysis.
This algorithm dilates the input binarized image as shown in the fragmentation index algorithm documentation. The kernelRadius parameter is the number of iterations of dilation performed with a cubic structuring element of size 3.

The Structure Model Index $SMI$ is given by: $$ SMI = 6\times\frac{S_d -S}{S\times \Delta_d}\times\frac{V}{S} $$ where An ideal plate, cylinder, and sphere have Structure Model Index values of 0, 3 and 4 respectively.

Reference:
T.Hildebrand, P.Ruegsegger. "Quantification of Bone Microarchitecture with the Structure Model Index". Comput Methods Biomech Biomed Engin., vol. 1, pp. 15-23, 1997.

See also

Function Syntax

This function returns the outputMeasurement output parameter.
// Function prototype.
StructureModelIndexMsr::Ptr
structureModelIndex3d( std::shared_ptr< iolink::ImageView > inputImage,
                       int32_t kernelRadius,
                       StructureModelIndexMsr::Ptr outputMeasurement = NULL );
This function returns the outputMeasurement output parameter.
// Function prototype.
structure_model_index_3d( input_image, kernel_radius = 3, output_measurement = None )
This function returns the outputMeasurement output parameter.
// Function prototype.
public static StructureModelIndexMsr
StructureModelIndex3d( IOLink.ImageView inputImage,
                       Int32 kernelRadius = 3,
                       StructureModelIndexMsr outputMeasurement = null );

Class Syntax

Parameters

Class Name StructureModelIndex3d

Parameter Name Description Type Supported Values Default Value
input
inputImage
The 3D binary input image. Image Binary nullptr
input
kernelRadius
The kernel radius in voxels of the spherical structuring element used for the dilation. Int32 >=1 3
output
outputMeasurement
The output measurement result. StructureModelIndexMsr nullptr

Object Examples

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

StructureModelIndex3d structureModelIndex3dAlgo;
structureModelIndex3dAlgo.setInputImage( foam_sep );
structureModelIndex3dAlgo.setKernelRadius( 3 );
structureModelIndex3dAlgo.execute();

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

structure_model_index_3d_algo = imagedev.StructureModelIndex3d()
structure_model_index_3d_algo.input_image = foam_sep
structure_model_index_3d_algo.kernel_radius = 3
structure_model_index_3d_algo.execute()

print( 
print("index: ", structure_model_index_3d_algo.output_measurement.index( ) ) );
ImageView foam_sep = Data.ReadVipImage( @"Data/images/foam_sep.vip" );

StructureModelIndex3d structureModelIndex3dAlgo = new StructureModelIndex3d
{
    inputImage = foam_sep,
    kernelRadius = 3
};
structureModelIndex3dAlgo.Execute();

Console.WriteLine( "index: " + structureModelIndex3dAlgo.outputMeasurement.index( ) );

Function Examples

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

auto result = structureModelIndex3d( foam_sep, 3 );

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

result = imagedev.structure_model_index_3d( foam_sep, 3 )

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

StructureModelIndexMsr result = Processing.StructureModelIndex3d( foam_sep, 3 );

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