SoDataRange Class Reference

Large Data Management Range of data values to be mapped to the color map. More...

#include <LDM/nodes/SoDataRange.h>

Inheritance diagram for SoDataRange:
SoNode SoFieldContainer SoBase SoRefCounter SoTypedObject

List of all members.

Public Member Functions

virtual SoType getTypeId () const
 SoDataRange ()

Static Public Member Functions

static SoType getClassTypeId ()

Public Attributes

SoSFInt32 dataRangeId
SoSFDouble min
SoSFDouble max
SoSFBool mapOnFullColorRange

Detailed Description

Large Data Management Range of data values to be mapped to the color map.

This node allows you to specify the range of scalar data values in a data set (SoDataSet or SoVolumeData) that will be mapped into the color map (SoTransferFunction). When the volume data type is larger than the data type on the GPU, for example float data scaled to byte data, it also specifies the range of scalar data values that will be scaled to fit in the GPU data type.


By default VolumeViz maps the entire range of the voxel's data type (e.g. 0..65535 for unsigned short) into the colormap. This is often correct for byte (8 bit) voxels, but seldom correct for 16 bit voxels and never correct for floating point voxels. Use an SoDataRange node to specify the actual (or desired) range of data values to be mapped. For example, a typical initial data range for DICOM data calibrated in Hounsfield units might be -1000 to 3000.

Data characteristics:

When using multiple volumes (see SoMultiDataSeparator), a single SoDataRange node can be used to specify the data range for all volumes or each volume can have its own independent data range. In the second case, create one SoDataRange node for each volume and set the dataRangeId equal to the SoDataSet::dataSetId of the corresponding volume.

Note that the meaning of the min and max fields in SoDataRange is quite different than the meaning of the minValue and maxValue fields in SoTransferFunction. The fields in SoDataRange specify the range of voxel values that will be mapped into the full color map. The fields in SoTransferFunction specify the range of indices in the color map that will actually be used to store the color map. The visual effect changing these fields can be quite similar, but there are trade-offs to be aware of. Changing the SoTransferFunction fields is generally much faster and can be a useful approximation of changing the data range, but the resolution of the color map (the ratio of data values to color map entries) is reduced.

NOTE: Setting the min value greater than or equal to the max value will cause this node to be ignored.

Brightness and contrast:

Often the distribution of voxel values within the actual data range is not uniform and more details can be seen by adjusting the SoDataRange values to increase brightness and/or contrast. This is particularly true when using a gray scale color map (for example the predefined INTENSITY map in SoTransferFunction ). In medical imaging this range setting is often specified by the window center and window width.

The window center is the image intensity that will be displayed as a medium-gray and the window width is the range of data values between full black and full white. For example, if the data volume contains byte data with a native range of 0 to 255, the default data range (0 to 255) is effectively specifying a window center of 128 and width of 256. To increase contrast in the resulting image we might set a data range of 20 to 110, which makes the window center and width 65 and 90 respectively.


For larger data types, changing the data range may require VolumeViz to recreate the data textures on the GPU. This is necessary to maximize use of the available bits of precision on the GPU. Since Open Inventor 9.6, recreating data textures should not be required for 8 bit data or for 16 bit data when the SoDataSet::texturePrecision field is set to 16.

Recreating data textures may be slow for larger volumes, even in the 512^3 range. There are several parameters that significantly affect this:

If the data set contains explicit RGBA values (SoVolumeData dataRGBA field is true), then SoDataRange and SoTransferFunction have no effect on rendering.




SoDataSet, SoTransferFunction

See related examples:

MedicalComputeHistogram, MedicalImageFilterToggle, MedicalImageFilterWipe, MedicalDicomImageViewer, MedicalDicomReader, MedicalMPRViewer, MedicalIntensityAnisotropy, MedicalMultiChannel, MedicalGammaCorrection, Medical4DVolumeRendering, MedicalAnatomicalViews, MedicalDTIViewer, MedicalMIP, MedicalMultiView, MedicalOrthoSlice, MedicalOrthoSliceBorder, MedicalFreeHandCutting, MedicalImageSegmentationFloodFill, MedicalMarchingCubesSurface, MedicalSegmentation, MedicalMagicGlass, MedicalMagnifier, MedicalRuler, MedicalZoom, MedicalColorMap, MedicalMultiTransferFunctions, MedicalImageViewerRemote, MedicalMPRViewerRemote, ColorMap, ComputeHistogram, MultiChannel_ex1, MultiChannel_ex2, VolRend, VVIZ-Template-SG

Constructor & Destructor Documentation

SoDataRange::SoDataRange (  ) 


Member Function Documentation

static SoType SoDataRange::getClassTypeId (  )  [static]

Returns the type identifier for this class.

Reimplemented from SoNode.

virtual SoType SoDataRange::getTypeId (  )  const [virtual]

Returns the type identifier for this specific instance.

Reimplemented from SoNode.

Member Data Documentation

This field allows the use of multiple data ranges for the same shape.

By default all data range nodes are initialized to a data range id of 1. If you want to use multiple data ranges, different data range ids must be assigned. The data range id is only used in a render compositing scheme (see SoDataSet).

NOTE: field available since Open Inventor 6.1.2

Specifies how to map data values that are outside of the data range.

If mapOnFullColorRange is TRUE (default), then any data values less than or equal to the min data value are mapped to the first color entry and any data values greater than or equal to the max data value are mapped to the last color entry.

If mapOnFullColorRange is FALSE, then any data value less than min data value is mapped to the first color entry and the min data value is mapped to the second color entry; any data value greater than the max data value is mapped to the last color entry and the max data value is mapped to the next to the last color entry.

Maximum data value of the data range.

Minimum data value of the data range.

Note: If min is greater than or equal to max, this node is ignored.

The documentation for this class was generated from the following file:

Open Inventor Toolkit reference manual, generated on 15 Mar 2023
Copyright © Thermo Fisher Scientific All rights reserved.