Class JDialogProstateSegmentationRegBSpline3DFast
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.JDialogProstateSegmentationRegBSpline3DFast
- All Implemented Interfaces:
AlgorithmInterface,DialogDefaultsInterface,ActionListener,FocusListener,ItemListener,WindowListener,ImageObserver,MenuContainer,Serializable,EventListener,Accessible,RootPaneContainer,WindowConstants
public class JDialogProstateSegmentationRegBSpline3DFast
extends JDialogBase
implements AlgorithmInterface
Semi-automatic MR Prostate segmentation - Registration guided segmentation
model.
The algorithm uses B-Spline registration to guide the MR prostate
segmentation. Basic steps: 1) User open the axial, sagittal, coronal images
in the MIPAV frame. 2) User manually outline the three contours on separate
slices for each axial, sagittal, and coronal images to define the middle, the
apex and the base of the prostate. 3) User click the OK button to let a fully
automatic registration guided algorithm to segment the prostate of all the
three images.
- Author:
- Ruida Cheng
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) class(package private) classNested classes/interfaces inherited from class gov.nih.mipav.view.dialogs.JDialogBase
JDialogBase.CancelAction, JDialogBase.HelpAction, JDialogBase.OKActionNested classes/interfaces inherited from class javax.swing.JDialog
JDialog.AccessibleJDialogNested classes/interfaces inherited from class java.awt.Dialog
Dialog.AccessibleAWTDialog, Dialog.ModalExclusionType, Dialog.ModalityTypeNested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow, Window.TypeNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static intAxial image typeprivate static intCoronal image type(package private) intprivate int(package private) intprivate ModelImageprivate ModelImageprivate ModelImageprivate JLabelprivate JLabelprivate JLabelprivate JLabelprivate JLabelprivate JLabelprivate JLabelprivate JLabelprivate JLabelprivate JLabelprivate JLabelprivate JLabel(package private) intprivate int(package private) intprivate JRadioButtonprivate JRadioButtonprivate static intSagittal image type(package private) intprivate int(package private) intprivate JTextFieldprivate JTextFieldprivate JTextFieldprivate JTextFieldprivate JTextFieldprivate JTextFieldprivate JTextFieldprivate JTextFieldprivate JTextFieldprivate intnumber of slices to trace, start from the apex and base VOIsprivate ViewUserInterfaceglobal user interface to get the three active images.private booleanFlag to indicate to use B-Spline registration or OAR registrationFields 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, voiManagerFields inherited from class javax.swing.JDialog
accessibleContext, rootPane, rootPaneCheckingEnabledFields inherited from class java.awt.Dialog
DEFAULT_MODALITY_TYPEFields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTHFields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE -
Constructor Summary
ConstructorsConstructorDescriptionJDialogProstateSegmentationRegBSpline3DFast(Frame theParentFrame) GUI interface for semi-automatic MR prostate segmentation. -
Method Summary
Modifier and TypeMethodDescriptionvoidactionPerformed(ActionEvent event) Just handle GUI button clicks event.voidadjustVOIs(ModelImage image) When user draws the 3 VOIs out of order, adjust the VOIs in ascending ordervoidalgorithmPerformed(AlgorithmBase algorithm) This method is required if the AlgorithmPerformed interface is implemented.voidAfter user manually draw the three VOIs on each axial, sagittal, coronal image, the drawn VOIs slices number is auto configured to appear in the dialog GUI interface.private ModelImagecalculateCoherenceEnhancingDiffusion(ModelImage cropImage) Apply the coherence enhancing diffusion filter to the croppred MR image.voidCompute the VOIs binary mask based volumes.voidconfigVOIsNumbers(ModelImage image, int[] slices) Configure the mid, apex and base VOIs, sort them in order.voidconvertVOIToDicomSpace(VOIVector src, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> target, ModelImage image, int startSlice, int endSlice) Conver the VOIs from image space to Dicom spaceprivate RunnablecreateTask(ModelImage image, int midVOI, int startVOI, int endVOI) Parallel processing the automatic segmentation algorithm to all the three images concurrently.cropROI(ModelImage image, int[] xBounds, int[] yBounds, int[] zBounds, int[] boundingBox, int midVOI) Crop MR image with specified X, Y, Z bounds Use the mid slice as the initial guidance to find the bounds.voiddoFuzzyCmean(ModelImage coherenceEnhancingDiffusionImage, Vector<Vector<ModelImage>> imageStackFuzzyC) Generate the Fuzzy-C means classes from the CED imagevoiddoRegistrationEnd(ModelImage image, ModelImage coherenceEnhancingDiffusionImage, Vector<Vector<ModelImage>> imageStackFuzzyC, int endVOI, int[] boundingBox) Near the base, base contour starts as the initial estimate, and repeat the same process toward the end slices.voiddoRegistrationMid(ModelImage image, ModelImage coherenceEnhancingDiffusionImage, Vector<Vector<ModelImage>> imageStackFuzzyC, int midVOI, int startVOI, int endVOI, int[] boundingBox) The proposed model uses 2D registration to register 2D slices from the middle slice to the adjacent slice.voiddoRegistrationStart(ModelImage image, ModelImage coherenceEnhancingDiffusionImage, Vector<Vector<ModelImage>> imageStackFuzzyC, int startVOI, int[] boundingBox) Near the apex, apex contour starts as the initial estimate, and repeat the same process toward the end slices.private float[]getCentroids(ModelImage srcImage, AlgorithmFuzzyCMeans fcmAlgo, float[] centroids) Gets the minimum and maximum of each image and initializes the centroids dialog appropriately.voidinit()Create the dialog interface.private booleanisVOIsCloseEnough(int currentSlice, ModelImage resultImage, ModelImage refImage) Check the registration accuracy.static voidpause()Pauses the display until the user hits enter.voidprintVolume(ModelImage srcImage, VOIVector voiVector, int viewOrientation) Print out the three VOIs volume in system console out.voidUser central gland contours projection to remove the extra interpolated VOIs contours at the apex and base.voidremoveVOIsInDicomSpace(int zSlice, float zDicom, ModelImage image, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> firstVOI, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> secondVOI, int viewOrientation) Remove the extra VOIs contours in Dicom space.voidsmoothVOI120(ModelImage resultImage) Convert the mask image to VOI with 120 points.voidsmoothVOI50(ModelImage resultImage) Convert the mask image to VOI with 50 pointsvoidsortCEDImageVOIs(ModelImage coherenceEnhancingDiffusionImage, int midVOI, int startVOI, int endVOI) Sort the CED image VOIsvoidsortImageVOIs(ModelImage image) Sorting image VOIvoidsortImageVOIsInit(ModelImage image, int midVOI, int startVOI, int endVOI) Sort the original MR image's specified VOIsvoidtransformVOI(ModelImage image, ModelImage resultImage, ModelImage refImage, ModelImage testImage, int[] boundingBox, int currentSlice) Transform the the resulting VOI from cropped image to oringal MR image.trimVOIsInSingleImage(ModelImage image, int startVOI, int endVOI, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> firstVOI, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> secondVOI, int viewOrientation) In Dicom space, central contours projections to eliminate the extra contours at the apex and base.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, windowOpenedMethods 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, updateMethods inherited from class java.awt.Dialog
addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setBackground, setModal, setModalityType, setOpacity, setResizable, setShape, setTitle, setUndecorated, show, toBackMethods 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, toFrontMethods 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, validateTreeMethods 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 Details
-
UI
global user interface to get the three active images. -
tracingSliceNumber
private int tracingSliceNumbernumber of slices to trace, start from the apex and base VOIs -
Axial
private static int AxialAxial image type -
Sagittal
private static int SagittalSagittal image type -
Coronal
private static int CoronalCoronal image type -
labelAxis
-
labelStartVOIAxial
-
textFieldStartVOIAxial
-
labelEndVOIAxial
-
textFieldEndVOIAxial
-
labelMidVOIAxial
-
textFieldMidVOIAxial
-
startVOIAxial
int startVOIAxial -
endVOIAxial
int endVOIAxial -
midVOIAxial
int midVOIAxial -
labelSagittal
-
labelStartVOISagittal
-
textFieldStartVOISagittal
-
labelEndVOISagittal
-
textFieldEndVOISagittal
-
labelMidVOISagittal
-
textFieldMidVOISagittal
-
startVOISagittal
int startVOISagittal -
endVOISagittal
int endVOISagittal -
midVOISagittal
int midVOISagittal -
labelCoronal
-
labelStartVOICoronal
-
textFieldStartVOICoronal
-
labelEndVOICoronal
-
textFieldEndVOICoronal
-
labelMidVOICoronal
-
textFieldMidVOICoronal
-
radioBSpline
-
radioOAR
-
startVOICoronal
private int startVOICoronal -
endVOICoronal
private int endVOICoronal -
midVOICoronal
private int midVOICoronal -
imageAxial
-
imageSagittal
-
imageCoronal
-
useBSpline
private boolean useBSplineFlag to indicate to use B-Spline registration or OAR registration
-
-
Constructor Details
-
JDialogProstateSegmentationRegBSpline3DFast
GUI interface for semi-automatic MR prostate segmentation.- Parameters:
theParentFrame- the MIPAV main frame.
-
-
Method Details
-
autoConfigVOIsNumbers
public void autoConfigVOIsNumbers()After user manually draw the three VOIs on each axial, sagittal, coronal image, the drawn VOIs slices number is auto configured to appear in the dialog GUI interface. -
configVOIsNumbers
Configure the mid, apex and base VOIs, sort them in order.- Parameters:
image- oringial MRI imageslices- Slice array to store the mid, apex and base VOIs slice number.
-
actionPerformed
Just handle GUI button clicks event.- Specified by:
actionPerformedin interfaceActionListener- Overrides:
actionPerformedin classJDialogBase
-
calculateVOIsVolume
public void calculateVOIsVolume()Compute the VOIs binary mask based volumes. -
printVolume
Print out the three VOIs volume in system console out.- Parameters:
srcImage- original MRI imagevoiVector- segmented resulting VOIs contoursviewOrientation- view axis orientation: axial, or sagittal or coronal.
-
removeContourFromOtherOrientation
public void removeContourFromOtherOrientation()User central gland contours projection to remove the extra interpolated VOIs contours at the apex and base. Parallel processing the algorithm with axial, sagittal and coronal images concurrently. -
trimVOIsInSingleImage
public Runnable trimVOIsInSingleImage(ModelImage image, int startVOI, int endVOI, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> firstVOI, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> secondVOI, int viewOrientation) In Dicom space, central contours projections to eliminate the extra contours at the apex and base. For example, axial image, project the sagittal, coronal VOIs onto the axial image Dicom space. The central gland part sagittal, coronal VOIs contours is projected on the axial image slices as points based contours. If there is no points on the corresponding axial image slice, however it has contour, the contour is eliminated.- Parameters:
image- original MRI image. i.e. axial imagestartVOI- apex VOI slice numberendVOI- base VOI slice numberfirstVOI- sagittal image VOIs in Dicom spacesecondVOI- coronal image VOIs in Dicom space.viewOrientation- image axis orientation- Returns:
-
removeVOIsInDicomSpace
public void removeVOIsInDicomSpace(int zSlice, float zDicom, ModelImage image, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> firstVOI, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> secondVOI, int viewOrientation) Remove the extra VOIs contours in Dicom space.- Parameters:
zSlice- axial z slice numberzDicom- z slice number corresponding Dicom valueimage- original MRI imagefirstVOI- sagittal VOIsecondVOI- coronal VOIviewOrientation- view axis
-
convertVOIToDicomSpace
public void convertVOIToDicomSpace(VOIVector src, Vector<WildMagic.LibFoundation.Mathematics.Vector3f> target, ModelImage image, int startSlice, int endSlice) Conver the VOIs from image space to Dicom space- Parameters:
src- source VOIstarget- converted target VOIsimage- original MRI imagestartSlice- starting sliceendSlice- ending slice
-
createTask
Parallel processing the automatic segmentation algorithm to all the three images concurrently.- Parameters:
image- original MRI imagemidVOI- mid slice VOIstartVOI- apex slice VOIendVOI- base slice VOIaxis- view axis- Returns:
-
algorithmPerformed
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:
algorithmPerformedin interfaceAlgorithmInterface- Parameters:
algorithm- Algorithm that caused the event.
-
pause
public static void pause()Pauses the display until the user hits enter. -
calculateCoherenceEnhancingDiffusion
Apply the coherence enhancing diffusion filter to the croppred MR image.- Parameters:
cropImage- cropped image- Returns:
- the coherence enhancing diffusion image.
-
isVOIsCloseEnough
Check the registration accuracy. Check to see if the registration runs into errors. Check criterion include VOI area, VOI center, etc. If area and center difference exceed specified threshold, registration runs into error.- Parameters:
currentSlice- current image sliceresultImage- result image after registrationrefImage- registration reference slice- Returns:
- true registration wrong, false, registration wrong.
-
smoothVOI50
Convert the mask image to VOI with 50 points- Parameters:
resultImage- result imagemaskImage- binary mask image
-
smoothVOI120
Convert the mask image to VOI with 120 points.- Parameters:
resultImage- result imagemaskImage- binary mask image
-
transformVOI
public void transformVOI(ModelImage image, ModelImage resultImage, ModelImage refImage, ModelImage testImage, int[] boundingBox, int currentSlice) Transform the the resulting VOI from cropped image to oringal MR image.- Parameters:
image- original MR imageresultImage- resulting image after segmentationboundingBox- cropped image bounding boxcurrentSlice- current image slice
-
sortImageVOIs
Sorting image VOI- Parameters:
image- original MR image
-
sortImageVOIsInit
Sort the original MR image's specified VOIs- Parameters:
image- original MR imagemidVOI- mid slice VOIstartVOI- apex slice VOIendVOI- base slice VOI
-
sortCEDImageVOIs
public void sortCEDImageVOIs(ModelImage coherenceEnhancingDiffusionImage, int midVOI, int startVOI, int endVOI) Sort the CED image VOIs- Parameters:
coherenceEnhancingDiffusionImage- CED imagemidVOI- mid slice VOIstartVOI- apex slice VOIendVOI- base slice VOI
-
doFuzzyCmean
public void doFuzzyCmean(ModelImage coherenceEnhancingDiffusionImage, Vector<Vector<ModelImage>> imageStackFuzzyC) Generate the Fuzzy-C means classes from the CED image- Parameters:
coherenceEnhancingDiffusionImage- CED imageimageStackFuzzyC- Fuzzy-C means classes image stack.
-
getCentroids
Gets the minimum and maximum of each image and initializes the centroids dialog appropriately.- Returns:
- Flag indicating a successful get.
-
doRegistrationMid
public void doRegistrationMid(ModelImage image, ModelImage coherenceEnhancingDiffusionImage, Vector<Vector<ModelImage>> imageStackFuzzyC, int midVOI, int startVOI, int endVOI, int[] boundingBox) The proposed model uses 2D registration to register 2D slices from the middle slice to the adjacent slice. It then generates a new VOI, and takes the VOI as the new initial estimate for the next slice in the series. This process is then iteratively propagated in both forward and backward directions.- Parameters:
image- original MR imagecoherenceEnhancingDiffusionImage- coherence enhance diffusion filterimageStackFuzzyC- Fuzzy-C segmentation stackmidVOI- mid slice VOIstartVOI- apex slice VOIendVOI- base slice VOIboundingBox- Cropped image bounding boxaxis- axis orientation
-
doRegistrationStart
public void doRegistrationStart(ModelImage image, ModelImage coherenceEnhancingDiffusionImage, Vector<Vector<ModelImage>> imageStackFuzzyC, int startVOI, int[] boundingBox) Near the apex, apex contour starts as the initial estimate, and repeat the same process toward the end slices.- Parameters:
image- original MR imagecoherenceEnhancingDiffusionImage- coherence enhance diffusion filterimageStackFuzzyC- Fuzzy-C segmentation stackstartVOI- apex starting slice VOI numberboundingBox- Cropped image bounding boxaxis- axis orientation
-
doRegistrationEnd
public void doRegistrationEnd(ModelImage image, ModelImage coherenceEnhancingDiffusionImage, Vector<Vector<ModelImage>> imageStackFuzzyC, int endVOI, int[] boundingBox) Near the base, base contour starts as the initial estimate, and repeat the same process toward the end slices.- Parameters:
image- original MR imagecoherenceEnhancingDiffusionImage- coherence enhance diffusion filterimageStackFuzzyC- Fuzzy-C segmentation stackboundingBox- Cropped image bounding boxstartVOI- apex starting slice VOI numberaxis- axis orientation
-
adjustVOIs
When user draws the 3 VOIs out of order, adjust the VOIs in ascending order- Parameters:
image- source image, axial, sagittal or coronal
-
cropROI
public ModelImage cropROI(ModelImage image, int[] xBounds, int[] yBounds, int[] zBounds, int[] boundingBox, int midVOI) Crop MR image with specified X, Y, Z bounds Use the mid slice as the initial guidance to find the bounds.- Parameters:
image- Original MR imagexBounds- X boundsyBounds- Y boundszBounds- Z boundsboundingBox- Cropped region rounding boxmidVOI- mid slice VOI- Returns:
-
init
public void init()Create the dialog interface.
-