andrew winter
Home
Blog
Visualization
Introduction
Dataset Portal
Programming
Projects
Documents
Applets
Dreams
Powerlifting
Links
Contact

Introduction to Volume Visualization

Overview

Volume visualization is about understanding complex 3D data. That data may be the result of complex simulations for estimating wind resistance over the surface of a car, or the result of a medical scan using CT or MRI. Here, we'll use medical data as an example.

Example

A radiologist is trained to look at 2D cross sectional images, called tomograms, and build up a mental picture of the body in three dimensions. With this image in mind, he can describe to his colleagues the nature of the data and any injuries or trauma the patient may have suffered. A key point is that this picture exists only in the radiologist's head and is not available for everybody to see.

Volume visualization can be used to create a physical image of this data that everybody can see and understand, and of course point to and discuss. Firstly, the 2D cross sectional images would be stacked on top of each other to form a volume dataset, as follows:

Tomograms are stacked to form a volume dataset

If the data were from a CT scanner, as in this example, then each point within the volume dataset would represent a density. High density values would represent bone (a hard substance), medium density values represent soft tissue such as skin and fat, and low density values would represent air, hair or clothing. CT scanners are usually too crude to show any distinction between different types of soft tissue.

To make sense of the dataset, an expert would need to define density boundaries between different types of materials, and also to work out what those materials are. This is called material classification. For example, the expert would need to say that density values in the range x to y are soft tissue and y to z are bone. In practice, it's very difficult to establish exact boundaries with absolute accuracy because of the way the CT scanner blurs the data (and hence blurs the boundaries).

For display purposes, all materials present in the dataset need visual properties associated with them, such as a colour and an opacity (or translucency). For example, bone would be white and 100% opaque, soft tissue would be pink and 95% opaque, and air would be 0% opaque (or 100% transparent). If a material such as air is completely transparent then it can be given an arbitrary colour since it would never be visible anyway. The map used to compute visual properties from a material type is called a transfer function.

Volume Rendering

The volume dataset can be rendered to the screen in a variety of ways. A common approach is to evaluate ("sample") the dataset along rays at increasing distances from the viewer, and to blend colours to derive pixel intensities. This is called ray-casting and is very similar to ray-tracing. The colour at each sample point is acquired by extracting a density value from the dataset, working out which material is at that point, and then looking up the colour of that material using the transfer function. This is called volume rendering.

By altering either the material classification or the transfer function, different images of the same dataset can be achieved. This is especially useful because some images might convey more information than others. The following two images, for example, are of the same dataset.

Volume visualization examples

Benefits of Volume Rendering

Volume rendering isn't the only rendering technique that can be used for volume visualization. Much research effort has gone into developing surface extraction techniques, such as marching cubes, which produce polygonal approximations to material boundaries ("iso-surfaces"). Displaying these polygons is called surface rendering.

There are trade-offs between surface rendering and volume rendering. Most importantly, surface rendering can be implemented using OpenGL or Direct3D and can take advantage of standard 3D-graphics hardware, though it tends to reveal significantly less about the data than volume rendering. The following example illustrates this.

Comparison of surface and volume rendering

Above are two renderings of a dendrite from a rat's brain: the top image is surface rendered, the other is volume rendered. The surface rendered image is considerably sharper but in terms of accuracy, it doesn't reveal much about how well the boundaries in the dataset are defined. The volume rendered image, on the other hand, includes wispy features showing information too faint to be recognized by the surface extraction algorithm. As such, volume rendering is more accurate.