Class JDialogExtractSurfaceCubes

  • All Implemented Interfaces:
    AlgorithmInterface, ScriptableActionInterface, DialogDefaultsInterface, java.awt.event.ActionListener, java.awt.event.FocusListener, java.awt.event.ItemListener, java.awt.event.WindowListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.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:
    AlgorithmExtractSurface, ModelSurfaceExtractor, ModelSurfaceDecimator, Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JDialog

        javax.swing.JDialog.AccessibleJDialog
      • Nested classes/interfaces inherited from class java.awt.Dialog

        java.awt.Dialog.AccessibleAWTDialog, java.awt.Dialog.ModalExclusionType, java.awt.Dialog.ModalityType
      • Nested classes/interfaces inherited from class java.awt.Window

        java.awt.Window.AccessibleAWTWindow, java.awt.Window.Type
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void actionPerformed​(java.awt.event.ActionEvent event)
      Closes dialog box when the OK button is pressed and calls the algorithm.
      void algorithmPerformed​(AlgorithmBase algorithm)
      This method is required if the AlgorithmPerformed interface is implemented.
      private void attachSurface​(ModelImage img)
      Attach the generated surface to an image.
      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.
      private void init()
      Initializes the GUI by creating the components, placing them in the dialog, and displaying them.
      private void initSubset()
      Initializes the GUI by creating the components, placing them in the dialog, and displaying them.
      void itemStateChanged​(java.awt.event.ItemEvent event)
      Sets text field enabled or disabled depending on source.
      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.
      void setBlurValue​(float sigma)
      Accessor that sets the blurring amount.
      void setDecimationFlag​(boolean flag)
      Accessor that sets the decimation flag.
      void setFileName​(java.lang.String name)
      Accessor that sets the file name.
      protected void setGUIFromParams()
      Set the dialog GUI using the script parameters while running this algorithm as part of a script.
      void setImage​(ModelImage im)
      Accessor that sets the image where the surface is to be extracted.
      void setLevel​(int intenLevel)
      Accessor that sets the intensity level that defines the surface that is to be extracted.
      void setMode​(int mode)
      Accessor that sets the mode (VOI_MODE, MASK_MODE, or LEVEL_MODE).
      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).
      private boolean setVariables()
      Use the GUI results to set up the variables needed to run the algorithm.
      protected void storeParamsFromGUI()
      Record the parameters just used to run this algorithm in a script.
      • Methods inherited from class javax.swing.JDialog

        addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
      • Methods inherited from class java.awt.Dialog

        addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setBackground, setModal, setModalityType, setOpacity, setResizable, setShape, setTitle, setUndecorated, show, toBack
      • Methods inherited from class java.awt.Window

        addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, toFront
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class java.awt.Component

        action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • serialVersionUID

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

        private javax.swing.JCheckBox blurCheck
        DOCUMENT ME!
      • blurFlag

        private boolean blurFlag
        DOCUMENT ME!
      • useOCLCheckbox

        private javax.swing.JCheckBox useOCLCheckbox
      • useOCL

        private boolean useOCL
        DOCUMENT ME!
      • blurTF

        private javax.swing.JTextField blurTF
        DOCUMENT ME!
      • blurValue

        private float blurValue
        DOCUMENT ME!
      • decimateFlag

        private boolean decimateFlag
        DOCUMENT ME!
      • decimateSurfaceCB

        private javax.swing.JCheckBox decimateSurfaceCB
        DOCUMENT ME!
      • fileButton

        private javax.swing.JButton fileButton
        DOCUMENT ME!
      • fileName

        private java.lang.String fileName
        DOCUMENT ME!
      • fileTF

        private javax.swing.JTextField fileTF
        DOCUMENT ME!
      • fileTypeList

        private javax.swing.JComboBox fileTypeList
        surface file format list.
      • fileTypes

        private java.lang.String[] fileTypes
        surface file formats.
      • intensityLevelRB

        private javax.swing.JRadioButton intensityLevelRB
        DOCUMENT ME!
      • intensityTF

        private javax.swing.JTextField intensityTF
        DOCUMENT ME!
      • level

        private int level
        DOCUMENT ME!
      • maskImageRB

        private javax.swing.JRadioButton maskImageRB
        DOCUMENT ME!
      • mode

        private int mode
        DOCUMENT ME!
      • VOIRegionsRB

        private javax.swing.JRadioButton VOIRegionsRB
        DOCUMENT ME!
      • disposeImage

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

      • JDialogExtractSurfaceCubes

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

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

        public JDialogExtractSurfaceCubes​(javax.swing.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 Detail

      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent event)
        Closes dialog box when the OK button is pressed and calls the algorithm.
        Specified by:
        actionPerformed in interface java.awt.event.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.
      • 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​(java.awt.event.ItemEvent event)
        Sets text field enabled or disabled depending on source.
        Specified by:
        itemStateChanged in interface java.awt.event.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​(java.lang.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.