Class AlgorithmExtractSurface

java.lang.Object
java.lang.Thread
gov.nih.mipav.model.algorithms.AlgorithmBase
gov.nih.mipav.model.algorithms.AlgorithmExtractSurface
All Implemented Interfaces:
ActionListener, WindowListener, Runnable, EventListener

public class AlgorithmExtractSurface extends AlgorithmBase
Extracts a surface using Tetrahedron Extraction. Triangle decimation can be invoked to reduce triangle count. The decimation algorithm produces a continious level of detail (clod) structure that can be used to optimize the the visualization of the surface. The input to this algorithm is typically a mask image where 0 = background and 100 = object (i.e. interior to a VOI). The mask image is then blurred slightly and the level (50) is extracted. A greyscale image may also be input and a surface is extracted given a level. The steps are:
  1. Build mask image of VOI (i.e. all point interior to VOI are set to 100. All points exterior are = 0.
  2. Blur mask image if not greyscale
  3. Extract level surface at 50 or user defined level
  4. Save surface ( ".sur")
  5. If decimate then decimate surface and save (".sur")
Version:
0.1 June, 2001
Author:
Matthew J. McAuliffe, Ph.D., David H. Eberly, Ph.D. wrote all the extraction and decimation code found in the SurfaceExtraction, SurfaceDecimation and associated classes, with a little input from Matt with speed and memory optimizations
See Also:
  • Field Details

    • VOI_MODE

      public static final int VOI_MODE
      Extract surface from VOI.
      See Also:
    • MASK_MODE

      public static final int MASK_MODE
      Extract surface from mask image.
      See Also:
    • LEVEL_MODE

      public static final int LEVEL_MODE
      Extract surface based on intensity level.
      See Also:
    • blurFlag

      private final boolean blurFlag
      If true then the input image is blurred slightly.
    • blurSigma

      private float blurSigma
      The amount to blur to smooth surface.
    • decimateFlag

      private final boolean decimateFlag
      If true then the extracted surface is decimated into a continuous level of detail surface (clod).
    • level

      private final float level
      Indicates level surface to be extracted.
    • maskImage

      private ModelImage maskImage
      Mask image to extract surface from.
    • mode

      private final int mode
      Indicates mode - VOI, LEVELSET, or MASK.
    • surfaceFileName

      private String surfaceFileName
      Path and name of extracted surface file. ".sur" will be appended if necessary.
    • surfaceArea

      private float[] surfaceArea
  • Constructor Details

    • AlgorithmExtractSurface

      public AlgorithmExtractSurface(ModelImage image, float level, int mode, boolean decFlag, boolean blurFlag, float sigma, String fileName, float[] surfaceArea)
      Creates a new AlgorithmExtractSurface object.
      Parameters:
      image - mask image or grayscale where a level surface is to be extracted
      level - indicates level surface to be extraced
      mode - Indicates mode - VOI, LEVELSET, or MASK.
      decFlag - indicates whether or not the decimation into a CLOD should take place.
      blurFlag - if true then the input image is blurred slightly
      sigma - the amount to blur the image
      fileName - path and name of extracted surface file. ".sur" will be appended if necessary.
      surfaceArea - If not null the computed surface area will be returned
  • 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
    • extractSurface

      private void extractSurface()
      Extracts a surface, in the form of triangles, from an image.
    • init

      private void init()
      DOCUMENT ME!
    • ComputeSurfaceArea

      public float ComputeSurfaceArea(WildMagic.LibGraphics.SceneGraph.TriMesh m_kMesh)
      Calculate the surface mesh area. Each surface mesh is composed of triangles. Calculate the surface area from the summation of the each triangle area. Based on the Area by Stokes' Theorem. Area(S) = 1/2 * Normal dot ( Sum from i = 0 to n-1 of ( V1 cross V2) ) ==> Area(S) = 1/2 * ( Sum from i = 0 to n-1 of ( Normal dot ( V1 cross V2) ) )
      Returns:
      float