Class JDialogExtractBrain

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

public class JDialogExtractBrain extends JDialogScriptableBase implements AlgorithmInterface, ActionDiscovery, ScriptableActionInterface
DOCUMENT ME!
Version:
1.0 July 17, 2000
Author:
Matthew J. McAuliffe, Ph.D.
See Also:
  • Field Details

    • serialVersionUID

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

      private float aboveMedian
      The factor above which second stage edge erosion occurs.
    • centerOfMass

      private WildMagic.LibFoundation.Mathematics.Vector3f centerOfMass
      The volume's center of mass computed from computeCenter(ModelImage, int, boolean)
    • depth

      private int depth
      The maximum depth within the brain's surface to sample image intensities, by default set to 5.
    • depthTF

      private JTextField depthTF
      Field for entering the maximum depth. The dialog box suggests a value between 3 - 19 and requires a value from 3 - 33.
    • erosionLabel

      private JLabel erosionLabel
      Label for the percentage entered for second stage edge erosion.
    • erosionTF

      private JTextField erosionTF
      Defines the allowable percentage for edge intensity values ub second stage edge erosion, default is 50 percent.
    • extractBrainAlgo

      private AlgorithmBrainExtractor extractBrainAlgo
      Algorithm used for brain extraction.
    • extractToPaint

      private boolean extractToPaint
      When true, mask of extracted brain is painted over the source image.
    • extractToPaintCheckBox

      private JCheckBox extractToPaintCheckBox
      When checked, mask of extracted brain is painted over the source image.
    • image

      private ModelImage image
      Source image for extracting brain, default image is null.
    • imageRatio

      private float imageRatio
      Image influence ratio for controlling the sampling depth used to calculate intensity extrema, by default set to .1.
    • imageRatioTF

      private JTextField imageRatioTF
      Field for entering the image influence ratio. The dialog box requires that a value from .01 - .51 be entered.
    • initCenterPoint

      private WildMagic.LibFoundation.Mathematics.Vector3f initCenterPoint
      Either the volume's center of mass or a user indicated point depending on the value of useCenterOfMass.
    • initCenterX

      private float initCenterX
      Used to denote the brain's center of mass y-coordinate. By default set to zero.
    • initCenterXLabel

      private JLabel initCenterXLabel
      Label for the x-coordinate of the user-defined center.
    • initCenterXTF

      private JTextField initCenterXTF
      An optional field for denoting a desired initial x-corrdinate for the mesh. Editable if and only if useCenterOfMass is set to false
    • initCenterY

      private float initCenterY
      Used to denote the brain's center of mass y-coordinate. By default set to zero.
    • initCenterYLabel

      private JLabel initCenterYLabel
      Label for the y-coordinate of the user-defined center.
    • initCenterYTF

      private JTextField initCenterYTF
      An optional field for denoting a desired initial y-corrdinate for the mesh. Editable if and only if useCenterOfMass is set to false
    • initCenterZ

      private float initCenterZ
      Used to denote the brain's center of mass y-coordinate. By default set to zero.
    • initCenterZLabel

      private JLabel initCenterZLabel
      Label for the z-coordinate of the user-defined center.
    • initCenterZTF

      private JTextField initCenterZTF
      An optional field for denoting a desired initial z-corrdinate for the mesh. Editable if and only if useCenterOfMass is set to false
    • justEllipse

      private boolean justEllipse
      When true, image mask is set to the initial ellipsoid approximation of the brain calculated from the volume's center of mass.
    • justInitEllipsoidCheckbox

      private JCheckBox justInitEllipsoidCheckbox
      When checked, justEllipse is set to true.
    • nIterations

      private int nIterations
      Number of surface evolutions to perform, by default set to 500.
    • nIterationsTF

      private JTextField nIterationsTF
      Field for inputting the number of surface evolutions to perform. This requests, but does not require, a value from 100 - 2000
    • orientation

      private int orientation
      Orientation value corresponding to not the value of AlgorithmBrainExtractor.SAT_COR
    • orientCheckbox

      private JCheckBox orientCheckbox
      When checked, denotes that the images orientation does not correspond to AlgorithmBrainExtractor.SAT_COR
    • secondStageCheckBox

      private JCheckBox secondStageCheckBox
      Initially unchecked, determined whether this algorithm performs secondStageErosion
    • secondStageErosion

      private boolean secondStageErosion
      When true, sets edge values which are greater than the median intensity by a user-defined factor of aboveMedian to zero.
    • stiffness

      private float stiffness
      Allows for variable motion of the mesh in the surface normal direction, default value of .15
    • stiffnessTF

      private JTextField stiffnessTF
      Field for specifing stiffness of the mesh. The dialog box suggests, but does not require that a value between .01 and .5 entered.
    • titles

      private String[] titles
      DOCUMENT ME!
    • useCenterOfMass

      private boolean useCenterOfMass
      By default true, parameter indicates that the center position of the brain should be calculated using JDialogExtractBrain.computeCenter(ModelImage, int, boolean)
    • useCenterOfMassCheckBox

      private JCheckBox useCenterOfMassCheckBox
      By default checked, yields a true value for useCenterOfMass
    • userInterface

      private ViewUserInterface userInterface
      The user interface for this dialog box.
    • useSphere

      private boolean useSphere
      When true estimates that boundary of the VOI by a sphere.
    • useSphereCheckbox

      private JCheckBox useSphereCheckbox
      Initially not checked, estimates the boundary by a sphere rather than an ellipse.
  • Constructor Details

    • JDialogExtractBrain

      public JDialogExtractBrain()
      Empty constructor needed for dynamic instantiation (used during scripting).
    • JDialogExtractBrain

      public JDialogExtractBrain(Frame theParentFrame, ModelImage im)
      Sets the appropriate variables. Does not actually create a dialog that is visible because no user input is necessary at present.
      Parameters:
      theParentFrame - Parent frame.
      im - Source image.
  • Method Details

    • computeCenter

      public static final WildMagic.LibFoundation.Mathematics.Vector3f computeCenter(ModelImage img, int orientation, boolean sphereFlag)
      Calculate the center of the sphere / ellipsoid.
      Parameters:
      img - the image to get the center of
      orientation - the orientation of the image
      sphereFlag - whether to find the center for a sphere or an ellipsoid
      Returns:
      the starting center point
    • histogramAnalysis

      public static final int histogramAnalysis(int[] imgBuffer)
      Analyze the histogram of the 10-bit binned 3D MRI. The function computes a minimum threshold, a maximum threshold, and a background threshold that are used in the image term of the surface evolution. A brightness threshold is also computed that is used for determining the initial ellipsoid that approximates the brain surface.
      Parameters:
      imgBuffer - image data buffer normalized to 0 - 1023
      Returns:
      the current background threshold, which may have been changed during the histogram analysis
    • actionPerformed

      public void actionPerformed(ActionEvent event)
      Presently only the script function calls this method. When the script sends this dialog the action command, this method calls run.
      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 display the result image and/or clean up.
      Specified by:
      algorithmPerformed in interface AlgorithmInterface
      Parameters:
      algorithm - Algorithm that caused the event.
    • itemStateChanged

      public void itemStateChanged(ItemEvent event)
      Initial center position checkbox listener.
      Specified by:
      itemStateChanged in interface ItemListener
      Overrides:
      itemStateChanged in class JDialogBase
      Parameters:
      event - checkbox event
    • setAboveMedian

      public void setAboveMedian(float aboveMedian)
      Set the factor above the median at which second stage erosion occurs.
      Parameters:
      aboveMedian - DOCUMENT ME!
    • setExtractToPaint

      public void setExtractToPaint(boolean extractToPaint)
      Sets whether or not to stop segmentation at paint.
      Parameters:
      extractToPaint - .
    • setImageRatio

      public void setImageRatio(float ratio)
      Sets the image influence ratio.
      Parameters:
      ratio - the image influence ratio
    • setIterations

      public void setIterations(int nIter)
      Sets the number of iterations.
      Parameters:
      nIter - the number of iterations to do
    • setJustEllipse

      public void setJustEllipse(boolean justEllipse)
      Accessor that sets whether of not initial ellipsoid result is displayed.
      Parameters:
      justEllipse - DOCUMENT ME!
    • setMaxDepth

      public void setMaxDepth(int iMaxDepth)
      Set the maximum depth that is part of the image term in the surface evolution.
      Parameters:
      iMaxDepth - the new maximum depth
    • setOrientation

      public void setOrientation(int orient)
      Accessor that sets the orientation flag.
      Parameters:
      orient - DOCUMENT ME!
    • setSecondStageErosion

      public void setSecondStageErosion(boolean secondStageErosion)
      Sets whether or not the second stage performing edge erosion occurs.
      Parameters:
      secondStageErosion - if true erode boundary to clean up some.
    • setStiffness

      public void setStiffness(float fStiffness)
      Set the stiffness of the mesh that is part of the surface normal term in the surface evolution.
      Parameters:
      fStiffness - the new stiffness
    • setUseSphere

      public void setUseSphere(boolean useSphere)
      Sets whether or not to use only an estimate of sphere to nitialize the boundary evolution.
      Parameters:
      useSphere - if true estimate boundary using sphere model. If false the initial boundary is estimated using an ellipsoid, which is more difficult and error prone.
    • callAlgorithm

      protected void callAlgorithm()
      Calls the algorithm.
      Specified by:
      callAlgorithm in class JDialogScriptableBase
    • 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
    • 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.
    • init

      private void init()
      Makes the GUI elements of the dialog. Not called at present because it is not necessary.
    • 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.
    • getActionMetadata

      public ActionMetadata getActionMetadata()
      Return meta-information about this discoverable action for categorization and labeling purposes.
      Specified by:
      getActionMetadata in interface ActionDiscovery
      Returns:
      Metadata for this action.
    • createInputParameters

      public ParameterTable createInputParameters()
      Returns a table listing the input parameters of this algorithm (which should match up with the scripting parameters used in setGUIFromParams()).
      Specified by:
      createInputParameters in interface ActionDiscovery
      Returns:
      A parameter table listing the inputs of this algorithm.
    • createOutputParameters

      public ParameterTable createOutputParameters()
      Returns a table listing the output parameters of this algorithm (usually just labels used to obtain output image names later).
      Specified by:
      createOutputParameters in interface ActionDiscovery
      Returns:
      A parameter table listing the outputs of this algorithm.
    • getOutputImageName

      public String getOutputImageName(String imageParamName)
      Returns the name of an image output by this algorithm, the image returned depends on the parameter label given (which can be used to retrieve the image object from the image registry).
      Specified by:
      getOutputImageName in interface ActionDiscovery
      Parameters:
      imageParamName - The output image parameter label for which to get the image name.
      Returns:
      The image name of the requested output image parameter label.
    • isActionComplete

      public boolean isActionComplete()
      Returns whether the action has successfully completed its execution.
      Specified by:
      isActionComplete in interface ActionDiscovery
      Returns:
      True, if the action is complete. False, if the action failed or is still running.