Once a DicomImage is loaded, it can be displayed in a model by using the DicomViewer component. The viewer has several key properties:
the name of the viewer component
the normalized slice positions, in the range [0,1], at which to display image planes
the temporal position (image stack) to display
an affine transformation to apply to the image (on top of the voxel-to-spatial transform extracted from the DICOM file)
draw the YZ plane, corresponding to position x
draw the XZ plane, corresponding to position y
draw the XY plane, corresponding to position z
draw the 3D image’s bounding box
the interpolator responsible for converting pixels decoded in the DICOM slices into values appropriate for display. The converter has additional properties:
name of a preset window for linear interpolation of intensities
center intensity
width of window
Each property has a corresponding getXxx(...) and setXxx(...) method that can adjust the settings in code. They can also be modified directly in the ArtiSynth GUI. The last property, the pixelConverter allows for shifting and scaling intensity values for display. By default a set of intensity ‘windows’ are loaded directly from the DICOM file. Each window has a name, and defines a center and width used for linearly scale the intensity range. In addition to the windows extracted from the DICOM, two new windows are added: FULL_DYNAMIC, corresponding to the entire intensity range of the image; and CUSTOM, which allows for custom specification of the window center and width properties.
To add a DicomViewer to the model, create the viewer by supplying a component name and reference to a DicomImage, then add it as a Renderable to the RootModel:
The image will automatically be displayed in the patient-centered coordinates loaded from the DicomImage. In addition to this basic construction, there are convenience constructors to avoid the need for a DicomReader for simple DICOM files:
These constructors generate a new DicomImage internal to the viewer. The image can be retrieved from the viewer using the getImage() method.