ImageDev

LocalThicknessMap3d

Computes a voxel-wise thickness of three-dimensional objects.

Access to parameter description

This algorithm assignes to each voxel a value representing the diameter of the largest ball containing the voxel and entirely inscribed in the object.

It starts by computing a Euclidean distance map inside the image objects. In a second step, the thickness map $T$ is initialized with the values of the distance map. For each voxel $v$, with distance map value $d(v)$, the ball $B$ centered on $v$ and with radius $R=d(v)$ is browsed. The thickness $T$ of these neighboring voxels $w$ is set to $max(T(w),R)$.
Finally, the thickness map is multiplied by 2 to obtain the largest ball diameter.

Note:
Reference:
T.Hildebrand, P.R egsegger. "A New Method for the Model-Independent Assessment of Thickness in Three-Dimensional Images". Journal of Microscopy, vol. 187, pp 67-75, Jan 1997.

See also

Function Syntax

This function returns outputMapImage.
// Function prototype
std::shared_ptr< iolink::ImageView > localThicknessMap3d( std::shared_ptr< iolink::ImageView > inputBinaryImage, LocalThicknessMap3d::Precision precision, std::shared_ptr< iolink::ImageView > outputMapImage = nullptr );
This function returns outputMapImage.
// Function prototype.
local_thickness_map_3d(input_binary_image: idt.ImageType,
                       precision: LocalThicknessMap3d.Precision = LocalThicknessMap3d.Precision.FASTER,
                       output_map_image: idt.ImageType = None) -> idt.ImageType
This function returns outputMapImage.
// Function prototype.
public static IOLink.ImageView
LocalThicknessMap3d( IOLink.ImageView inputBinaryImage,
                     LocalThicknessMap3d.Precision precision = ImageDev.LocalThicknessMap3d.Precision.FASTER,
                     IOLink.ImageView outputMapImage = null );

Class Syntax

Parameters

Parameter Name Description Type Supported Values Default Value
input
inputBinaryImage
The binary input image. Image Binary nullptr
input
precision
The precision of the thickness computation.
FASTER The operation is computed with the precise mode.
PRECISE The operation is computed with the fast mode.
Enumeration FASTER
output
outputMapImage
The thickness map output image. Its dimensions are forced to the same values as the input. Its data type is 32-bit floating point. Image nullptr
Parameter Name Description Type Supported Values Default Value
input
input_binary_image
The binary input image. image Binary None
input
precision
The precision of the thickness computation.
FASTER The operation is computed with the precise mode.
PRECISE The operation is computed with the fast mode.
enumeration FASTER
output
output_map_image
The thickness map output image. Its dimensions are forced to the same values as the input. Its data type is 32-bit floating point. image None
Parameter Name Description Type Supported Values Default Value
input
inputBinaryImage
The binary input image. Image Binary null
input
precision
The precision of the thickness computation.
FASTER The operation is computed with the precise mode.
PRECISE The operation is computed with the fast mode.
Enumeration FASTER
output
outputMapImage
The thickness map output image. Its dimensions are forced to the same values as the input. Its data type is 32-bit floating point. Image null

Object Examples

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

LocalThicknessMap3d localThicknessMap3dAlgo;
localThicknessMap3dAlgo.setInputBinaryImage( foam_sep );
localThicknessMap3dAlgo.setPrecision( LocalThicknessMap3d::Precision::FASTER );
localThicknessMap3dAlgo.execute();

std::cout << "outputMapImage:" << localThicknessMap3dAlgo.outputMapImage()->toString();
foam_sep = imagedev.read_vip_image(imagedev_data.get_image_path("foam_sep.vip"))

local_thickness_map_3d_algo = imagedev.LocalThicknessMap3d()
local_thickness_map_3d_algo.input_binary_image = foam_sep
local_thickness_map_3d_algo.precision = imagedev.LocalThicknessMap3d.FASTER
local_thickness_map_3d_algo.execute()

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

LocalThicknessMap3d localThicknessMap3dAlgo = new LocalThicknessMap3d
{
    inputBinaryImage = foam_sep,
    precision = LocalThicknessMap3d.Precision.FASTER
};
localThicknessMap3dAlgo.Execute();

Console.WriteLine( "outputMapImage:" + localThicknessMap3dAlgo.outputMapImage.ToString() );

Function Examples

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

auto result = localThicknessMap3d( foam_sep, LocalThicknessMap3d::Precision::FASTER );

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

result = imagedev.local_thickness_map_3d(foam_sep, imagedev.LocalThicknessMap3d.FASTER)

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

IOLink.ImageView result = Processing.LocalThicknessMap3d( foam_sep, LocalThicknessMap3d.Precision.FASTER );

Console.WriteLine( "outputMapImage:" + result.ToString() );