Class JDialogExtractSurfaceCubes

All Implemented Interfaces:
AlgorithmInterface, ScriptableActionInterface, DialogDefaultsInterface, ActionListener, FocusListener, ItemListener, WindowListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, RootPaneContainer, WindowConstants

public class JDialogExtractSurfaceCubes extends JDialogScriptableBase implements AlgorithmInterface
Extracts a surface using Cube 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 SurfaceExtration, SurfaceDecimation and associated classes.
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Use serialVersionUID for interoperability.
      See Also:
    • blurCheck

      private JCheckBox blurCheck
      DOCUMENT ME!
    • blurFlag

      private boolean blurFlag
      DOCUMENT ME!
    • useOCLCheckbox

      private JCheckBox useOCLCheckbox
    • useOCL

      private boolean useOCL
      DOCUMENT ME!
    • blurTF

      private JTextField blurTF
      DOCUMENT ME!
    • blurValue

      private float blurValue
      DOCUMENT ME!
    • decimateFlag

      private boolean decimateFlag
      DOCUMENT ME!
    • decimateSurfaceCB

      private JCheckBox decimateSurfaceCB
      DOCUMENT ME!
    • extractSurAlgo

      private AlgorithmExtractSurfaceCubes extractSurAlgo
      DOCUMENT ME!
    • fileButton

      private JButton fileButton
      DOCUMENT ME!
    • fileName

      private String fileName
      DOCUMENT ME!
    • fileTF

      private JTextField fileTF
      DOCUMENT ME!
    • fileTypeList

      private JComboBox fileTypeList
      surface file format list.
    • fileTypes

      private String[] fileTypes
      surface file formats.
    • image

      private ModelImage image
      DOCUMENT ME!
    • intensityLevelRB

      private JRadioButton intensityLevelRB
      DOCUMENT ME!
    • intensityTF

      private JTextField intensityTF
      DOCUMENT ME!
    • level

      private int level
      DOCUMENT ME!
    • maskImageRB

      private JRadioButton maskImageRB
      DOCUMENT ME!
    • mode

      private int mode
      DOCUMENT ME!
    • userInterface

      private ViewUserInterface userInterface
      DOCUMENT ME!
    • VOIRegionsRB

      private JRadioButton VOIRegionsRB
      DOCUMENT ME!
    • disposeImage

      private boolean disposeImage
      Flag indicates if this object should dispose the input image.
  • Constructor Details

    • JDialogExtractSurfaceCubes

      public JDialogExtractSurfaceCubes()
      Empty constructor needed for dynamic instantiation (during script execution).
    • JDialogExtractSurfaceCubes

      public JDialogExtractSurfaceCubes(JFrame theParentFrame, ModelImage im)
      Create a dialog to set variables to extract surface.
      Parameters:
      theParentFrame - Parent frame.
      im - Source image.
    • JDialogExtractSurfaceCubes

      public JDialogExtractSurfaceCubes(JFrame theParentFrame, ModelImage im, boolean bDisposeImage)
      Creates a subset of the extract surface dialog. The surface is extracted from VOIs, so the option is set as default.
      Parameters:
      theParentFrame -
      im -
      bDisposeImage -
  • Method Details

    • actionPerformed

      public void actionPerformed(ActionEvent event)
      Closes dialog box when the OK button is pressed and calls the algorithm.
      Specified by:
      actionPerformed in interface ActionListener
      Overrides:
      actionPerformed in class JDialogBase
      Parameters:
      event - event that triggers function
    • algorithmPerformed

      public void algorithmPerformed(AlgorithmBase algorithm)
      This method is required if the AlgorithmPerformed interface is implemented. It is called by the algorithms when it has completed or failed to to complete, so that the dialog can be display the result image and/or clean up.
      Specified by:
      algorithmPerformed in interface AlgorithmInterface
      Parameters:
      algorithm - algorithm that caused the event.
    • storeParamsFromGUI

      protected void storeParamsFromGUI() throws ParserException
      Record the parameters just used to run this algorithm in a script.
      Specified by:
      storeParamsFromGUI in class JDialogScriptableBase
      Throws:
      ParserException - If there is a problem creating/recording the new parameters.
    • setGUIFromParams

      protected void setGUIFromParams()
      Set the dialog GUI using the script parameters while running this algorithm as part of a script.
      Specified by:
      setGUIFromParams in class JDialogScriptableBase
    • itemStateChanged

      public void itemStateChanged(ItemEvent event)
      Sets text field enabled or disabled depending on source.
      Specified by:
      itemStateChanged in interface ItemListener
      Overrides:
      itemStateChanged in class JDialogBase
      Parameters:
      event - Event that triggered this method.
    • setBlurFlag

      public void setBlurFlag(boolean flag)
      Accessor that sets the blurring flag (if the surface is generated from a VOI or mask the surface image will need to be blurred by the Extraction algo before the surface mesh is extracted. Typically not required in the level surface of grayscale image is needed.
      Parameters:
      flag - true indicates that the surface image should be blurred
    • setBlurValue

      public void setBlurValue(float sigma)
      Accessor that sets the blurring amount.
      Parameters:
      sigma - the amount of blurring (std. Dev. [0.5 - 5.0]
    • setDecimationFlag

      public void setDecimationFlag(boolean flag)
      Accessor that sets the decimation flag.
      Parameters:
      flag - true indicates that the surface triangle mesh should be decimated
    • setFileName

      public void setFileName(String name)
      Accessor that sets the file name. Only the file name and should end in ".sur"
      Parameters:
      name - name of the file where the surface is to be saved.
    • setImage

      public void setImage(ModelImage im)
      Accessor that sets the image where the surface is to be extracted.
      Parameters:
      im - the image (3D image)
    • setLevel

      public void setLevel(int intenLevel)
      Accessor that sets the intensity level that defines the surface that is to be extracted.
      Parameters:
      intenLevel - defines the level surface
    • setMode

      public void setMode(int mode)
      Accessor that sets the mode (VOI_MODE, MASK_MODE, or LEVEL_MODE).
      Parameters:
      mode - Mode to set to.
    • setUseOCL

      public void setUseOCL(boolean useOCL)
      Accessor that sets whether to use OpenCL processing (may still not be set if it is not supported on the system).
      Parameters:
      useOCL - Whether to try to use OpenCL processing.
    • attachSurface

      private void attachSurface(ModelImage img)
      Attach the generated surface to an image.
      Parameters:
      img - the image to attach the surface to
    • callAlgorithm

      protected void callAlgorithm()
      Once all the necessary variables are set, call the Extract Surface algorithm based on what type of image this is and whether or not there is a separate destination image.
      Specified by:
      callAlgorithm in class JDialogScriptableBase
    • init

      private void init()
      Initializes the GUI by creating the components, placing them in the dialog, and displaying them.
    • initSubset

      private void initSubset()
      Initializes the GUI by creating the components, placing them in the dialog, and displaying them.
    • setVariables

      private boolean setVariables()
      Use the GUI results to set up the variables needed to run the algorithm.
      Returns:
      true if parameters set successfully, false otherwise.