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() );

