ImageDev

DentalWallSegmentation3d

Transforms a grayscale CBCT image into a binary image where every pixel identified as belonging to the dental wall is set to 1 and all the others are set to 0.

Access to parameter description

For an introduction to dental panoramics: section Dental applications

This algorithm performs a rough segmentation of the teeth and the jaws contained in a cone beam computed tomography (CBCT) image.
The binarization step can be either performed automatically, or by using a user-defined threshold value.
A sub sampling factor can be applied to reduce the computation time during the subsequent steps of the workflow.



Figure 2. Dental wall segmentation: (left) the initial CBCT and (right) the segmentation result

Important notices:
See also

Function Syntax

This function returns outputBinaryImage.
// Function prototype
std::shared_ptr< iolink::ImageView > dentalWallSegmentation3d( std::shared_ptr< iolink::ImageView > inputImage, bool autoThresholdMode, uint32_t samplingFactor, double threshold, std::shared_ptr< iolink::ImageView > outputBinaryImage = NULL );
This function returns outputBinaryImage.
// Function prototype.
dental_wall_segmentation_3d( input_image,
                             auto_threshold_mode = True,
                             sampling_factor = 4,
                             threshold = 1000,
                             output_binary_image = None )
This function returns outputBinaryImage.
// Function prototype.
public static IOLink.ImageView
DentalWallSegmentation3d( IOLink.ImageView inputImage,
                          bool autoThresholdMode = true,
                          UInt32 samplingFactor = 4,
                          double threshold = 1000,
                          IOLink.ImageView outputBinaryImage = null );

Class Syntax

Parameters

Class Name DentalWallSegmentation3d

Parameter Name Description Type Supported Values Default Value
input
inputImage
The input 3D CBCT image of the head (LP orientation). Image Grayscale nullptr
input
autoThresholdMode
The way to binarize the data. Performs an automatic segmentation of the teeth is equals true, applies the threshold defined by the thresholdRange parameter otherwise. Bool true
input
threshold
The low and high threshold levels. This parameter is ignored when the automatic threshold mode is enabled. Float64 Any value 1000
input
samplingFactor
The down sampling factor to compute the segmentation volume used for extracting the dental wall.
The higher this factor is, the less precise the fitted mesh is and the faster the computation is. If it is equal to 1, no down sampling is applied.
UInt32 Any value 4
output
outputBinaryImage
The output binary image representing the extracted dental wall. Its dimensions are equal to the input image dimensions divided by the sampling factor. Image nullptr

Object Examples

std::shared_ptr< iolink::ImageView > dental_cbct = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "dental_cbct.am" );

DentalWallSegmentation3d dentalWallSegmentation3dAlgo;
dentalWallSegmentation3dAlgo.setInputImage( dental_cbct );
dentalWallSegmentation3dAlgo.setAutoThresholdMode( true );
dentalWallSegmentation3dAlgo.setSamplingFactor( 4 );
dentalWallSegmentation3dAlgo.setThreshold( 580 );
dentalWallSegmentation3dAlgo.execute();

std::cout << "outputBinaryImage:" << dentalWallSegmentation3dAlgo.outputBinaryImage()->toString();
dental_cbct = ioformat.read_image(imagedev_data.get_image_path("dental_cbct.am"))

dental_wall_segmentation_3d_algo = imagedev.DentalWallSegmentation3d()
dental_wall_segmentation_3d_algo.input_image = dental_cbct
dental_wall_segmentation_3d_algo.auto_threshold_mode = True
dental_wall_segmentation_3d_algo.sampling_factor = 4
dental_wall_segmentation_3d_algo.threshold = 580
dental_wall_segmentation_3d_algo.execute()

print( "output_binary_image:", str( dental_wall_segmentation_3d_algo.output_binary_image ) )
ImageView dental_cbct = ViewIO.ReadImage( @"Data/images/dental_cbct.am" );

DentalWallSegmentation3d dentalWallSegmentation3dAlgo = new DentalWallSegmentation3d
{
    inputImage = dental_cbct,
    autoThresholdMode = true,
    samplingFactor = 4,
    threshold = 580
};
dentalWallSegmentation3dAlgo.Execute();

Console.WriteLine( "outputBinaryImage:" + dentalWallSegmentation3dAlgo.outputBinaryImage.ToString() );

Function Examples

std::shared_ptr< iolink::ImageView > dental_cbct = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "dental_cbct.am" );

auto result = dentalWallSegmentation3d( dental_cbct, true, 4, 580 );

std::cout << "outputBinaryImage:" << result->toString();
dental_cbct = ioformat.read_image(imagedev_data.get_image_path("dental_cbct.am"))

result = imagedev.dental_wall_segmentation_3d( dental_cbct, True, 4, 580 )

print( "output_binary_image:", str( result ) )
ImageView dental_cbct = ViewIO.ReadImage( @"Data/images/dental_cbct.am" );

IOLink.ImageView result = Processing.DentalWallSegmentation3d( dental_cbct, true, 4, 580 );

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