Class JDialogConstrainedOAR3D

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

public class JDialogConstrainedOAR3D extends JDialogScriptableBase implements AlgorithmInterface
Dialog to get user input, then call algorithm RegistrationOAR3D. The user must designate a reference image, a type of cost function, the degrees of freedom used in the registration, and the range and rate of the coarse and fine samples. These are set to defaults most likely to give a fast and accurate registration. The user may also select weighted images to discount parts of the reference and input images in the registration. These must be the same size as their respective originals - i.e., the reference weight image must be the same size as the reference image. The user can select to display the registered image. Regardless of whether this is selected, the matrix will be stored in a file in the user's working directory and also in the original image's transformation matrix.
Author:
Neva Cherniavsky
See Also:
  • Field Details

    • serialVersionUID

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

      private JDialog advancedDialog
      Variables for Advanced Settings dialog.
    • bracketBoundText

      private JTextField bracketBoundText
      DOCUMENT ME!
    • maxIterationsText

      private JTextField maxIterationsText
      DOCUMENT ME!
    • numMinText

      private JTextField numMinText
      DOCUMENT ME!
    • buttonWeightInput

      private JButton buttonWeightInput
      DOCUMENT ME!
    • buttonWeightRef

      private JButton buttonWeightRef
      DOCUMENT ME!
    • calcCOG

      private boolean calcCOG
      DOCUMENT ME!
    • calcCOGCheckbox

      private JCheckBox calcCOGCheckbox
      DOCUMENT ME!
    • coarsePanelX

      private JPanel coarsePanelX
      DOCUMENT ME!
    • coarsePanelY

      private JPanel coarsePanelY
      DOCUMENT ME!
    • coarsePanelZ

      private JPanel coarsePanelZ
      DOCUMENT ME!
    • comboBoxCostFunct

      private JComboBox comboBoxCostFunct
      DOCUMENT ME!
    • comboBoxSearchAlgo

      private JComboBox comboBoxSearchAlgo
    • comboBoxDOF

      private JComboBox comboBoxDOF
      DOCUMENT ME!
    • comboBoxImage

      private JComboBox comboBoxImage
      DOCUMENT ME!
    • comboBoxInterp

      private JComboBox comboBoxInterp
      DOCUMENT ME!
    • comboBoxInterp2

      private JComboBox comboBoxInterp2
      DOCUMENT ME!
    • cost

      private int cost
      DOCUMENT ME!
    • interp

      private int interp
      DOCUMENT ME!
    • interp2

      private int interp2
      DOCUMENT ME!
    • DOF

      private int DOF
      DOCUMENT ME!
    • costName

      private String costName
      DOCUMENT ME!
    • displayTransform

      private boolean displayTransform
      DOCUMENT ME!
    • doColor

      private boolean doColor
      DOCUMENT ME!
    • doSubsample

      private boolean doSubsample
      DOCUMENT ME!
    • fastMode

      private boolean fastMode
      DOCUMENT ME!
    • fastModeCheckbox

      private JCheckBox fastModeCheckbox
      DOCUMENT ME!
    • fileNameWRef

      private String fileNameWRef
      DOCUMENT ME!
    • directoryWRef

      private String directoryWRef
      DOCUMENT ME!
    • fileNameWInput

      private String fileNameWInput
      DOCUMENT ME!
    • directoryWInput

      private String directoryWInput
      DOCUMENT ME!
    • gbc

      private GridBagConstraints gbc
      DOCUMENT ME!
    • inputWeightImage

      private ModelImage inputWeightImage
      DOCUMENT ME!
    • refWeightImage

      private ModelImage refWeightImage
      DOCUMENT ME!
    • labelInterp2

      private JLabel labelInterp2
      DOCUMENT ME!
    • labelTranslateRangeX

      private JLabel labelTranslateRangeX
      DOCUMENT ME!
    • labelTranslateRangeY

      private JLabel labelTranslateRangeY
      DOCUMENT ME!
    • labelTranslateRangeZ

      private JLabel labelTranslateRangeZ
      DOCUMENT ME!
    • limitTranslation

      private boolean limitTranslation
      DOCUMENT ME!
    • oneTransLimit

      private boolean oneTransLimit
      DOCUMENT ME!
    • limitTranslationCheckbox

      private JCheckBox limitTranslationCheckbox
      DOCUMENT ME!
    • matchImage

      private ModelImage matchImage
      DOCUMENT ME!
    • maxIterations_def

      private int maxIterations_def
      DOCUMENT ME!
    • bracketBound_def

      private int bracketBound_def
      DOCUMENT ME!
    • numMinima_def

      private int numMinima_def
      DOCUMENT ME!
    • maxIterations

      private int maxIterations
      DOCUMENT ME!
    • bracketBound

      private int bracketBound
      DOCUMENT ME!
    • maxLimits

      private float[][] maxLimits
      when done debugging: private boolean limitTranslation = false, oneTransLimit = false;.
    • maxOfMinResol

      private boolean maxOfMinResol
      DOCUMENT ME!
    • maxTransTextX

      private JTextField maxTransTextX
      DOCUMENT ME!
    • maxTransTextY

      private JTextField maxTransTextY
      DOCUMENT ME!
    • maxTransTextZ

      private JTextField maxTransTextZ
      DOCUMENT ME!
    • minMaxCheckbox

      private JCheckBox minMaxCheckbox
      DOCUMENT ME!
    • minTransTextX

      private JTextField minTransTextX
      DOCUMENT ME!
    • minTransTextY

      private JTextField minTransTextY
      DOCUMENT ME!
    • minTransTextZ

      private JTextField minTransTextZ
      DOCUMENT ME!
    • mmLabelX

      private JLabel mmLabelX
      DOCUMENT ME!
    • mmLabelY

      private JLabel mmLabelY
      DOCUMENT ME!
    • mmLabelZ

      private JLabel mmLabelZ
      DOCUMENT ME!
    • noneRadio

      private JRadioButton noneRadio
      DOCUMENT ME!
    • numberCoarseTextX

      private JTextField numberCoarseTextX
      DOCUMENT ME!
    • numberCoarseTextY

      private JTextField numberCoarseTextY
      DOCUMENT ME!
    • numberCoarseTextZ

      private JTextField numberCoarseTextZ
      DOCUMENT ME!
    • numCoarseX

      private int numCoarseX
      DOCUMENT ME!
    • numCoarseY

      private int numCoarseY
      DOCUMENT ME!
    • numCoarseZ

      private int numCoarseZ
      DOCUMENT ME!
    • numMinima

      private int numMinima
      DOCUMENT ME!
    • refImage

      private ModelImage refImage
      DOCUMENT ME!
    • reg3E

      DOCUMENT ME!
    • reg3

    • resultImage

      private ModelImage resultImage
      DOCUMENT ME!
    • rotateBeginTextX

      private JTextField rotateBeginTextX
      DOCUMENT ME!
    • rotateBeginTextY

      private JTextField rotateBeginTextY
      DOCUMENT ME!
    • rotateBeginTextZ

      private JTextField rotateBeginTextZ
      DOCUMENT ME!
    • rotateBeginX

      private float rotateBeginX
      private JTextField fineRateTextX, fineRateTextY, fineRateTextZ;.
    • rotateEndX

      private float rotateEndX
      private JTextField fineRateTextX, fineRateTextY, fineRateTextZ;.
    • rotateRangeX

      private float rotateRangeX
      private JTextField fineRateTextX, fineRateTextY, fineRateTextZ;.
    • rotateBeginY

      private float rotateBeginY
      DOCUMENT ME!
    • rotateEndY

      private float rotateEndY
      DOCUMENT ME!
    • rotateRangeY

      private float rotateRangeY
      DOCUMENT ME!
    • rotateBeginZ

      private float rotateBeginZ
      DOCUMENT ME!
    • rotateEndZ

      private float rotateEndZ
      DOCUMENT ME!
    • rotateRangeZ

      private float rotateRangeZ
      DOCUMENT ME!
    • rotateEndTextX

      private JTextField rotateEndTextX
      DOCUMENT ME!
    • rotateEndTextY

      private JTextField rotateEndTextY
      DOCUMENT ME!
    • rotateEndTextZ

      private JTextField rotateEndTextZ
      DOCUMENT ME!
    • rotatePanel

      private JPanel rotatePanel
      Variables for Rotation and Translation bounds.
    • rotateRangePanelX

      private JPanel rotateRangePanelX
      DOCUMENT ME!
    • rotateRangePanelY

      private JPanel rotateRangePanelY
      DOCUMENT ME!
    • rotateRangePanelZ

      private JPanel rotateRangePanelZ
      DOCUMENT ME!
    • sampleCheckbox

      private JCheckBox sampleCheckbox
      DOCUMENT ME!
    • textInput

      private JTextField textInput
      DOCUMENT ME!
    • textRef

      private JTextField textRef
      DOCUMENT ME!
    • toLabelX

      private JLabel toLabelX
      DOCUMENT ME!
    • toLabelY

      private JLabel toLabelY
      DOCUMENT ME!
    • toLabelZ

      private JLabel toLabelZ
      DOCUMENT ME!
    • transformCheckbox

      private JCheckBox transformCheckbox
      DOCUMENT ME!
    • translatePanel

      private JPanel translatePanel
      DOCUMENT ME!
    • translateRangePanelX

      private JPanel translateRangePanelX
      private JPanel finePanelX, finePanelY, finePanelZ;.
    • translateRangePanelY

      private JPanel translateRangePanelY
      private JPanel finePanelX, finePanelY, finePanelZ;.
    • translateRangePanelZ

      private JPanel translateRangePanelZ
      private JPanel finePanelX, finePanelY, finePanelZ;.
    • transLimits

      private float[][] transLimits
      DOCUMENT ME!
    • UI

      private ViewUserInterface UI
      DOCUMENT ME!
    • universalRotationCheckbox

      private JCheckBox universalRotationCheckbox
      DOCUMENT ME!
    • universalTranslationCheckbox

      private JCheckBox universalTranslationCheckbox
      DOCUMENT ME!
    • voiRadio

      private JRadioButton voiRadio
      DOCUMENT ME!
    • voisOnly

      private boolean voisOnly
      DOCUMENT ME!
    • weighted

      private boolean weighted
      DOCUMENT ME!
    • weightRadio

      private JRadioButton weightRadio
      DOCUMENT ME!
    • xRRadio

      private JRadioButton xRRadio
      DOCUMENT ME!
    • yRRadio

      private JRadioButton yRRadio
      DOCUMENT ME!
    • zRRadio

      private JRadioButton zRRadio
      DOCUMENT ME!
    • xRSelected

      private boolean xRSelected
      DOCUMENT ME!
    • yRSelected

      private boolean yRSelected
      DOCUMENT ME!
    • outOfBoundsLabel

      private JLabel outOfBoundsLabel
    • outOfBoundsComboBox

      private JComboBox outOfBoundsComboBox
    • valueLabel

      private JLabel valueLabel
    • valueText

      private JTextField valueText
    • imageMin

      private double imageMin
    • imageMax

      private double imageMax
    • dataType

      private int dataType
    • outOfBoundsIndex

      private int outOfBoundsIndex
      Tells how to select fill value for out of bounds data 0 for image minimum 1 for NaN for float, zero otherwise. 2 for user defined 3 for image maximum
    • fillValue

      private float fillValue
    • matrixLabel

      private JLabel matrixLabel
    • matrixComboBox

      private JComboBox matrixComboBox
    • matrixDirectory

      private String matrixDirectory
    • userDirectoryLabel

      private JLabel userDirectoryLabel
    • userDirectoryText

      private JTextField userDirectoryText
    • useELSUNC

      private boolean useELSUNC
  • Constructor Details

    • JDialogConstrainedOAR3D

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

      public JDialogConstrainedOAR3D(Frame theParentFrame, ModelImage im)
      Creates new dialog for user to choose type of linear image registration algorithm to run.
      Parameters:
      theParentFrame - Parent frame.
      im - Source image.
  • Method Details

    • actionPerformed

      public void actionPerformed(ActionEvent event)
      Closes dialog box when the OK button is pressed, sets the variables, 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 complete.
      Specified by:
      algorithmPerformed in interface AlgorithmInterface
      Parameters:
      algorithm - Algorithm that caused the event.
    • getResultImage

      public ModelImage getResultImage()
      Accessor to get the result image.
      Returns:
      Result image.
    • itemStateChanged

      public void itemStateChanged(ItemEvent event)
      Changes the interpolation box to enabled or disabled depending on if the transform box is checked or not.
      Specified by:
      itemStateChanged in interface ItemListener
      Overrides:
      itemStateChanged in class JDialogBase
      Parameters:
      event - Event that triggered this function.
    • setAdvancedSettings

      public void setAdvancedSettings(int bracketBound, int maxIterations, int numMinima)
      Accessor to set the advanced settings.
      Parameters:
      bracketBound - DOCUMENT ME!
      maxIterations - DOCUMENT ME!
      numMinima - DOCUMENT ME!
    • setCalcCOG

      public void setCalcCOG(boolean flag)
      Accessor to set the whether or not to calculate the center of gravity (mass).
      Parameters:
      flag - true then calculate center of gravity (mass).
    • setCoarseBeginX

      public void setCoarseBeginX(float x)
      Accessor to set the coarse sample beginX.
      Parameters:
      x - Coarse beginX
    • setCoarseBeginY

      public void setCoarseBeginY(float y)
      Accessor to set the coarse sample beginY.
      Parameters:
      y - Coarse beginY
    • setCoarseBeginZ

      public void setCoarseBeginZ(float z)
      Accessor to set the coarse sample beginZ.
      Parameters:
      z - Coarse beginZ
    • setCoarseEndX

      public void setCoarseEndX(float x)
      Accessor to set the coarse sample endX.
      Parameters:
      x - Coarse endX
    • setCoarseEndY

      public void setCoarseEndY(float y)
      Accessor to set the coarse sample endY.
      Parameters:
      y - Coarse endY
    • setCoarseEndZ

      public void setCoarseEndZ(float z)
      Accessor to set the coarse sample endZ.
      Parameters:
      z - Coarse endZ
    • setCostChoice

      public void setCostChoice(int x)
      Accessor to set the choice of cost function.
      Parameters:
      x - Cost function.
    • setDisplayTransform

      public void setDisplayTransform(boolean flag)
      Accessor to set the display transform flag.
      Parameters:
      flag - true means display the transformed image.
    • setDOF

      public void setDOF(int x)
      Accessor to set the degrees of freedom.
      Parameters:
      x - Degrees of freedom
    • setFastMode

      public void setFastMode(boolean flag)
      Accessor to set whether or not to execute the fast mode (skip sub sample and goto last final optimization).
      Parameters:
      flag - true then skip to level one (last ) optimization.
    • setInputWeightImage

      public void setInputWeightImage(ModelImage im)
      Accessor to set the input weight image.
      Parameters:
      im - Input weight image.
    • setInterp

      public void setInterp(int x)
      Accessor to set the initial interpolation.
      Parameters:
      x - Interpolation
    • setInterp2

      public void setInterp2(int x)
      Accessor to set the final interpolation.
      Parameters:
      x - Interpolation
    • setMaxOfMinResol

      public void setMaxOfMinResol(boolean flag)
      Accessor to set the maximum resolutions flag.
      Parameters:
      flag - true then use the maximum of minimums of the resolutions of the images.
    • setMaxTx

      public void setMaxTx(float maxX)
      Accessor to set the maximum X translation.
      Parameters:
      maxX - maximum x
    • setMaxTy

      public void setMaxTy(float maxY)
      Accessor to set the maximum Y translation.
      Parameters:
      maxY - maximum y
    • setMaxTz

      public void setMaxTz(float maxZ)
      Accessor to set the maximum Z translation.
      Parameters:
      maxZ - maximum z
    • setMinTx

      public void setMinTx(float minX)
      Accessor to set the minimum X translation.
      Parameters:
      minX - minimum x
    • setMinTy

      public void setMinTy(float minY)
      Accessor to set the minimum Y translation.
      Parameters:
      minY - minimum y
    • setMinTz

      public void setMinTz(float minZ)
      Accessor to set the minimum Z translation.
      Parameters:
      minZ - minimum z
    • setNumCoarseX

      public void setNumCoarseX(int x)
      Accessor to set the coarse sample rateX.
      Parameters:
      x - Coarse rateX
    • setNumCoarseY

      public void setNumCoarseY(int y)
      Accessor to set the coarse sample rateY.
      Parameters:
      y - Coarse rateY
    • setNumCoarseZ

      public void setNumCoarseZ(int z)
      Accessor to set the coarse sample rateZ.
      Parameters:
      z - Coarse rateZ
    • setReferenceImage

      public void setReferenceImage(ModelImage im)
      Accessor to set the reference image.
      Parameters:
      im - Reference image.
    • setReferenceWeightImage

      public void setReferenceWeightImage(ModelImage im)
      Accessor to set the reference weight image.
      Parameters:
      im - Reference weight image.
    • setSubsample

      public void setSubsample(boolean doSubsample)
      Accessor to set whether or not subsampling occurs.
      Parameters:
      doSubsample - DOCUMENT ME!
    • setUseELSUNC

      public void setUseELSUNC(boolean useELSUNC)
      Accessor to set whether to use Powell's algorithm calling Brent's method or ELSUNC for search algorithm
      Parameters:
      useELSUNC -
    • setVoisOnly

      public void setVoisOnly(boolean flag)
      Accessor to set the VOIs only flag.
      Parameters:
      flag - true then only register the parts of the images in the VOIs.
    • setWeighted

      public void setWeighted(boolean flag)
      Accessor to set the weighted images flag.
      Parameters:
      flag - true means there are weighted images.
    • setOutOfBoundsIndex

      public void setOutOfBoundsIndex(int outOfBoundsIndex)
      tells how to select fill value for out of bounds data 0 for image minimum 1 for NaN for float, zero otherwise. 2 for user defined 3 for image max
      Parameters:
      outOfBoundsIndex -
    • setFillValue

      public void setFillValue(float fillValue)
      Accessor to set intensity value for out of bounds data
      Parameters:
      fillValue -
    • setMatrixDirectory

      public void setMatrixDirectory(String matrixDirectory)
      Accessor to set directory in which the matrix file is stored
      Parameters:
      matrixDirectory -
    • callAlgorithm

      protected void callAlgorithm()
      Calls the algorithm with the set-up parameters.
      Specified by:
      callAlgorithm in class JDialogScriptableBase
    • doPostAlgorithmActions

      protected void doPostAlgorithmActions()
      Store the result image in the script runner's image table now that the action execution is finished.
      Overrides:
      doPostAlgorithmActions 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.
    • buildAdvancedDialog

      private JDialog buildAdvancedDialog(int bracketBound, int maxIter, int numMinima, boolean limitTrans, boolean oneTrans)
      Build advanced settings dialog. Returns JDialog.
      Parameters:
      bracketBound - DOCUMENT ME!
      maxIter - DOCUMENT ME!
      numMinima - DOCUMENT ME!
      limitTrans - DOCUMENT ME!
      oneTrans - DOCUMENT ME!
      Returns:
      DOCUMENT ME!
    • buildImgComboBox

      private JComboBox buildImgComboBox(ModelImage image)
      Builds a list of images. Returns combobox.
      Parameters:
      image - DOCUMENT ME!
      Returns:
      Newly created combo box.
    • enableTranslationsYZ

      private void enableTranslationsYZ(boolean state)
      DOCUMENT ME!
      Parameters:
      state - DOCUMENT ME!
    • enableTranslationX

      private void enableTranslationX(boolean state)
      DOCUMENT ME!
      Parameters:
      state - DOCUMENT ME!
    • init

      private void init()
      Initializes the GUI components and displays the dialog.
    • setVariables

      private boolean setVariables()
      Sets the variables needed to call the registration algorithm based on the values entered in the dialog.
      Returns:
      true if the variables are properly set, false otherwise.
    • testType

      private boolean testType(int type, float value)
      Determine if the value is in the image type range and within the float range since AlgorithmTransform does not use double buffers.
      Parameters:
      type - image type
      value - value tested
      Returns:
      true if value is within acceptable range
    • showX

      private void showX()
      DOCUMENT ME!
    • showY

      private void showY()
      DOCUMENT ME!
    • showZ

      private void showZ()
      DOCUMENT ME!