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
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:
- Two modes of computation are available. The fast mode is especially useful when the input image contains some thick structures that are very long to compute. The resulting image is a bit less precise on the object borders. These artifacts are not damaging since the thickness measurement is generally not relevant on object borders.
- This algorithm does not take into account the input image calibration. The output values are systematically indicating diameter in voxel unit.
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 the outputMapImage output parameter.
// Function prototype. std::shared_ptr< iolink::ImageView > localThicknessMap3d( std::shared_ptr< iolink::ImageView > inputBinaryImage, LocalThicknessMap3d::Precision precision, std::shared_ptr< iolink::ImageView > outputMapImage = NULL );
This function returns the outputMapImage output parameter.
// Function prototype. local_thickness_map_3d( input_binary_image, precision = LocalThicknessMap3d.Precision.FASTER, output_map_image = None )
This function returns the outputMapImage output parameter.
// Function prototype. public static IOLink.ImageView LocalThicknessMap3d( IOLink.ImageView inputBinaryImage, LocalThicknessMap3d.Precision precision = ImageDev.LocalThicknessMap3d.Precision.FASTER, IOLink.ImageView outputMapImage = null );
Class Syntax
Parameters
Class Name | LocalThicknessMap3d |
---|
Parameter Name | Description | Type | Supported Values | Default Value | |||||
---|---|---|---|---|---|---|---|---|---|
inputBinaryImage |
The binary input image. | Image | Binary | nullptr | |||||
precision |
The precision of the thickness computation.
|
Enumeration | FASTER | ||||||
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 |
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() );