Volvis 2002

by Peter Alexay and Meinrad Recheis
done for the Visualization Course at the Institute for CG - TU Vienna

General Information

Volume Visualization of a 3D dataset of densities acquired with computer tomography.
The Program was written in Java 1.3.1 and uses the package javax.vecmath. Run the program by typing java -Xms200M -Xmx256M VolvisMain in the command promt.

download: java source (kontaktiere die Übungsleitung) and java executables and the datafile.
a brief source documentation in German

Modules and Features

The Program is able to load a CT-dataset and provides two major methods of visualization: "Slicing" and "Volume Rendering".

The Slicer Module

With the Slicer an orthonormal plane can be moved in X, Y, and Z direction through the dataset. The section is visualized by color coding of density values. Using a brush one can select all pixels of a specific density in the section. Changing the position of the section plane and brushing is possible in realtime.

Slicer in action: The bones are colored white and even higher densities are colored blue (teeth). Less dense tissue is transparent, the background is green. Tissue densities +-25 around 977ct are colored red by the brush.

The Render Module

The Render Module is able to visualize volume data in 3D. The volume can be oriented in any position. Images are rendered by projecting the volume data onto the image plane orthogonally. Our Renderer uses front-to-back composition to determine the transparency along the casted ray, as described in Levoy's paper [1].
Volume data can be rendered without using gradient information which is fast and with gradients which is much slower but allows phong lighting.
Using the maximum-density or average-density method X-ray like images can be generated.

Renderer in action: Same transfer function as in the above screenshot. Uses gradients that is (vectors of change in density) for phong lighting. Because of the long rendertime (between 1 and 19s on a AMD 1800 XP for this volume data file) we added a bounding box (which can be hidden) to enable interactive orientation of the volume.

The Transfer Function Module

The transfer function allows to make specific density intervals transparent and colorize them. In the screenshot you can see the supporting points of the function. The tissue density values from 0 to 4096 are on the X axis and the opacity from 0 to 100 is on the Y axis. The supporting points are free movable, new ones can be created, the color can be changed and of couse they can be deleted. The color and transparency is interpolated linearly over the interval between two supporting points. Changes of the transferfunction take effect interactively in the Slicer. Transfer functions can be saved to files, which allows the user to prepare and reuse a big set of different transfer functions.

The transfer function used for both screenshots above: The two bars show the interpolation of colors and transparencies. The thing that looks like a landscape is the histogram of the dataset. We have taken the actual values to the 0.25th (that is the square root of the square root) to get it like this, otherwise it wouldn' t have been a usefull visualization of the distribution of the densities. On the left side of the histogram you can see an increase of densities which we set to fully transparent in our TF. Why? It is just noise.

References

[1] Marc Levoy, "Display of Surfaces from Volume Data", IEEE Computer Graphics and Applications, Vol. 8(3), pp. 29-37, Feb.1987

More Pictures:


above: different transferfunctions for the same volume data file with different orientation.
below: no gradients vs phong shading