Class JDialogProstate2DSlicesAtlasPngConverter3DSurface
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- java.awt.Window
-
- java.awt.Dialog
-
- javax.swing.JDialog
-
- gov.nih.mipav.view.dialogs.JDialogBase
-
- gov.nih.mipav.view.renderer.WildMagic.ProstateFramework.JDialogProstate2DSlicesAtlasPngConverter3DSurface
-
- 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 JDialogProstate2DSlicesAtlasPngConverter3DSurface extends JDialogBase implements AlgorithmInterface
For ISBI 2017 paper: Data given: Dr. Choyke's group gave us the 3D prostate MRI data ( axial, sagittal, coronal images with corresponding 3D stl prostate surfaces. No, ground truth VOIs were given. This class reads the images and stl surfaces, converts 3D surface to VOI contours. And save axial, sagittal, coronal VOIs with corresponding image in .xml file format.- Author:
- Ruida Cheng
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class gov.nih.mipav.view.dialogs.JDialogBase
JDialogBase.CancelAction, JDialogBase.HelpAction, JDialogBase.OKAction
-
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
-
-
Field Summary
Fields Modifier and Type Field Description private javax.swing.JButton
buttonKeyImage
private javax.swing.JButton
buttonSaveImage
(package private) java.util.Hashtable<java.lang.String,java.lang.Integer>
dicomTable
(package private) java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,ModelImage>>
imageHashtable
(package private) java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,java.util.Vector<java.lang.String>>>
imageNameHashtable
private javax.swing.JPanel
imageSelectionPanel
private javax.swing.JLabel
labelKeyImage
key image directory.private javax.swing.JLabel
labelSaveImage
saved 2D slices atlas dir.(package private) java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,ModelImage>>
origImageTable
private javax.swing.JFileChooser
saveImageChooser
private java.lang.String
saveImageDirectory
private static long
serialVersionUID
(package private) java.util.Hashtable<java.lang.String,java.util.Vector<ModelImage>>
srcImageTable
(package private) java.util.Hashtable<java.lang.String,java.util.Vector<VOI>>
srcVOITable
private javax.swing.JTextField
textFieldKeyImage
private javax.swing.JTextField
textFieldSaveImage
private ViewUserInterface
UI
The main user interface.(package private) java.util.Hashtable<java.lang.String,java.util.Vector<VOI>>
voiHashtable
(package private) java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,java.lang.String>>
voiNameHashtable
(package private) java.util.Hashtable<java.lang.String,java.lang.Integer>
voiTable
-
Fields inherited from class gov.nih.mipav.view.dialogs.JDialogBase
applyButton, bar, cancelButton, cancelFlag, closeButton, HELP, helpButton, mainDialogPanel, NEW, OKButton, parentFrame, progressBar, REPLACE, runInSeparateThread, runningScriptFlag, runQuiet, serif12, serif12B, voiManager
-
Fields inherited from class javax.swing.JDialog
accessibleContext, rootPane, rootPaneCheckingEnabled
-
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
-
Constructor Summary
Constructors Constructor Description JDialogProstate2DSlicesAtlasPngConverter3DSurface(java.awt.Frame theParentFrame)
Constructor.
-
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.void
callAlgorithm()
Driver function to read image and VOIs, and convert each 3D image to 2D slices.void
crossValidationTrain()
void
disposeLocal()
dispose memoryvoid
init()
Initial panelvoid
loadFiles()
load image files and voi filesprivate void
loadSTLBinaryMesh(java.io.File file, ModelImage kImage, int imageOrientation)
private void
loadSTLBinaryMesh(java.io.File file, ModelImage kImage, int imageOrientation, java.lang.String hashID)
static void
pause()
void
readFile()
private void
readKeyImageDir()
Read 3D images atlas directory.private void
readSTLBinary(java.io.FileInputStream data, ModelImage kImage, int imageOrientation)
private void
readSTLBinary(java.io.FileInputStream data, ModelImage kImage, int imageOrientation, java.lang.String hashID)
This method read the STL surface file, convert the 3D surface into VOI contours.private void
recordSaveImageDir()
Let user specify the saved 2D slices atlas, record the save directory.void
saveGroundTruth()
void
saveImages(ModelImage image, int[] index, java.lang.String folderName, java.lang.String orientation)
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, int xDim, int yDim, boolean isMask)
void
smoothVOI60(ModelImage maskImage, ModelImage resultImage)
Smooth VOIs to 60 points.private void
traverse_firstLayer(java.io.File firstDir, java.lang.String child)
private void
traverse_Layer(java.io.File dir)
private void
traverse_scanLayer(java.io.File secondLayer, java.lang.String hashID)
private void
traverse_secondLayer(java.io.File firstLayer, java.lang.String hashID)
private void
traverse_T2Layer(java.io.File T2Layer, java.lang.String hashID, java.lang.String orientationLabel)
private void
traverse_T2Layer_deeper(java.io.File T2Layer, java.lang.String hashID, java.lang.String orientationLabel)
private void
traverse_voiLayer(java.io.File secondLayer, java.lang.String hashID)
-
Methods inherited from class gov.nih.mipav.view.dialogs.JDialogBase
buildApplyButton, buildButtons, buildCancelButton, buildCancelButton, buildCloseButton, buildHelpButton, buildImageComboBox, buildOKButton, buildOKButton, buildOKCancelButtons, buildTitledBorder, buildTitledBorder, createLabel, createProgressBar, createProgressBar, createTextField, focusGained, focusLost, getDialogName, isCancelled, isQuietRunning, isRunInSeparateThread, isScriptRunning, itemStateChanged, loadDefaults, loadDefaults, makeImageName, makeString, openNewFrame, saveDefaults, saveDefaults, setLeftHandSystem, setQuietRunning, setScriptRunning, setSeparateThread, setVisible, setVisible, setVisibleMenuBar, setVisibleStandard, setVOIManager, setWCSystem, testParameter, testParameterMin, updateFFTFileInfo, updateFileInfo, updateFileInfoOtherModality, updateFileInfoStatic, updateFileInfoStatic, updateFileTypeInfo, updateFileTypeInfo, windowActivated, windowClosed, windowClosing, windowDeactivated, windowDeiconified, windowIconified, windowOpened
-
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
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
UI
private ViewUserInterface UI
The main user interface.
-
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.Hashtable<java.lang.String,java.util.Vector<java.lang.String>>> imageNameHashtable
-
voiNameHashtable
java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,java.lang.String>> voiNameHashtable
-
imageHashtable
java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,ModelImage>> imageHashtable
-
voiHashtable
java.util.Hashtable<java.lang.String,java.util.Vector<VOI>> voiHashtable
-
srcImageTable
java.util.Hashtable<java.lang.String,java.util.Vector<ModelImage>> srcImageTable
-
srcVOITable
java.util.Hashtable<java.lang.String,java.util.Vector<VOI>> srcVOITable
-
origImageTable
java.util.Hashtable<java.lang.String,java.util.Hashtable<java.lang.String,ModelImage>> origImageTable
-
dicomTable
java.util.Hashtable<java.lang.String,java.lang.Integer> dicomTable
-
voiTable
java.util.Hashtable<java.lang.String,java.lang.Integer> voiTable
-
-
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 interfacejava.awt.event.ActionListener
- Overrides:
actionPerformed
in classJDialogBase
-
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
private void traverse_Layer(java.io.File dir)
-
traverse_firstLayer
private void traverse_firstLayer(java.io.File firstDir, java.lang.String child)
-
traverse_secondLayer
private void traverse_secondLayer(java.io.File firstLayer, java.lang.String hashID)
-
traverse_scanLayer
private void traverse_scanLayer(java.io.File secondLayer, java.lang.String hashID)
-
traverse_T2Layer
private void traverse_T2Layer(java.io.File T2Layer, java.lang.String hashID, java.lang.String orientationLabel)
-
traverse_T2Layer_deeper
private void traverse_T2Layer_deeper(java.io.File T2Layer, java.lang.String hashID, java.lang.String orientationLabel)
-
traverse_voiLayer
private void traverse_voiLayer(java.io.File secondLayer, 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 interfaceAlgorithmInterface
- 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.
-
saveGroundTruth
public void saveGroundTruth()
-
crossValidationTrain
public void crossValidationTrain()
-
saveImages
public void saveImages(ModelImage image, int[] index, java.lang.String folderName, java.lang.String orientation)
-
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, int xDim, int yDim, boolean isMask)
-
smoothVOI60
public void smoothVOI60(ModelImage maskImage, ModelImage resultImage)
Smooth VOIs to 60 points.- Parameters:
maskImage
-resultImage
-
-
loadFiles
public void loadFiles()
load image files and voi files
-
readFile
public void readFile()
-
loadSTLBinaryMesh
private void loadSTLBinaryMesh(java.io.File file, ModelImage kImage, int imageOrientation)
-
loadSTLBinaryMesh
private void loadSTLBinaryMesh(java.io.File file, ModelImage kImage, int imageOrientation, java.lang.String hashID)
-
readSTLBinary
private void readSTLBinary(java.io.FileInputStream data, ModelImage kImage, int imageOrientation) throws java.io.IOException
- Throws:
java.io.IOException
-
readSTLBinary
private void readSTLBinary(java.io.FileInputStream data, ModelImage kImage, int imageOrientation, java.lang.String hashID) throws java.io.IOException
This method read the STL surface file, convert the 3D surface into VOI contours.- Parameters:
data
-kImage
-imageOrientation
-hashID
-- Throws:
java.io.IOException
-
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.
-
-