Class AlgorithmGrayScaleMorphology3D

  • All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.event.WindowListener, java.lang.Runnable, java.util.EventListener

    public class AlgorithmGrayScaleMorphology3D
    extends AlgorithmBase
    Three-Dimensional mathematical morphology class applied to Gray scale images.
    Version:
    1.0 Aug 1999
    Author:
    Matthew J. McAuliffe, Ph.D.
    • Field Detail

      • PARTICLE_ANALYSIS

        public static final int PARTICLE_ANALYSIS
        DOCUMENT ME!
        See Also:
        Constant Field Values
      • DISTANCE_MAP_FOR_SHAPE_INTERPOLATION

        public static final int DISTANCE_MAP_FOR_SHAPE_INTERPOLATION
        DOCUMENT ME!
        See Also:
        Constant Field Values
      • MORPHOLOGICAL_LAPLACIAN

        public static final int MORPHOLOGICAL_LAPLACIAN
        See Also:
        Constant Field Values
      • MORPHOLOGICAL_RECONSTRUCTION_BY_DILATION

        public static final int MORPHOLOGICAL_RECONSTRUCTION_BY_DILATION
        See Also:
        Constant Field Values
      • MORPHOLOGICAL_RECONSTRUCTION_BY_EROSION

        public static final int MORPHOLOGICAL_RECONSTRUCTION_BY_EROSION
        See Also:
        Constant Field Values
      • OPENING_BY_RECONSTRUCTION

        public static final int OPENING_BY_RECONSTRUCTION
        See Also:
        Constant Field Values
      • CLOSING_BY_RECONSTRUCTION

        public static final int CLOSING_BY_RECONSTRUCTION
        See Also:
        Constant Field Values
      • OUTER_EDGING

        public static final int OUTER_EDGING
        Parameter used in Find_Edges. Indicates that the edge extracted is formed from the voxels that are directly adjacient to the ojbect.
        See Also:
        Constant Field Values
      • INNER_EDGING

        public static final int INNER_EDGING
        Parameter used in Find_Edges. Indicates that the edge extracted is formed from the voxels that overlay the edge voxels of the object.
        See Also:
        Constant Field Values
      • algorithm

        private int algorithm
        algorithm type (i.e. erode, dilate)
      • edgingType

        private int edgingType
        Edge type.
      • entireImage

        private boolean entireImage
        if true, indicates that the VOIs should NOT be used and that entire image should be processed.
      • imgBuffer

        private double[] imgBuffer
        imgBuffer that hold voxel value for the 3D slices.
      • imgBuffer2

        private double[] imgBuffer2
      • maskBuffer

        private double[] maskBuffer
      • iterationsD

        private int iterationsD
        Dilation iteration times.
      • iterationsE

        private int iterationsE
        Erosion iteration times.
      • kDimXY

        private int kDimXY
        Kernel dimension.
      • kDimZ

        private int kDimZ
        DOCUMENT ME!
      • kernel

        private java.util.BitSet kernel
        Kernel for both erosion and dilation.
      • kernelType

        private int kernelType
        kernel size (i.e. connectedness)
      • min

        private int min
        maximum, minimum size of objects.
      • max

        private int max
        maximum, minimum size of objects.
      • numPruningPixels

        private int numPruningPixels
        Number pixels to prune.
      • pixDist

        private float pixDist
      • processBuffer

        private double[] processBuffer
        intermediate processing buffer, same size with imgBuffer.
      • sphereDiameter

        private float sphereDiameter
        kernel diameter.
      • maskImage

        private ModelImage maskImage
        Used in geodesic dilation, geodesic erosion, morphological reconstruction by dilation, and morphological reconstruction by erosion Not used in opening by reconstruction and closing by reconstruction
      • geodesicSize

        private int geodesicSize
        Size of geodesic erosions and dilations
    • Constructor Detail

      • AlgorithmGrayScaleMorphology3D

        public AlgorithmGrayScaleMorphology3D​(ModelImage srcImg,
                                              int kernelType,
                                              float sphereDiameter,
                                              int method,
                                              int iterD,
                                              int iterE,
                                              int pruningPix,
                                              int edType,
                                              boolean entireImage)
        Creates a new AlgorithmMorphology3D object.
        Parameters:
        srcImg - source image model
        kernelType - kernel size (i.e. connectedness)
        sphereDiameter - only valid if kernelType == SIZED_SPHERE and represents the width of a circle in the resolution of the image
        method - setup the algorithm method (i.e. erode)
        iterD - number of times to dilate
        iterE - number of times to erode
        pruningPix - the number of pixels to prune
        edType - the type of edging to perform (inner or outer)
        entireImage - flag that indicates if the VOIs should NOT be used and entire image should be processed
      • AlgorithmGrayScaleMorphology3D

        public AlgorithmGrayScaleMorphology3D​(ModelImage srcImg,
                                              ModelImage destImg,
                                              int kernelType,
                                              float sphereDiameter,
                                              int method,
                                              int iterD,
                                              int iterE,
                                              int pruningPix,
                                              int edType,
                                              boolean entireImage)
        Creates a new AlgorithmMorphology3D object.
        Parameters:
        srcImg - source image model
        destImg - destination image model
        kernelType - kernel size (i.e. connectedness)
        sphereDiameter - only valid if kernelType == SIZED_SPHERE and represents the width of a circle in the resolution of the image
        method - setup the algorithm method (i.e. erode)
        iterD - number of times to dilate
        iterE - number of times to erode
        pruningPix - the number of pixels to prune
        edType - the type of edging to perform (inner or outer)
        entireImage - flag that indicates if the VOIs should NOT be used and entire image should be processed
      • AlgorithmGrayScaleMorphology3D

        public AlgorithmGrayScaleMorphology3D​(ModelImage srcImg,
                                              ModelImage destImg,
                                              ModelImage maskImage,
                                              int kernelType,
                                              float sphereDiameter,
                                              int method,
                                              int geodesicSize,
                                              int iterD,
                                              int iterE,
                                              boolean entireImage)
        Creates a new AlgorithmGrayScaleMorphology3D object.
        Parameters:
        srcImg - source image model
        kernelType - dilation kernel size (i.e. connectedness)
        sphereDiameter - dilation only valid if kernelType == SIZED_SPHERE and represents the width of a circle in the resolution of the image
        method - setup the algorithm method (i.e. erode, dilate)
        geodesicSize -
        iterD - number of times to dilate
        iterE - number of times to erode
        entireImage - if true, indicates that the VOIs should NOT be used and that entire image should be processed
    • Method Detail

      • finalize

        public void finalize()
        Prepares this class for destruction.
        Overrides:
        finalize in class AlgorithmBase
      • setAlgorithm

        public void setAlgorithm​(int method)
        Sets the algorithm type (i.e. erode, dilate)
        Parameters:
        method - algorithm type
      • setImage

        public void setImage​(ModelImage img)
        Sets new source image.
        Parameters:
        img - image model
      • setKernel

        public void setKernel​(java.util.BitSet kernel,
                              int dimXY,
                              int dimZ)
        Sets user defined square kernels.
        Parameters:
        kernel - user defined kernel
        dimXY - length of x and y dimensions
        dimZ - length of z dimension
      • setMinMax

        public void setMinMax​(int _min,
                              int _max)
        Sets the bounds of object size used to delete objects.
        Parameters:
        _min - minimum size of objects
        _max - maximum size of objects
      • setPixDistance

        public void setPixDistance​(float dist)
        Used in the ultimate erode function to remove all eroded points less than the distance specified in pixel units.
        Parameters:
        dist - distance in pixels.
      • showKernel

        public void showKernel()
        Display kernel as 1 or 0 in the debug window.
      • dilate

        private void dilate​(boolean returnFlag,
                            int iters)
        Dilates an image using the indicated kernel and the indicated number of iterations. The grayscale dilation is the maximum value over the reflected kernel region. For symmetric kernels the reflected kernel is the same as the kernel.
        Parameters:
        returnFlag - if true then this operation is a step in the morph process (i.e. close)
        iters - number of dilation iterations
      • geodesicDilation

        private void geodesicDilation​(boolean returnFlag,
                                      int geodesicSize)
        geodesic dilation of a boolean, unsigned byte or unsigned short image using the indicated kernel and the indicated number of executions.
        Parameters:
        returnFlag - if true then this operation is a step in the morph process (i.e. close)
        geodesicSize -
      • geodesicErosion

        private void geodesicErosion​(boolean returnFlag,
                                     int geodesicSize)
        geodesic erosion of a boolean, unsigned byte or unsigned short image using the indicated kernel and the indicated number of executions.
        Parameters:
        returnFlag - if true then this operation is a step in the morph process (i.e. close)
        geodesicSize -
      • erode

        private void erode​(boolean returnFlag,
                           int iters)
        Erodes an image using the indicated kernel and the indicated number of iterations. The grayscale erosion is the minimum value over the kernel region.
        Parameters:
        returnFlag - if true then this operation is a step in the morph process (i.e. open)
        iters - number of erosion iterations
      • makeKernel

        private void makeKernel​(int kernelType)
        Generates a kernel of the indicated type.
        Parameters:
        kernelType - type of kernel to be generated.
      • makeSphericalKernel

        private void makeSphericalKernel()
        Generates a spherical kernel of a specific diameter. Most importantly it normalizes the kernel based on the resolution in the z-dimension. This in effect accounts for the anisotrophy in the z-dimension of typical 3D medical images. The resultant data is stored in the kernel class variable.