Class AlgorithmGrayScaleMorphology3D

java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.AlgorithmGrayScaleMorphology3D
All Implemented Interfaces:
ActionListener, WindowListener, Runnable, 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 Details

    • ERODE

      public static final int ERODE
      DOCUMENT ME!
      See Also:
    • DILATE

      public static final int DILATE
      DOCUMENT ME!
      See Also:
    • CLOSE

      public static final int CLOSE
      DOCUMENT ME!
      See Also:
    • OPEN

      public static final int OPEN
      DOCUMENT ME!
      See Also:
    • ID_OBJECTS

      public static final int ID_OBJECTS
      DOCUMENT ME!
      See Also:
    • DELETE_OBJECTS

      public static final int DELETE_OBJECTS
      DOCUMENT ME!
      See Also:
    • DISTANCE_MAP

      public static final int DISTANCE_MAP
      DOCUMENT ME!
      See Also:
    • BG_DISTANCE_MAP

      public static final int BG_DISTANCE_MAP
      DOCUMENT ME!
      See Also:
    • ULTIMATE_ERODE

      public static final int ULTIMATE_ERODE
      DOCUMENT ME!
      See Also:
    • PARTICLE_ANALYSIS

      public static final int PARTICLE_ANALYSIS
      DOCUMENT ME!
      See Also:
    • SKELETONIZE

      public static final int SKELETONIZE
      DOCUMENT ME!
      See Also:
    • FIND_EDGES

      public static final int FIND_EDGES
      DOCUMENT ME!
      See Also:
    • FILL_HOLES

      public static final int FILL_HOLES
      DOCUMENT ME!
      See Also:
    • DISTANCE_MAP_FOR_SHAPE_INTERPOLATION

      public static final int DISTANCE_MAP_FOR_SHAPE_INTERPOLATION
      DOCUMENT ME!
      See Also:
    • MORPHOLOGICAL_GRADIENT

      public static final int MORPHOLOGICAL_GRADIENT
      See Also:
    • TOP_HAT

      public static final int TOP_HAT
      See Also:
    • BOTTOM_HAT

      public static final int BOTTOM_HAT
      See Also:
    • MORPHOLOGICAL_LAPLACIAN

      public static final int MORPHOLOGICAL_LAPLACIAN
      See Also:
    • GEODESIC_DILATION

      public static final int GEODESIC_DILATION
      See Also:
    • GEODESIC_EROSION

      public static final int GEODESIC_EROSION
      See Also:
    • MORPHOLOGICAL_RECONSTRUCTION_BY_DILATION

      public static final int MORPHOLOGICAL_RECONSTRUCTION_BY_DILATION
      See Also:
    • MORPHOLOGICAL_RECONSTRUCTION_BY_EROSION

      public static final int MORPHOLOGICAL_RECONSTRUCTION_BY_EROSION
      See Also:
    • OPENING_BY_RECONSTRUCTION

      public static final int OPENING_BY_RECONSTRUCTION
      See Also:
    • CLOSING_BY_RECONSTRUCTION

      public static final int CLOSING_BY_RECONSTRUCTION
      See Also:
    • SIZED_SPHERE

      public static final int SIZED_SPHERE
      DOCUMENT ME!
      See Also:
    • CONNECTED6

      public static final int CONNECTED6
      DOCUMENT ME!
      See Also:
    • CONNECTED24

      public static final int CONNECTED24
      DOCUMENT ME!
      See Also:
    • CONNECTED26

      public static final int CONNECTED26
      See Also:
    • 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:
    • 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:
    • 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 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 Details

    • 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 Details

    • finalize

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

      public void runAlgorithm()
      Starts the program.
      Specified by:
      runAlgorithm 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(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.