Edit Crosshairs Widget Help
Overview
This widget permits the user to move a 3D crosshair through the scene.
The main reasons to position the crosshair are:
1). The view of the scene can be centered around the crosshair position.
2). The image coordinate of crosshair position are displayed.
3). The data values at the cross hair position are displayed.
4). The crosshair can jump to "objects" in the scene.
5). Objects (e.g., arrows or scale bars) can be "dropped" into the scene at
the crosshair position (see Edit Other Objects from the Edit Menu in the
Master Widget).
6). A plot of the data along a line between two positions of the crosshair
can be obtained (see ROI Analysis from the Goodies Menu).
7). A histogram of a retangular region specified by crosshair positions
(see ROI Analysis from the Goodies Menu).
Note
Edit->3D Input Control (or just lifting the Microscribe stylus) will also
control the crosshair if you are on a system with a Microscribe stylus.
Show Button
The crosshair is made visible by picking on the "Show" button. This will
cause it to be highlighted in blue. Clicking again will toggle the crosshair
off.
Center Button
Click on "Center" so that the point in the scene which the crosshair is
currently at moves to the center of the viewing window. This is useful
since when you zoom in, you zoom around the center of the viewing window.
This is also the point you rotate about. In addition, the snoops widget
(Goodies->Snoop), by default, shows an enlarged view of the center of the
viewing window (this can be changed to always show the voxels near the
crosshair by choosing "Center Snoops Window on Crosshair" from the crosshair
menu).
Examining the Data Values at the Crosshair Location
The green box shows the voxel value at the crosshair location for the
green data set (the first one on the command line, unless you have used the
Series widget, Stuff->Series, to change the order of the images). Similarly
for the red and blue boxes (for the 2nd and 3rd images respectively).
The value in parentheses is the rescaled (0-255) value used by DAVE. The
other value is the approximate (unless -t was used on the command line) data
value, since it is just the DAVE value scaled back up by the scale factor and
black level. It is approximate since the DAVE value is just an integer so
fractional components are truncated. For example: if scale = 10 and black=0,
then original values of 10 and 15 would both be stored in DAVE as 1
( (data-black)/scale = (10-0)/10 = 1.0 -> 1 and (15-0)/10 = 1.5 -> 1 ).
So the value in parentheses would be 1 and the value outside parentheses
would be 10 ( (1*scale)+black = (1*10)+0 = 10) for both 10 and 15.
Positioning the crosshair
The crosshair must be positioned at the location you wish to drop an
arrow or at which you want to know data values. The crosshair can be positioned
in several ways. That part of the crosshair which is inside the data volume
bounding box is shown in dark green, while that which is outside is a lighter
green. Thus the crosshair is only positioned inside the data volume if the
intersection point of the 3 lines is all dark green.
Picking
It is recommended that the display be paused before picking (since it's
easier to pick a stationary object!). Don't forget that a data volume will
change to higher resolution when paused (which will slow down the update rate).
See the information about the Res slider in "Edit Volume Data" widget for more
details on this.
Clicking in the viewing window with the left mouse button will cause
the crosshair to move to the current mouse position (note: sometimes DAVE
seems to ignore this action, if so try a. just moving the mouse around a
bit and into and out of the viewing window or b. picking QRESET from the
Stuff menu in the DAVE Master Widget). If Trilinear Interp is not
specified then some rounding of position may occur (see below).
Unfortunately, the depth of the cursor will probably not be correct. The depth
position can be changed in one of two ways.
Clicking on the arrows to "Change Crosshair Depth" will increase (IN) or
decrease (OUT) the depth of the cursor.
The more positive (larger) the Z value, the further away (into the screen) the
cursor will move. As the z value changes you will see the crosshair become
blocked by more data (if you are increasing z) or pop in front of more data
(if you are decreasing z). When you are at a z value where a small change
either way causes the crosshair change whether it is in front or behind the
object of interest, then you are just about on it. NOTE: if Trilinear Interp
is not set ON, then moving up and down in z can cause some strange motions of
the crosshair - it is best to set it on while you are moving in z.
Alternatively, you might try centering the view on the crosshairs
(pick "Center Object Rotation on Crosshair") and then rotating the view by
90 degrees (pick +90 on the Dave Master Widget). Once this is done the
depth has changed to an offset in x or y (depending upon which axis you
rotated around). You can now use the cursor again to specify the correct
position of the crosshair. Warning: if you are way off in z, then a 90 degree
rotation may move your object of interest out of the field of view.
Intelligent Cursor
See the description at the bottom of the help page.
Coordinate Specification
By typing the exact coordinate into the three white boxes to the left
of the X, Y, and Z sliders you can positioned the crosshair at a specific
location.
Click on whichever box you want to type into. Type the number. A
carriage return enters the new value. Note: all coordinate values start at 0.
Thus the first voxel is at (0,0,0). Kevin's "Play" program starts at 1.
The position can be incrementally changed by clicking on the arrows
associated with the sliders. The arrow key continually changes the position
until the mouse button is released. The positive direction on each axis has the
axis label on it.
Regardless of how the crosshair position was specified, its current
position is shown in the three boxes to the left of the labels "X", "Y" and "Z".
If a coordinate is outside the range of the data volume, the box changes to a
pinkish/purplish color.
Saving and Clearing Crosshair Positions
The current crosshair position can be saved by clicking on the
"Save Point" button. Prior to doing this you should type a name for the
position into the white box on the right. If no name is specified, DAVE will
autoname the point. The position will be added to a menu
which can be gotten by holding the right mouse button down while over the middle
box (which shows the name of the current position). Alternatively, clicking on
the middle box with the left mouse button will change the position to the next
one in the menu list. All the items in this menu of positions (or "stack") can
be cleared by picking "Clear Crosshair Stack" from the Edit Crosshair Position
Menu.
To avoid having to go back to the widget to click on "Save Point" you can,
after positioning the crosshair by clicking with the left mouse button, just
click with the middle mouse button. This will save the point and autoname it.
Menu Items
The "Edit Crosshair Position Menu" has several items in it. Clear
Crosshair Stack is described above. ROI - No Interp specifies that no
interpolation between voxel values should occur when positioning the cursor and
calculation of image values (e.g., for ROI Analysis). This is the default.
ROI - Trilinear Interp causes trilinear interpolation to occur between voxel
positions. This allows the crosshair to move into and out-of the screen along
a precise line when the crosshair depth is changed (otherwise it must jump from
the center of one voxel to the center of the next). This also affects the
statistics that the ROI Analysis widget will calculate. See the discussion of
this in the ROI widget's help.
Rather than have the user manually position the crosshair, the crosshair
itself can be "intelligent". When this is the case, the user merely specifies
an approximate position with the cursor and then the crosshair goes to the
best location which is near the specified position.
Intelligent Cursor - OFF
This is the default. The user must specify and exact position for the
crosshair.
Intelligent Cursor - Object
If objects have been counted (see the Count Image Objects widget gotten
from the DAVE Master Widget's Goodies menu), and this mode is set, the
crosshair will jump to the nearest object (actually, only the location of the
brightest voxel in each object is stored and it jumps to the nearest
brightest voxel). "Near" is defined as the voxel closest to the line
(going in and out of the screen) through the data (i.e., the depth of the
crosshair is ignored).
Intelligent Cursor - Brightest
When this mode is set (and the user clicks the mouse button with
the cursor in the viewing window) the crosshair will jump to the brightest
voxel under the cursor. Note: if only a small piece of a voxel is under
the cursor, that voxel may be skipped. The box in the upper right of the
Edit Crosshair widget is a menu/toggle box which lets the user specify a
search region around the cursor. Thus, when it is set to zero only those
voxels directly under the cursor are searched to find the brightest voxel.
If it is set to 1, then all voxels within a distance of 1 (i.e., all voxels
searched when the search distance was 0 and all of their neighbors) of the
cursor are examined to find the brightest voxel. Similarly for the other
settings. Setting the search distance to 1 should alleviate the "skipping"
artifact mentioned directly above.
If there is no unique brightest voxel (e.g., two voxels both
with a value of 255) then the voxel closest to the viewer is chosen (although
sometimes we may be accidentally reversing this and choosing the furthest,
I'm not sure). Note: no voxel interpolation is performed in this mode
(regardless of the setting of the ROI - Trilinear Interp/No Interp mode).
Append Crosshair Stack to File As...
Choosing this menu item causes the current points in the crosshair
stack to be written out the the specified file. If the file already exists,
the data is appended onto the end of the file.
Append Crosshair Stack to File
Same as above, but just uses the previously specified file name.
Draw Crosshair Stack as a Line
When this option is chosen, lines are drawn between points in the
crosshair stack. A line is also drawn from the most recent addition to the
stack and the current crosshair position. When the crosshair moves, this line
will change. If you want to keep the line, use "save point" to save the
current crosshair position onto the stack.
Note, the ROI Analysis widget (gotten from the Goodies Menu) lets two
points be chosen, a line drawn between them, and then the image pixel
intensities along the line can be displayed.
Center Snoops Window on Crosshair
The snoops widget (Goodies->Snoops), by default, shows an enlarged view
of the center of the viewing window. This can be changed to show the
voxels near the crosshair by choosing this option.
Crosshair Color/Width
These options pop up widgets allowing the user to change the color or
width of the crosshair.
Clear and Store the Crosshair Stack
Self-explanatory.
Crosshair Coordinates and Pixel Value
Pops up a widget to control the values displayed adjacent to the crosshair
in the main drawing window. Default is: xcoord, ycoord, zcoord (im1val, im2val, im3val).
These can each be individually turned off. Their color can be changed via the "Color"
button. They can all be turned off with the "ON/OFF" button.
The crosshair can be made to be drawn on top of the data volume (so that it
is not obscured by bright data). This is the menu option "Draw objects in
front of volume data" from the Edit Object Properties widget.
Copyright 1995 by Lawrence M. Lifshitz and the University of
Massachusetts Medical School. All rights reserved.