Class JDialogRegistrationTPSpline

  • 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 JDialogRegistrationTPSpline
    extends JDialogScriptableBase
    implements AlgorithmInterface
    Dialog to get user input Selected image is match image, the image that gets transformed until it is registered to the base image. Thin plate spline algorithm is used for matching.

    The mouse is used to put a set of point VOIs on the base image. Then, the mouse is used to put the same number of point VOIs at the corresponding positions on the match image. For 2D images 3 or more points are required and the algorithm may fail if the points all nearly fall on the same line. For 3D images 4 or more points are required and the algorithm may fail if the points nearly all fall on the same plane. The base image is selected from a combo box containing the names of images other than the selected match image.

    The dimensions or image type of the match image need not be the same as the dimensions or image type of the base image. The registered resultImage will have the same image type as the match image and the same extents as the base image.

    The spline matching points sets are used to obtain spline interpolation coefficients. These spline interpolation coefficents are used to transform all the xorg,yorg grid positions in base image space to xnew, ynew grid positions in match space. Then, at every xorg,yorg grid position in the base space, the program checks to see if the corresponding xnew,ynew grid position in the match space is within the image bounds of the match image. If xnew, ynew is within the match space bounds, then the data value at the xnew,ynew grid position in the match space is assigned to be the registered value at the xorg,yorg position in the base space. Since xnew, ynew is a floating point number and the data in the match image is only contained at integer grid points, interpolation must be used. For a 2D image the data value at xnew,ynew in the match space is obtained by bilinear interpolation from its 4 nearest neighbors. For a 3D image the data value at xnew,ynew in the match space is obtained by trilinear interpolation from its 8 nearest neighbors. If the xnew, ynew is outside the match space bounds, then a zero is assigned to the xorg, yorg position in the base space.

    This software does not yet provide a general coplanar solution for 3D images. However, special handling does exist for the case where the z values of the corresponding point landmarks are identical.

    See Also:
    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.
      protected javax.swing.JPanel buildImagePanel()  
      private javax.swing.JComboBox buildImgComboBox​(ModelImage image)
      Builds a list of images.
      protected javax.swing.JPanel buildOutputPanel()  
      protected void callAlgorithm()
      Runs the algorithm.
      protected void doPostAlgorithmActions()
      Store the result image in the script runner's image table now that the action execution is finished.
      ModelImage getResultImage()
      Gets the result image.
      private void init()
      Initializes GUI components and displays dialog.
      void itemStateChanged​(java.awt.event.ItemEvent event)
      Changes the interpolation box to enabled or disabled depending on if the transform box is checked or not.
      protected void setGUIFromParams()
      Set the dialog GUI using the script parameters while running this algorithm as part of a script.
      void setMatrixDirectory​(java.lang.String matrixDirectory)
      Accessor to set directory in which the matrix file is stored
      void setUse3D​(boolean use3D)  
      private boolean setVariables()
      DOCUMENT ME!
      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
      • baseImage

        private ModelImage baseImage
        DOCUMENT ME!
      • comboBoxImage

        private javax.swing.JComboBox comboBoxImage
        DOCUMENT ME!
      • coplanar

        private boolean coplanar
        DOCUMENT ME!
      • DIM

        private int DIM
        DOCUMENT ME!
      • matchImage

        private ModelImage matchImage
        DOCUMENT ME!
      • resultImage

        private ModelImage resultImage
        DOCUMENT ME!
      • titles

        private java.lang.String[] titles
        DOCUMENT ME!
      • xSource

        private double[] xSource
        DOCUMENT ME!
      • xTar

        private double[] xTar
        DOCUMENT ME!
      • ySource

        private double[] ySource
        DOCUMENT ME!
      • yTar

        private double[] yTar
        DOCUMENT ME!
      • zSource

        private double[] zSource
        DOCUMENT ME!
      • zTar

        private double[] zTar
        DOCUMENT ME!
      • matrixLabel

        private javax.swing.JLabel matrixLabel
      • matrixComboBox

        private javax.swing.JComboBox matrixComboBox
      • matrixDirectory

        private java.lang.String matrixDirectory
      • userDirectoryLabel

        private javax.swing.JLabel userDirectoryLabel
      • userDirectoryText

        private javax.swing.JTextField userDirectoryText
      • twoDButton

        private javax.swing.JRadioButton twoDButton
      • threeDButton

        private javax.swing.JRadioButton threeDButton
      • use3D

        private boolean use3D
    • Constructor Detail

      • JDialogRegistrationTPSpline

        public JDialogRegistrationTPSpline()
        Empty constructor for scripts.
      • JDialogRegistrationTPSpline

        public JDialogRegistrationTPSpline​(java.awt.Frame theParentFrame,
                                           ModelImage im)
        Creates new dialog.
        Parameters:
        theParentFrame - Parent frame
        im - Source image
    • 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.
      • getResultImage

        public ModelImage getResultImage()
        Gets the result image.
        Returns:
        ModelImage result image
      • itemStateChanged

        public void itemStateChanged​(java.awt.event.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 java.awt.event.ItemListener
        Overrides:
        itemStateChanged in class JDialogBase
        Parameters:
        event - Event that triggered this function.
      • 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
      • setMatrixDirectory

        public void setMatrixDirectory​(java.lang.String matrixDirectory)
        Accessor to set directory in which the matrix file is stored
        Parameters:
        matrixDirectory -
      • setUse3D

        public void setUse3D​(boolean use3D)
        Parameters:
        use3D -
      • 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
      • init

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

        protected javax.swing.JPanel buildImagePanel()
      • buildOutputPanel

        protected javax.swing.JPanel buildOutputPanel()
      • buildImgComboBox

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

        private boolean setVariables()
        DOCUMENT ME!
        Returns:
        DOCUMENT ME!