Class DentalPanoramicExtractor


  • public class DentalPanoramicExtractor
    extends Inventor
    Class extracting a dental panoramic volume. This class provides a set of functions for extracting a dental panoramic from a CBCT volume. The full workflow for extracting a panoramic is :
    • 1. Segmentation of the teeth in order to get the weight volume used at the fitting step. This segmentation can be done either automatically or using a predefined threshold.
    • 2. Extraction of an arch curve which is a list of vertices modeling the dental arch in a 2D plane. This step is applied by the getArchCurve function.
    • 3. Extrusion of this curve to build an initial mesh. This step is applied by the getArchMesh function.
    • 4. Fitting of this mesh on a weight volume representing the center of the teeth for building an arch mesh. This step is applied by the getArchMesh function.
    • 5. Extraction of a panoramic volume which is an unfolded volume resampling the input volume. This step is applied by the getPanoramicVolume function.
    • 6. Extraction of a panoramic image which is a projection of the panoramic volume. This step is applied by the getPanoramicImage function.

    Each step can be computed by calling the corresponding function. When one of these functions is called, the previous steps are automatically applied if:

    • They have not been yet computed.
    • At least one of their parameters has been modified. Consequently, after having set an input volume the getPanoramicImage function can be directly called to generate a 2D panoramic. Then all steps are automatically performed. For example, if the same function is called again after having changed the search length, only steps 4 to 6 are performed again.

    By default the arch curve and arch volume are automatically computed.The arch curve can be user defined by using the setArchCurve function. In this case the arch mesh will be computed by extruding and fitting this user curve.

    The arch mesh can be also user defined by using the setArchMesh function. In this case the arch mesh will not be computed from the arch curve.

    Important notices

    • This class is dedicated to be used on CBCT data whose voxel size are expressed in millimeters.
    • Default segmentation parameters are preset to work with voxel intensities in Hounsfield Unit but can be adapted to different calibration thanks to the threshold parameters.

    • Constructor Detail

      • DentalPanoramicExtractor

        public DentalPanoramicExtractor​(SoImageDataAdapter inImage)
        Constructor. inImage: The input 3D CBCT image of the head (LP orientation).
    • Method Detail

      • setInputVolume

        public void setInputVolume​(SoImageDataAdapter inImage)
        Set the input 3D CBCT image of the head (LP orientation). If the input volume is set to null, the whole cache data is cleared.
      • getSubsamplingFactor

        public int getSubsamplingFactor()
        Get the down sampling factor to compute the segmentation volume used for fitting the arch mesh. 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. Default value is 4.
      • getOutsideArchCurve

        public java.util.ArrayList<SbVec3f> getOutsideArchCurve()
        Get the list of vertices forming the outside border of the search area for fitting the arch mesh. This curve is computed by shifting the arch curve outside the jaws to the search distance. Curve vertices are expressed in mm. If the arch curve is not up to date, it is automatically computed first.
      • getArchCurve

        public java.util.ArrayList<SbVec3f> getArchCurve()
        Get the list of vertices forming the dental arch which is used to compute the arch mesh. Curve vertices are expressed in mm. Default value is an empty vector which means that the curve is automatically computed.
      • getAutoThreshold

        public boolean getAutoThreshold()
        Returns True if the segmentation of the teeth is automatic. Returns False if it applies the threshold given by the getThreshold function. Default value is True.
      • getInsideArchCurve

        public java.util.ArrayList<SbVec3f> getInsideArchCurve()
        Get the list of vertices forming the inside border of the search area for fitting the arch mesh. This curve is computed by shifting the arch curve inside the jaws to the search distance. Curve vertices are expressed in mm. If the arch curve is not up to date, it is automatically computed first.
      • setSubsamplingFactor

        public void setSubsamplingFactor​(int name_2)
        Set the down sampling factor to compute the segmentation volume used for fitting the arch mesh. 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. Default value is 4.
      • setSearchLength

        public void setSearchLength​(double name_7)
        Set the search distance where the initial mesh is fitted to the arch curve. This distance is expressed in mm. Default value is 15.
      • getPanoramicImage

        public SoImageDataAdapter getPanoramicImage()
        Get the output panoramic image representing unfolded jaws. The width of this volume is defined by arch curve length. Its height is defined by the sum of the lower and upper extrusion lengths.
      • getArchMesh

        public SbStructuredQuadrilateralMesh getArchMesh()
        Get the mesh forming the surface to unfold in the output volume. Mesh vertices are expressed in mm. Default value is NULL which means that the mesh is automatically computed.
      • getInputVolume

        public SoImageDataAdapter getInputVolume()
        Get the input 3D CBCT image of the head (LP orientation).
      • getPanoramicVolume

        public SoImageDataAdapter getPanoramicVolume()
        Get the output panoramic volume given by unfolding the surface defined by the arch mesh. The width of this volume is defined by arch curve length. Its height is defined by the sum of the lower and upper extrusion lengths. Its thickness is defined by the volume thickness.
      • getSlabThickness

        public int getSlabThickness()
        Get the number of slices of the panoramic volume used to build the output panoramic image. Default value is 3.
      • getExtrusionDown

        public double getExtrusionDown()
        Get the extrusion length of dental arch curve in the direction of head towards feet. This length is expressed in mm. Default value is 30.
      • setSlabThickness

        public void setSlabThickness​(int name_9)
        Set the number of slices of the panoramic volume used to build the output panoramic image. Default value is 3.
      • setExtrusionUp

        public void setExtrusionUp​(double name_5)
        Set the extrusion length of dental arch curve in the direction of feet towards head. This length is expressed in mm. Default value is 30.
      • getVolumeThickness

        public double getVolumeThickness()
        Get the thickness of the output panoramic volume. This thickness is expressed in mm. Default value is 15.
      • getSearchLength

        public double getSearchLength()
        Get the search distance where the initial mesh is fitted to the arch curve. This distance is expressed in mm. Default value is 15.
      • setVolumeThickness

        public void setVolumeThickness​(double name_8)
        Set the thickness of the output panoramic volume. This thickness is expressed in mm. Default value is 15.
      • setExtrusionDown

        public void setExtrusionDown​(double name_6)
        Set the extrusion length of dental arch curve in the direction of head towards feet. This length is expressed in mm. Default value is 30.
      • setArchCurve

        public void setArchCurve​(java.util.Collection<SbVec3f> name_11)
        Set the list of vertices forming the dental arch which is used to compute the arch mesh. Curve vertices are expressed in mm. Default value is an empty vector which means that the curve is automatically computed.
      • getThreshold

        public double getThreshold()
        Get the threshold value used when the automatic threshold is disabled. Default value is 1000.
      • setArchMesh

        public void setArchMesh​(SbStructuredQuadrilateralMesh name_12)
        Set the mesh forming the surface to unfold in the output volume. Mesh vertices are expressed in mm. Default value is NULL which means that the mesh is automatically computed.
      • setAutoThreshold

        public void setAutoThreshold​(boolean name_3)
        Set True to perform an automatic segmentation of the teeth. Set False to apply the threshold defined by the setThreshold function. Default value is True.
      • getSharpeningFactor

        public double getSharpeningFactor()
        Get the sharpening factor applied on the panoramic image. The higher this factor is, the sharper the output image is. If it is equal to 0, no sharpening is applied. Default value is 4.
      • getExtrusionUp

        public double getExtrusionUp()
        Get the extrusion length of dental arch curve in the direction of feet towards head. This length is expressed in mm. Default value is 30.
      • setSharpeningFactor

        public void setSharpeningFactor​(double name_10)
        Set the sharpening factor applied on the panoramic image. The higher this factor is, the sharper the output image is. If it is equal to 0, no sharpening is applied. Default value is 4.
      • setThreshold

        public void setThreshold​(double name_4)
        Set the threshold value used when the automatic threshold is disabled. Default value is 1000.