Edit Crosshairs Widget Help


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).


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.


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


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.