Changes are highlighted by []

Client Contract


    The goal of this project is to extend a medical imaging tool, IRIS, that was implemented as a COMP145 project last year. The current version of the software is used to create a segmentation of a 3D data set, composed of 2D slices. It allows for the segmentation of data sets in these 2D slices and provides a 3D rendering of the data. We intend specifically to address issues involving extending the 3D display and manipulation capabilities of the system.

    The product should continue to be platform independent and portable for use on all the major architectures used within the Computer Science department that have appropriate supporting libraries (Sun-Solaris, SGI, and Windows NT).


    The party of Ashraf Farrag, Amy Henderson, Sean Ho, Robin Munesato, and Ming Yu shall hereafter be collectively referred to as the contractor. The party of Guido Gerig shall hereafter be referred to as the client. The contractor agrees to provide the client with a functional software product that meets the specifications defined below under Primary Requirements. The contractor agrees that the product will be delivered to the client no later than May 4, 2000.

    The contractor further agrees that if the Primary Requirements are satisfied before the scheduled delivery date that additional software, as specified under Secondary Requirements, will be developed as time permits, to be deliverable to the client no later than May 4, 2000.

    The contractor agrees to provide the client with documentation regarding the design and use of all software delivered to the client no later than May 4, 2000.

    The client is responsible for ensuring the provision of an adequate amount of and correctly formatted input data sets that are to be used by the product. The client is also responsible for the provision of functions/libraries which implement image processing and meshing algorithms (see Resources below), which may be required for product completion. Additionally, the client is responsible for providing timely feedback to questions about product specs


Overall Software Development

            The delivered software product should be a single source-tree which compiles and runs on Sun Solaris, SGI Irix, and PCs running Windows NT 4.0, with identical functionality, provided the appropriate prerequisite software is installed on the target platform.

           Multicolor display:  Allow for the inclusion of multiple colors on the 3D surface renderings of the segmented objects. This should be visualized and recorded in the label data-object for later storage and retrieval.

            [] Select visible objects: Select which of the many segmented objects should be actively shown in the 3D view.

            Surface smoothing and simplification:  The 3D surface renderings of the segmented objects should be smoothed and simplified (triangle decimation) to aid visualization. The user should be able to control the extent of smoothing and the degree of simplification. Due to the modification/compression/simplification of the 3D data set, a mechanism to maintain accuracy and consistency between the 3D cursor and the orthogonal views must be established, as this is an important use of such a visualization tool.

            Cut planes: The user should be able to specify in the 3D window a plane which will subdivide a segmented object, and 

            re-label the voxels of the object according to which side of the plane they lie on. The user should be able to specify 

            which labels are used to recolor each half of the object.


        Allow for easy input of various grayscale image file formats, including gipl, DICOM, compressed files.

            Geodesic lines: The user may be able to specify a curve on the surface of a segmented object, and a continuous         

            spacecurve in the label image will be re-colored correspondingly. 

            Extend the Cut planes to include cut surfaces: The user may be able to specify a surface (perhaps an extruded 2D curve) 

            which will cut a segmented object, and re-label correspondingly as identified in the plane section.

            [] Virtual knife: The user may be able to specify a cut surface and a depth to which voxels will be relabeled along the cut surface. An adjustable-width "brush" for painting surface voxels is another possible extension. These and other extensions to the 3D manipulation modules will be discussed in further detail as the project progresses

            IRIS extensions separately written by Cecille Barat to allow visualization of multiple registered images may be integrated 

            into the IRIS source tree for the final release.




The volume data set is broken up into voxels, which are the 3D equivalent of pixels. Currently the 3D view of the dataset is drawn using voxels, and for this reason, the structure looks blocky.

Labels are used to define different parts of the anatomical structures. They are determined by the user and are stored in the label data-object. (The original dataset is left untouched.)


Voxel - a pixel is an element of a 2D image, a voxel is an element of a 3Dimage. [it's important to note a pixel is a "picture-element" -- it only makes sense in context of an image; it's different from a mathematical point in 2-space]

Grayscale 3D Image - a 3D array of voxels, where at each point of a grid in 3-space there is a grayscale value. In IRIS this is the input image, typically a 3D MRI, CT, PET or ultrasound dataset. This image is typically not modified; the _segmentation_ is kept separate from the grayscale image data.

Segmented Object - An object of interest in the grayscale image, e.g. a tumor, the brain ventricles, a lobe of the brain. In IRIS a segmented object has hard boundaries, so that its surface can easily be rendered in 3D.

Segmentation - The general process of obtaining segmented objects from a grayscale 3D image. IRIS is a tool for _manual_ segmentation, i.e. all ofthe outlining of segmented objects must be done by hand. When used as a noun, the word "segmentation" refers to a single segmented object or a set of segmented objects.

Labels - Tags (typically small integers) which are given to individual voxels to specify which segmented object they will belong to.

Label Image - A 3D array of labels, typically of the same dimensions as the input grayscale image. At each voxel in the label image there is a label, which specifies which segmented object that voxel belongs to. For instance, a voxel with label 1 may indicate that that voxel is in the left hemisphere of the brain, and label 2 may indicate the right hemisphere,while label 0 may indicate a voxel in the background. A label image is IRIS' representation of a group of segmented objects taken from a single grayscale image.


Guido Gerig Client

Ashraf Farrag  Contractor

Amy Henderson Contractor

Sean Ho Contractor

Robin Munesato Contractor

Ming Yu Contractor