DICOM_Orthoslice

Synopsis

An orthoslice module that works in conjunction with Read_DICOM to produce correctly orientated 2D slices of medical data.

Inputs

Name Type Description

in link (Mesh_Unif+Node_Data) Field containing a DICOM volume
axis int slice direction perpendicular to x(0), y(1) or z(2) axis
plane int the slice to extract

Output Ports

Name Type Description

out link (Mesh_Unif+Node_Data) a link to a 2D Field represent to request slice
obj link (DataObject) renderable object

Description

In the main this module works similarly to the standard AVS/Express orthoslice module, with the following expections:

  1. only handles uniform meshes (the core module being DICOM_orthoslice_unif)
  2. currently only handles scalar data.

The way in which ReadDICOM works and clincians expect to view the slices means that the the standard orthoslice doesn't necessarily produce slices that are correctly orientated, especially when displayed in a 2D view e.g, Patient Left is on the left rather than the right. In a 3D view since the images can be viewed from either side anyway the feature of DICOM_Orthoslice aren't required. For DICOM_Orthoslice to work some assumptions are made about the DICOM data:

  1. The patients was lying on thier back for the scan
  2. Slices were acquired moving in the direction from the feet to the head, hence the images are to viewed as if looking from the feet at the head
orientation of data within the Express field

ReadDICOM places each slice face down starting at z = 0, consecutive slices are added at incremental z positions. The AVS/Express orthoslice when set to the z axis (2) look from the green view point whereas the desired direction and the one returned by DICOM_Orthoslice is from the blue view point this being the axial view. There is a similar problem in the y axis, coronal view.

Parameters

Inputs

in

A Mesh_Unif+Node_Data possibly originating from a Read_DICOM macro but not necessarily

axis

Which axis to slice; 0 = x, sagittal , 1 = y, coronal, 2 = z, axial

plane

Which slice to return in the range 0 to dims[axis]-1

Outputs

out

A 2D Mesh_Unif+Node_Data of the requested slice

obj

A renderable object

Example

The DICOM_Orthoslice_Eg application requires Read_DICOM (the user must also provide the data) and uses DICOM_Orthoslice to present the three orthogonal views of the data.

Files

iac_proj/dcmortho/dcmortho.v Creates the IAC_PROJ.DICOMOrtho library

iac_proj/dcmortho/dcmomods.v Creates the DICOMOrthoMods library containing the low-level module DICOM_orthoslice_unif.

iac_proj/dcmortho/dcmomacs.v Creates the DICOMOrthoMacs library containing the high-level user macro DICOM_Orthoslice, functional macro DICOM_Orthoslice_Unif and user interface macro DICOM_Orthoslice_UI.

iac_proj/dcmortho/dcmoapps.v Creates the DICOMOrthoApps library containing the example application macro DICOM_OrthosliceEg.

Notes

It is possible that in future that Read_DICOM will change the orientation in which it loads the data making this macro unnecessary.

Developed as part of the Sir Jules Thorn Charitable Trust funded project CAMRAS

Author

James S. Perrin,
Manchester Visualization Centre

Contact

International AVS Centre
Manchester Visualization Centre
Kilburn Building
University of Manchester
Oxford Road
Manchester
United Kingdom
M13 9PL

See Also