MedicalHelper Methods |
The MedicalHelper type exposes the following members.
Name | Description | |
---|---|---|
BuildSliceAnnotation |
Slice viewer annotations.
This is just a convenience method and helps keep the demo/example programs
consistent. Applications can use SliceScaleBar (etc) directly.
| |
BuildSliceOrientationMarkers |
Build a scene graph to display slice orientation markers.
This is just a convenience method and helps keep the demo/example programs
consistent. Applications can use SliceOrientationMarkers directly.
| |
BuildSliceScaleBars |
Build a scene graph to display dynamic scale bars for slice viewing.
This is just a convenience method and helps keep the demo/example programs
consistent. Applications can use SliceScaleBar directly.
Note that a typical length, 10 cm, is assumed.
| |
CreateBoundingBox |
Convenience function to draw a specified bbox as a wireframe.
| |
CreateCube |
Convenience function to retrieve Cube corresponding to specified bbox.
| |
DicomAdjustDataRange |
Adjust data range based on values in the DICOM file,
i.e. the window center (0028,1050) and window width (0028,1051) values.
If there are multiple slices, values are taken from the first slice.
Volume is needed to get DICOM attributes, but is not modified.
| |
DicomAdjustVolume(SoVolumeData, SoMatrixTransform) |
Similar to DicomAdjustVolume( SoVolumeData, bool ) above but returns an SoMatrixTransform
that can be used to properly locate VolumeData in patient space in case of non axis aligned
acquisition:
...
SoMatrixTransform matrixTransform = new SoMatrixTransfrom();
DicomAdjustVolume(volumeData, matrixTransfrom)
root.AddChild(matrixTransform);
root.AddChild(volumeData);
... | |
DicomAdjustVolume(SoVolumeData, Boolean) |
Optimize volume data node for DICOM volumes.
The volume properties are modified (but not the data values).
Do not call this method before setting the volume data node's
fileName field or calling setReader.
- First, adjusts the LDM tile size to optimize data loading.
Note this adjustment is valid for any data format that is not already
tiled, i.e. most formats except .lda and .ldm.
- Second, adjusts the volume extent in 3D to be the actual physical extent
of the data set measured from outside edge to outside edge of the voxels.
This is a DICOM specific adjustment.
- Third, if 'useImagePosition' is true, adjusts the volume extent so the
center of the first voxel is positioned at the coordinates specified in
the data set's "Image position" (0020,0032) attribute. By default
the DICOM volume reader sets the volume extent so the center of the volume
is positioned at 0,0,0 in 3D space. This is a DICOM specific adjustment.
| |
DicomFindFilesbySeries |
Given the path to a DICOM file, returns a list containing all the files in
the same directory that are part of the same DICOM series, based on the
series UID (0x0020,0x000E).
(0020,000E) Series instance UID (required)
(0020,0011) Series number (required but may be "unknown")
(0008,103E) Series description (optional)
| |
DicomGetImagePosition |
Get the "Image Position (Patient)" attribute (0020,0032) from a DICOM volume.
DICOM calls this the upper left hand corner of the image, but more precisely
it's the center of the first voxel, in millimeters (mm). For VolumeViz the
upper left hand corner of the image is literally the corner of the voxel,
one-half voxel different from Image Position.
Note the SoVRDicomData getPosition() method does not return the value of
the Image Position attribute. It returns a value computed from Image Position.
| |
DicomGetWindowCenterWidth(SoDataRange) |
Get the window center (level) and width values from an SoDataRange node
| |
DicomGetWindowCenterWidth(SoVolumeData, SbVec2f) |
Get the window center (level) and width values from a DICOM volume.
If the query fails, returns false and sets 'winCW' to 0,0.
Uses the Window Center (0028,1050) and Window Width (0028,1051) tags from the
first image in the stack. If these tags do not exist in the volume, then window
center and width are computed from the actual data min and max values. (Note
that querying the actual min and max values may take some time because every
voxel must be loaded.)
This method may be called with a non-DICOM volume. In that case the actual
min and max data values are used.
| |
DicomSetWindowCenterWidth |
Set an SoDataRange node from the window center (level) and width values
| |
DollyZoom |
Make the scene appear larger or smaller.
Provided as a convenience to simplify application code.
Values greater than 1 make the scene appear larger. Values less than
1 make the scene appear smaller. For example a of 2 will make the
scene approximately 2 times larger in the rendering window. The
specific effect on the camera is a 'dolly' or a 'zoom' depending on
the type of camera.
This is often useful after calling ViewAll(). That method sets the
camera parameters based on a bounding sphere around the scene which
often leaves the scene not "filling" the viewport.
Details:
- SoPerspectiveCamera: changes the camera 'position' field.
For example, values greater than 1 move the camera closer to the
focal point (divide the camera's distance from the focal point by the
given value), which makes the scene appear larger. This is a 'dolly'.
- SoOrthographicCamera: changes the camera 'height' field.
For example, values greater than 1 decrease the view volume height
(scale the height by the inverse of the given value), which makes the
scene appear larger. This is a 'zoom' operation.
Note that the value expected by SoCameraInteractor.Dolly is the inverse,
which is less intuitive.
| |
Equals | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) | |
ExampleDicomAnnotation |
Returns a collection of DicomInfo annotation nodes for Open Inventor medical examples.
This method is not important for customer applications, but the technique
can be useful for adding annotation text to an application window.
| |
ExampleLogoNode |
Returns a logo image node for Open Inventor medical example.
This method is not important for customer applications, but the technique
can be useful for adding logo images to an application window.
| |
ExampleWindowSize |
Returns standard window size for Open Inventor medical examples.
This method is not important for customer applications.
| |
FindNodeType |
Convenience function to find first specified node in the scene graph
Note: The function is Generic with defined constraint of NodeType : SoNode
| |
FindNodesNodeType |
Convenience function to find all node of specified type in the scene graph
| |
GetBoundingBox |
Convenience function to retrieve boundingBox of specified node.
If node contains SoVolumeData, use SoVolumeData extent.
| |
GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) | |
GetImageDataAdapter |
Make a VolumeViz data set available in ImageViz.
Creates and returns an SoMemoryDataAdapter with the same dimensions, extent
and data as the SoVolumeData. Note that this operation makes a copy of
the data set. So it must be possible to allocate a contiguous block of memory
large enough to hold the whole volume. It is not currently possible for
ImageViz and VolumeViz to share a data set.
You can use SoVolumeReaderAdapter to get the same result but the performance
is much slower because SoVolumeReaderAdapter loads data using the volume's
associated volume reader class and re-reads the data from disk. This
convenience method is much faster because it loads data using the LDMDataAccess
interface which takes advantage of data that VolumeViz already has in memory.
Performance depends on the 'tile size' set for the source volume.
It will be slow (but still faster than SoVolumeReaderAdapter) if you
use the default tile size (64) with a 512^3 volume. We recommend
setting the volume's tile size equal to the volume size (or calling the
#dicomAdjustVolume() method which does this automatically).
| |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
GetVolumeData |
Make an ImageViz data set available in VolumeViz.
Creates an SoVRImageDataReader to access the data and automatically sets
the SoVolumeData's 'tile size' to an optimal value. Note that this operation
makes a copy of the data set. It is not currently possible for ImageViz and
VolumeViz to share a data set.
You can use SoVRImageDataReader directly, but the resulting volume may be
slow to access if you do not set the tile size and the volume dimensions
are larger than the default tile dimension (64). Setting the tile size
allows VolumeViz to access the data as a single tile when the dimensions
are <= 512 or at least to access the data using a larger tile size (which
means a smaller number of tiles).
| |
MedicalAxisFromViewAxis(Axis, SbMatrix) | ||
MedicalAxisFromViewAxis(Axis, SoVolumeData) | ||
OrientView |
Adjusts the camera to view a slice or volume along the specified axis.
The camera is rotated to give the conventional orientation for the specified axis.
If the volume data is specified, then viewAll() is called to center the volume in
the view volume.
If the camera is an SoOrthographicCamera (the usual case for viewing a slice) and
the volume data node is specified, then the camera (specifically the view volume
height) is adjusted to make the slice image fill the viewport. This is convenient
because the viewAll() method gives a very loose fit around the slice image.
If the camera is an SoPerspectiveCamera (commonly used for viewing a 3D volume)
or the volume data node is specified, then ViewAll() is called, but no
additional adjustment is done to the camera. 'slack' is ignored in this case.
Axial -> "Feet" view.
Coronal -> "Anterior" view.
Sagittal -> "Left" view.
For a 3D volume rendering view, typically specify the Coronal axis.
| |
ReadFile |
Convenience function to read a .iv file and return pointer to the root
of the created scenegraph.
| |
ToString | Returns a string that represents the current object. (Inherited from Object.) | |
ViewAxisFromMedicalAxis(MedicalHelperAxis, SbMatrix) | ||
ViewAxisFromMedicalAxis(MedicalHelperAxis, SoVolumeData) |