Class JDialogProstateSPIEcancerChallengeNIH_train_ced_ext

  • All Implemented Interfaces:
    AlgorithmInterface, 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 JDialogProstateSPIEcancerChallengeNIH_train_ced_ext
    extends JDialogBase
    implements AlgorithmInterface
    The MICCAI ProstateX challenge is rolling over to prostate segmentation, which includes the whole prostate(wp) and central gland(cg). This is the first attempt to try the wp and cg segmentation. Combining the CED and MRI slices to train one HED deep learning model. This version is the one helps us to win MICCAI ProstateX 2017 challenge for the third place. I implemented this version a week before the challenge submission deadline. The training date includes NIH data + ProstateX training data. For the challenge, we apply this class to central gland segmentation for the challenge testing data. steps: 1) From MRI image, generates the binary mask images. 2) Normalize the MRI image slices within range [0, 1000]. 3) Generate the CED slices 3) save MRI and CED slices with corresponding binary masks in png format.
    Author:
    Ruida Cheng
    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 Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void actionPerformed​(java.awt.event.ActionEvent event)
      Dialog local actionPerformed handler.
      void algorithmPerformed​(AlgorithmBase algorithm)
      This method is required if the AlgorithmPerformed interface is implemented.
      void buildKeyImagePanel()
      Panel contains both the 3D image dir and saved 2D slices atlas dir.
      private ModelImage calculateCoherenceEnhancingDiffusion​(ModelImage inImage)  
      ModelImage calculateTransform​(ModelImage image)  
      ModelImage calculateTransform_resol_fix​(ModelImage image)  
      void callAlgorithm()
      Driver function to read image and VOIs, and convert each 3D image to 2D slices.
      private ModelImage cropImage​(ModelImage image)  
      private ModelImage cropImage_ext​(ModelImage image)  
      void disposeLocal()
      dispose memory
      void disposeMemory()  
      ModelImage histoEqual​(ModelImage image)  
      void init()
      Initial panel
      void loadFiles()
      load image files and voi files
      static void pause()  
      void readFile()  
      private void readKeyImageDir()
      Read 3D images atlas directory.
      private void recordSaveImageDir()
      Let user specify the saved 2D slices atlas, record the save directory.
      void runCED()  
      void runCED_ext()  
      void runCrop_ext()  
      void runMask()  
      void runMask_ext()  
      void runScaleIntensity()  
      void runScaleIntensity_ext()  
      void runTransform_ext()  
      void saveImages​(java.lang.String key, int[] index, java.lang.String folderName, java.util.Hashtable<java.lang.String,​ModelImage> whichTable)  
      void saveImages_ext​(java.lang.String key, int[] index, java.lang.String folderName, java.util.Hashtable<java.lang.String,​ModelImage> whichTable)  
      void saveImagesTest​(java.lang.String key, int[] index, java.lang.String folderName)  
      private void savePNGfile​(java.lang.String dirName, java.lang.String fileName, ModelImage srcImage, float minIntensity, float maxIntensity, boolean isMask)  
      private void savePNGfile​(java.lang.String dirName, java.lang.String fileName, ModelImage srcImage, float minIntensity, float maxIntensity, int xDim, int yDim, boolean isMask)  
      ModelImage scaleIntensity​(ModelImage image)  
      void train()  
      private void traverse_DicomLayer​(java.io.File lastLayer, java.lang.String hashID)  
      private void traverse_firstLayer_noCoil​(java.io.File firstDir, java.lang.String child)  
      private void traverse_layer_modified​(java.io.File dir)  
      private void traverse_Layer_noCoil​(java.io.File dir)  
      private void traverse_secondLayer_noCoil​(java.io.File firstLayer, java.lang.String hashID)  
      private void traverse_secondLayer_noCoil_ext​(java.io.File firstLayer, java.lang.String hashID)  
      • 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

      • labelKeyImage

        private javax.swing.JLabel labelKeyImage
        key image directory.
      • textFieldKeyImage

        private javax.swing.JTextField textFieldKeyImage
      • buttonKeyImage

        private javax.swing.JButton buttonKeyImage
      • imageSelectionPanel

        private javax.swing.JPanel imageSelectionPanel
      • labelSaveImage

        private javax.swing.JLabel labelSaveImage
        saved 2D slices atlas dir.
      • textFieldSaveImage

        private javax.swing.JTextField textFieldSaveImage
      • buttonSaveImage

        private javax.swing.JButton buttonSaveImage
      • saveImageChooser

        private javax.swing.JFileChooser saveImageChooser
      • saveImageDirectory

        private java.lang.String saveImageDirectory
      • imageNameHashtable

        java.util.Hashtable<java.lang.String,​java.util.Vector<java.lang.String>> imageNameHashtable
      • voiNameHashtableWp

        java.util.Hashtable<java.lang.String,​java.util.Vector<java.lang.String>> voiNameHashtableWp
      • voiNameHashtableCg

        java.util.Hashtable<java.lang.String,​java.util.Vector<java.lang.String>> voiNameHashtableCg
      • imageNameHashtable_ext

        java.util.Hashtable<java.lang.String,​java.util.Vector<java.lang.String>> imageNameHashtable_ext
      • voiNameHashtableWp_ext

        java.util.Hashtable<java.lang.String,​java.util.Vector<java.lang.String>> voiNameHashtableWp_ext
      • voiNameHashtableCg_ext

        java.util.Hashtable<java.lang.String,​java.util.Vector<java.lang.String>> voiNameHashtableCg_ext
      • imageHashtableWp_ext

        java.util.Hashtable<java.lang.String,​ModelImage> imageHashtableWp_ext
      • imageHashtableCg_ext

        java.util.Hashtable<java.lang.String,​ModelImage> imageHashtableCg_ext
      • cedTable_ext

        java.util.Hashtable<java.lang.String,​ModelImage> cedTable_ext
      • voiTable_ext

        java.util.Hashtable<java.lang.String,​ModelImage> voiTable_ext
      • imageHashtableWp

        java.util.Hashtable<java.lang.String,​ModelImage> imageHashtableWp
      • imageHashtableCg

        java.util.Hashtable<java.lang.String,​ModelImage> imageHashtableCg
      • cedTable

        java.util.Hashtable<java.lang.String,​ModelImage> cedTable
      • voiTable

        java.util.Hashtable<java.lang.String,​ModelImage> voiTable
      • scaleImageTable

        java.util.Hashtable<java.lang.String,​ModelImage> scaleImageTable
      • scaleCedTable

        java.util.Hashtable<java.lang.String,​ModelImage> scaleCedTable
      • scaleVoiTable

        java.util.Hashtable<java.lang.String,​ModelImage> scaleVoiTable
      • scaleImageTable_ext

        java.util.Hashtable<java.lang.String,​ModelImage> scaleImageTable_ext
      • scaleIntensityTable_ext

        java.util.Hashtable<java.lang.String,​ModelImage> scaleIntensityTable_ext
      • scaleCedTable_ext

        java.util.Hashtable<java.lang.String,​ModelImage> scaleCedTable_ext
      • scaleVoiTable_ext

        java.util.Hashtable<java.lang.String,​ModelImage> scaleVoiTable_ext
      • transformTable_ext

        java.util.Hashtable<java.lang.String,​ModelImage> transformTable_ext
      • voiHashtable

        java.util.Hashtable<java.lang.String,​VOI> voiHashtable
      • cropTable_ext

        java.util.Hashtable<java.lang.String,​ModelImage> cropTable_ext
      • cropVoiTable_ext

        java.util.Hashtable<java.lang.String,​ModelImage> cropVoiTable_ext
      • scaleIntensityTable

        java.util.Hashtable<java.lang.String,​ModelImage> scaleIntensityTable
    • Constructor Detail

      • JDialogProstateSPIEcancerChallengeNIH_train_ced_ext

        public JDialogProstateSPIEcancerChallengeNIH_train_ced_ext​(java.awt.Frame theParentFrame)
        Constructor.
        Parameters:
        theParentFrame -
    • Method Detail

      • disposeLocal

        public void disposeLocal()
        dispose memory
      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent event)
        Dialog local actionPerformed handler.
        Specified by:
        actionPerformed in interface java.awt.event.ActionListener
        Overrides:
        actionPerformed in class JDialogBase
      • recordSaveImageDir

        private void recordSaveImageDir()
        Let user specify the saved 2D slices atlas, record the save directory.
      • readKeyImageDir

        private void readKeyImageDir()
        Read 3D images atlas directory.
      • traverse_layer_modified

        private void traverse_layer_modified​(java.io.File dir)
      • traverse_Layer_noCoil

        private void traverse_Layer_noCoil​(java.io.File dir)
      • traverse_firstLayer_noCoil

        private void traverse_firstLayer_noCoil​(java.io.File firstDir,
                                                java.lang.String child)
      • traverse_secondLayer_noCoil_ext

        private void traverse_secondLayer_noCoil_ext​(java.io.File firstLayer,
                                                     java.lang.String hashID)
      • traverse_secondLayer_noCoil

        private void traverse_secondLayer_noCoil​(java.io.File firstLayer,
                                                 java.lang.String hashID)
      • traverse_DicomLayer

        private void traverse_DicomLayer​(java.io.File lastLayer,
                                         java.lang.String hashID)
      • 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.
      • callAlgorithm

        public void callAlgorithm()
        Driver function to read image and VOIs, and convert each 3D image to 2D slices.
      • disposeMemory

        public void disposeMemory()
      • runTransform_ext

        public void runTransform_ext()
      • runCrop_ext

        public void runCrop_ext()
      • runScaleIntensity_ext

        public void runScaleIntensity_ext()
      • runCED_ext

        public void runCED_ext()
      • runScaleIntensity

        public void runScaleIntensity()
      • runMask

        public void runMask()
      • runMask_ext

        public void runMask_ext()
      • runCED

        public void runCED()
      • calculateCoherenceEnhancingDiffusion

        private ModelImage calculateCoherenceEnhancingDiffusion​(ModelImage inImage)
      • train

        public void train()
      • savePNGfile

        private void savePNGfile​(java.lang.String dirName,
                                 java.lang.String fileName,
                                 ModelImage srcImage,
                                 float minIntensity,
                                 float maxIntensity,
                                 int xDim,
                                 int yDim,
                                 boolean isMask)
      • saveImages

        public void saveImages​(java.lang.String key,
                               int[] index,
                               java.lang.String folderName,
                               java.util.Hashtable<java.lang.String,​ModelImage> whichTable)
      • saveImages_ext

        public void saveImages_ext​(java.lang.String key,
                                   int[] index,
                                   java.lang.String folderName,
                                   java.util.Hashtable<java.lang.String,​ModelImage> whichTable)
      • loadFiles

        public void loadFiles()
        load image files and voi files
      • readFile

        public void readFile()
      • pause

        public static void pause()
      • init

        public void init()
        Initial panel
      • buildKeyImagePanel

        public void buildKeyImagePanel()
        Panel contains both the 3D image dir and saved 2D slices atlas dir.
      • calculateTransform_resol_fix

        public ModelImage calculateTransform_resol_fix​(ModelImage image)
      • saveImagesTest

        public void saveImagesTest​(java.lang.String key,
                                   int[] index,
                                   java.lang.String folderName)
      • savePNGfile

        private void savePNGfile​(java.lang.String dirName,
                                 java.lang.String fileName,
                                 ModelImage srcImage,
                                 float minIntensity,
                                 float maxIntensity,
                                 boolean isMask)