Package gov.nih.mipav.view.dialogs
Class JDialogACPC
- 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.dialogs.JDialogACPC
-
- All Implemented Interfaces:
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 JDialogACPC extends JDialogBase
Dialog to enter points for creating an ACPC image.- Author:
- William Gandler, Pierre-Louis Bazin
- See Also:
TalairachTransformInfo
,AlgorithmTalairachTransform
,JDialogTalairachTransform
,JDialogTLRC
, 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.ButtonGroup
ACPCGroup
ModelImage
ACPCImage
private WildMagic.LibFoundation.Mathematics.Vector3f
anotherMidSagPt
private javax.swing.JRadioButton
anotherPt
private javax.swing.JButton
applyACPCButton
private javax.swing.JButton
cancelACPCButton
private javax.swing.JButton
clearACPCButton
private javax.swing.JComboBox
comboBoxOrientX
private javax.swing.JComboBox
comboBoxOrientY
private javax.swing.JComboBox
comboBoxOrientZ
private WildMagic.LibFoundation.Mathematics.Vector3f
firstMidSagPt
private javax.swing.JRadioButton
firstPt
private ViewJFrameTriImage
frame
private boolean
haveAnotherPt
private boolean
haveFirstPt
private boolean
haveInferiorEdge
private boolean
havePosteriorMargin
private boolean
haveSuperiorEdge
private ModelImage
image
private javax.swing.JRadioButton
inferiorEdge
private WildMagic.LibFoundation.Mathematics.Vector3f
inferiorEdgePt
private int
interpolation
private int[]
orient
private javax.swing.JRadioButton
posteriorMargin
private WildMagic.LibFoundation.Mathematics.Vector3f
posteriorMarginPt
private javax.swing.JButton
setACPCButton
private javax.swing.JButton
setOrientationButton
private javax.swing.JRadioButton
superiorEdge
private WildMagic.LibFoundation.Mathematics.Vector3f
superiorEdgePt
private javax.swing.JTextField
textVoxelLength
private TalairachTransformInfo
transform
private boolean
useIncorrectAcpcXDim
Flag used to force acpc x dim to old (incorrect) value of 192 instead of fixed value calculation (which results in x dim of 191).private float
voxelLength
-
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 JDialogACPC(ViewJFrameTriImage theParentFrame, ModelImage im, ModelImage acpc, TalairachTransformInfo trans, int interp)
This method creates a dialog for selecting markers used for generating an AC-PC aligned view image from an original image
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
actionPerformed(java.awt.event.ActionEvent event)
If user clicks "Set", sets point here and in component image.protected boolean
convertToACPC()
Converts image to AC-PC image.private WildMagic.LibFoundation.Mathematics.Vector3f
crossProduct(WildMagic.LibFoundation.Mathematics.Vector3f pt1, WildMagic.LibFoundation.Mathematics.Vector3f pt2)
Finds crossproduct of two vectors.private float
dist(WildMagic.LibFoundation.Mathematics.Vector3f pt1, WildMagic.LibFoundation.Mathematics.Vector3f pt2, float[] resol)
Finds the distance between two points based on resolution.private float
dotProduct(WildMagic.LibFoundation.Mathematics.Vector3f pt1, WildMagic.LibFoundation.Mathematics.Vector3f pt2)
Finds dotproduct of two vectors.ModelImage
getACPCImage()
javax.swing.JPanel
getMainPanel()
Get the dialog main panel.private boolean
getOrient()
private void
init()
Initializes GUI components and displays dialog.private WildMagic.LibFoundation.Mathematics.Vector3f
makemmVector3f(WildMagic.LibFoundation.Mathematics.Vector3f pt, float[] resol)
Makes a mm (physical space) point from a pixel space point.private WildMagic.LibFoundation.Mathematics.Vector3f
makeVoxelCoord3Df(WildMagic.LibFoundation.Mathematics.Vector3f pt, float[] resol)
Makes a pixel space point from a physical space point.private WildMagic.LibFoundation.Mathematics.Vector3f
norm(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Finds the normal to the vector.private WildMagic.LibFoundation.Mathematics.Vector3f
sclAdd(float fa, WildMagic.LibFoundation.Mathematics.Vector3f a, float fb, WildMagic.LibFoundation.Mathematics.Vector3f b)
Scale and add two vectors.private void
setAnotherPt(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets another label based on the point.private void
setFirstPt(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets first label based on the point.private void
setInferiorEdge(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets inferior label based on the point.private boolean
setOrient()
Gets the orientation from the combo boxes and checks if it's consistent.private void
setPosteriorMargin(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets posterior label based on the point.private void
setSuperiorEdge(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets superior label based on the point.void
setTalairachHeader(ModelImage img)
add the Talairach Transform to the image headerprivate WildMagic.LibFoundation.Mathematics.Vector3f
sub(WildMagic.LibFoundation.Mathematics.Vector3f pt1, WildMagic.LibFoundation.Mathematics.Vector3f pt2)
Subtracts one vector from another and returns result. result = pt1 - pt2.private WildMagic.LibFoundation.Mathematics.Vector3f
toOriginal(WildMagic.LibFoundation.Mathematics.Vector3f in)
to convert frame coordinates into the original image onesprivate void
transformACPCTrilinear(ModelImage image, float[] imgBuffer, double[][] xfrm, float iXres, float iYres, float iZres, int iXdim, int iYdim, int iZdim, float oXres, float oYres, float oZres, int oXdim, int oYdim, int oZdim, ViewJProgressBar progressBar)
Transforms and resamples volume using trilinear interpolation-
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
-
comboBoxOrientX
private javax.swing.JComboBox comboBoxOrientX
-
comboBoxOrientY
private javax.swing.JComboBox comboBoxOrientY
-
comboBoxOrientZ
private javax.swing.JComboBox comboBoxOrientZ
-
ACPCGroup
private javax.swing.ButtonGroup ACPCGroup
-
applyACPCButton
private javax.swing.JButton applyACPCButton
-
cancelACPCButton
private javax.swing.JButton cancelACPCButton
-
setACPCButton
private javax.swing.JButton setACPCButton
-
clearACPCButton
private javax.swing.JButton clearACPCButton
-
setOrientationButton
private javax.swing.JButton setOrientationButton
-
superiorEdge
private javax.swing.JRadioButton superiorEdge
-
posteriorMargin
private javax.swing.JRadioButton posteriorMargin
-
inferiorEdge
private javax.swing.JRadioButton inferiorEdge
-
firstPt
private javax.swing.JRadioButton firstPt
-
anotherPt
private javax.swing.JRadioButton anotherPt
-
frame
private final ViewJFrameTriImage frame
-
image
private final ModelImage image
-
transform
private final TalairachTransformInfo transform
-
textVoxelLength
private javax.swing.JTextField textVoxelLength
-
haveSuperiorEdge
private boolean haveSuperiorEdge
-
havePosteriorMargin
private boolean havePosteriorMargin
-
haveInferiorEdge
private boolean haveInferiorEdge
-
haveFirstPt
private boolean haveFirstPt
-
haveAnotherPt
private boolean haveAnotherPt
-
orient
private int[] orient
-
superiorEdgePt
private WildMagic.LibFoundation.Mathematics.Vector3f superiorEdgePt
-
posteriorMarginPt
private WildMagic.LibFoundation.Mathematics.Vector3f posteriorMarginPt
-
inferiorEdgePt
private WildMagic.LibFoundation.Mathematics.Vector3f inferiorEdgePt
-
firstMidSagPt
private WildMagic.LibFoundation.Mathematics.Vector3f firstMidSagPt
-
anotherMidSagPt
private WildMagic.LibFoundation.Mathematics.Vector3f anotherMidSagPt
-
interpolation
private final int interpolation
-
voxelLength
private float voxelLength
-
ACPCImage
public ModelImage ACPCImage
-
useIncorrectAcpcXDim
private boolean useIncorrectAcpcXDim
Flag used to force acpc x dim to old (incorrect) value of 192 instead of fixed value calculation (which results in x dim of 191).
-
-
Constructor Detail
-
JDialogACPC
public JDialogACPC(ViewJFrameTriImage theParentFrame, ModelImage im, ModelImage acpc, TalairachTransformInfo trans, int interp)
This method creates a dialog for selecting markers used for generating an AC-PC aligned view image from an original image- Parameters:
theParentFrame
- Pointer to the frame that created this dialog.im
- Pointer to image represented in frame.
-
-
Method Detail
-
init
private void init()
Initializes GUI components and displays dialog.
-
getMainPanel
public javax.swing.JPanel getMainPanel()
Get the dialog main panel.- Returns:
- the main panel of the dialog
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent event)
If user clicks "Set", sets point here and in component image. If user clicks "Clear", clears point here and in component image. If user clicks "Apply", creates new Talairach image based on points. If user clicks "Cancel", disposes this dialog.- Specified by:
actionPerformed
in interfacejava.awt.event.ActionListener
- Overrides:
actionPerformed
in classJDialogBase
- Parameters:
event
- Event that triggered this method.
-
getOrient
private boolean getOrient()
-
setOrient
private boolean setOrient()
Gets the orientation from the combo boxes and checks if it's consistent.- Returns:
true
if orientation is consistent.
-
setSuperiorEdge
private void setSuperiorEdge(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets superior label based on the point. Enables "Apply" if all points have been set.- Parameters:
pt
- Point that was set.
-
setPosteriorMargin
private void setPosteriorMargin(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets posterior label based on the point. Enables "Apply" if all points have been set.- Parameters:
pt
- Point that was set.
-
setInferiorEdge
private void setInferiorEdge(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets inferior label based on the point. Enables "Apply" if all points have been set.- Parameters:
pt
- Point that was set.
-
setFirstPt
private void setFirstPt(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets first label based on the point. Enables "Apply" if all points have been set.- Parameters:
pt
- Point that was set.
-
setAnotherPt
private void setAnotherPt(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Sets another label based on the point. Enables "Apply" if all points have been set.- Parameters:
pt
- Point that was set.
-
convertToACPC
protected boolean convertToACPC()
Converts image to AC-PC image. Returns flag indicating success.- Returns:
true
if successful conversion.
-
setTalairachHeader
public void setTalairachHeader(ModelImage img)
add the Talairach Transform to the image header
-
toOriginal
private WildMagic.LibFoundation.Mathematics.Vector3f toOriginal(WildMagic.LibFoundation.Mathematics.Vector3f in)
to convert frame coordinates into the original image ones
-
dist
private float dist(WildMagic.LibFoundation.Mathematics.Vector3f pt1, WildMagic.LibFoundation.Mathematics.Vector3f pt2, float[] resol)
Finds the distance between two points based on resolution.- Parameters:
pt1
- First point.pt2
- Second point.resol
- Resolutions of each dimension.
-
sub
private WildMagic.LibFoundation.Mathematics.Vector3f sub(WildMagic.LibFoundation.Mathematics.Vector3f pt1, WildMagic.LibFoundation.Mathematics.Vector3f pt2)
Subtracts one vector from another and returns result. result = pt1 - pt2.- Parameters:
pt1
- Vector to subtract from.pt2
- Vector to be subtracted.- Returns:
- pt1 - pt2
-
norm
private WildMagic.LibFoundation.Mathematics.Vector3f norm(WildMagic.LibFoundation.Mathematics.Vector3f pt)
Finds the normal to the vector.- Parameters:
pt
- Vector to find normal to.- Returns:
- Normal of pt.
-
crossProduct
private WildMagic.LibFoundation.Mathematics.Vector3f crossProduct(WildMagic.LibFoundation.Mathematics.Vector3f pt1, WildMagic.LibFoundation.Mathematics.Vector3f pt2)
Finds crossproduct of two vectors.- Parameters:
pt1
- First vector.pt2
- Second vector- Returns:
- Cross product of pt1 and pt2.
-
dotProduct
private float dotProduct(WildMagic.LibFoundation.Mathematics.Vector3f pt1, WildMagic.LibFoundation.Mathematics.Vector3f pt2)
Finds dotproduct of two vectors.- Parameters:
pt1
- First vector.pt2
- Second vector- Returns:
- Dot product of pt1 and pt2.
-
sclAdd
private WildMagic.LibFoundation.Mathematics.Vector3f sclAdd(float fa, WildMagic.LibFoundation.Mathematics.Vector3f a, float fb, WildMagic.LibFoundation.Mathematics.Vector3f b)
Scale and add two vectors.- Parameters:
fa
- Scale for vector a.a
- Vector a.fb
- Scale for vector b.b
- Vector b.
-
makemmVector3f
private WildMagic.LibFoundation.Mathematics.Vector3f makemmVector3f(WildMagic.LibFoundation.Mathematics.Vector3f pt, float[] resol)
Makes a mm (physical space) point from a pixel space point.- Parameters:
pt
- Point to convert.resol
- Resolutions to use when converting.- Returns:
- Same point in mm.
-
makeVoxelCoord3Df
private WildMagic.LibFoundation.Mathematics.Vector3f makeVoxelCoord3Df(WildMagic.LibFoundation.Mathematics.Vector3f pt, float[] resol)
Makes a pixel space point from a physical space point.- Parameters:
pt
- Point to convert.resol
- Resolutions to use when converting.- Returns:
- Same point in pixel space.
-
transformACPCTrilinear
private void transformACPCTrilinear(ModelImage image, float[] imgBuffer, double[][] xfrm, float iXres, float iYres, float iZres, int iXdim, int iYdim, int iZdim, float oXres, float oYres, float oZres, int oXdim, int oYdim, int oZdim, ViewJProgressBar progressBar)
Transforms and resamples volume using trilinear interpolation- Parameters:
image
- Image.imgBuffer
- Image array.xfrm
- Transformation matrix to be applied.iXres
- In X resolution.iYres
- In Y resolution.iZres
- In Z resolution.iXdim
- In X dimension.iYdim
- In Y dimension.iZdim
- In Z dimension.oXres
- Out X resolution.oYres
- Out Y resolution.oZres
- Out Z resolution.oXdim
- Out X dimension.oYdim
- Out Y dimension.oZdim
- Out Z dimension.oXlow
- Out X low.oYlow
- Out Y low.oZlow
- Out Z low.oXhigh
- Out X high.oYhigh
- Out Y high.oZhigh
- Out Z high.progressBar
- Progress bar.
-
getACPCImage
public ModelImage getACPCImage()
-
-