The over-all goal of this work is to allow the user of a direct volume rendering system to visualize the structure of a volume more easily. This thesis presents methods to automatically detect, and help visualize, the boundaries of objects in the volume. With this goal, it may seem that the task is similar to that of edge detection in computer vision, or that of segmentation or classification in medical imaging. However, there are significant differences. Each of these comparisons are considered in turn.
Edge detection methods are fundamental to computer vision, because edge detection is often the first stage of a lengthy image interpretation process. The goal of edge detection is to locate the pixels in the image that correspond to the edges of the objects seen in the image. This is usually done with a first and/or second derivative measurement following by a test which marks the pixel as either belonging to an edge or not[Fau93]. The result is a binary image which contains only the detected edge pixels. However, for the purposes of opacity function generation, the spatial location or orientation of the edges is not relevant. The opacity function we apply to the volume will be applied everywhere the same way: it is a single function that assigns opacity with no respect to position. As was demonstrated in Figure 1.1, our goal is to locate boundaries not in the spatial domain, but in the data value domain.
Another difference between opacity function generation and the task of edge detection is that volume visualization works with a more limited class of data. In order for a dataset to be visualized by direct volume rendering, there needs to be some correlation between the data value and the interesting structure, otherwise no transfer function will be successful. On the other hand, this is not a necessary restriction for edge detection, since the inevitable variations in illumination mean that individual objects (and their edges) take on wide ranges of values. While these kinds of intensity fluctuations are naturally handled in edge detection, direct volume rendering of a volume dataset with similar data value variations would be very difficult.
Segmentation is the process of distinguishing objects in the dataset from their surroundings so as to facilitate the creation of geometric models. For example, in medical imaging it is often important to measure the shape, surface area, or volume of tissues in the body. Once the dataset is segmented, those quantities are easily measured. Segmentation is an active area of ongoing research. Manual segmentation is a slow and laborious process requiring expert knowledge, often involving the tracing of object outlines in a series of dataset slices. On the other hand, automated techniques are rarely robust and reliable, often requiring extensive supervision[WGKJ96].
On a very general level, both segmentation and the problem of transfer function specification are faced with having to distinguish between the major structural components in a dataset. But these two tasks differ fundamentally in their result. Segmentation leads to a three dimensional model based on volume data, while a transfer function is just one parameter of the direct volume rendering process, which creates simply an image. Both processes are important. Useful science can be accomplished without segmentation, and the CMDA project is an excellent example. The biologists may eventually go through the work of segmenting their datasets, but they can learn about the neurons' size and structure from direct volume renderings of unsegmented datasets.
Closely related to segmentation is the process of classification,
which assigns a material occupancy to each voxel based on any of a
wide variety of data characteristics, such as data value (scalar or
vector), derivative measures, or local histograms. The material
occupancy assignment so created is called a ``classification
function''. The classification function is often binary (either a
voxel is wholly material
or it contains no material
), though
more continuous classification functions better support the
possible later steps of modeling and rendering[Lai95]. Thus,
the classification function is like an opacity function in that it
maps from the data space to a number between 0.0 and 1.0 in a
position independent way.
Since the goal in direct volume rendering is to make objects in the volume visible, one obvious approach would be to make the interior of the objects opaque. Thus, one could simply use a classification function for the opacity function. Indeed, some authors used these terms synonymously[Lev88]. However, the speed of many rendering algorithms (such as ray tracing [Nov94] or the run-length encoding used by Lacroute [LL94]) varies with the number of voxels which contain opacity. In this situation it may be better for the opacity function to keep interior voxels transparent, though that is precisely where the classification function would be highest. In this light, material classification functions do not make very good opacity functions. Accordingly, the methods in this thesis seek to find opacity functions which make the objects' boundaries opaque, not their interiors.