next up previous contents
Next: Fast Rendering Up: Basic Concepts Previous: Preprocessing   Contents

Data Representation

After the preprocessing step, the voxels which are classified as relevant make up a more or less sparse volume, which usually consists of intermixed clusters of relevant and irrelevant voxels of various size each. As irrelevant voxels are treated as ``empty'' or transparent during rendering, one of the already established schemes for space leaping could be used to accelerate rendering. However, the efficiency of those approaches is based on the assumption of a large granularity of empty and ``full'' regions, and a low degree of intermixing between them. This assumption does not hold for some of the relevance criteria. Additionally, common space leaping schemes still require some extra effort for actually avoiding empty space during rendering. Instead of relying on established schemes, a novel approach is proposed for space leaping. All voxels which have been classified as relevant are extracted from the volume and stored in a secondary data structure. The structure is simply a list, or array, containing attribute information for the extracted voxels. Each entry corresponds to one extracted voxel, and holds the voxel's position, data value, gradient information and/or other attributes. If different objects are distinguished within the volume, separate lists are created for the voxels of each object.

For rendering, only information contained within the list is used. Some compositing methods require a specific ordering of the voxels. For DVR, for example, a consistent front-to-back or back-to-front order is required. For this reason, and to allow further optimizations tailored to specific rendering modi, the extracted voxels are ordered in a render-mode specific way (See chapter 4). For example, for maximum intensity projection, the voxels should be ordered by decreasing data value. This allows to skip with just a single test all voxels which are mapped to black (due to a change of the transfer function) and thus do not contribute to an image.

Figure 3.2: Data structure for efficient volume rendering. During preprocessing, potentially relevant voxels are extracted from the volume and stored into a list (an array). For each voxel, the position, and a set of attributes are stored. The voxels are ordered by one of the attributes, called the ``key'' attribute. This might be, for example, data value, or one of the coordinates. Groups of voxels with an identical key value are joint into so-called RenderListEntrys. All RenderListEntrys are sorted by the key value to form a so-called RenderList.
\includegraphics[width=\linewidth]{Figures/rl.eps}

As the voxels are sorted by one of the attributes (for example, data value, or one of the coordinates), voxels within the list can be grouped into blocks (so-called RenderListEntrys), with the same value of a ``key'' attribute (figure 3.2). To save memory, the key attribute has to be stored just once for all voxels of the group. All RenderListEntrys, sorted by the value of the key attribute, form a so-called RenderList.

In contrast to the original representation of a volume, the extracted voxel data structure requires to explicitely store position information for each voxel. As usually a significant portion of the volume's voxels is classified as irrelevant, the overall storage for the extracted voxels is less or comparable to the storage requirements of the original volume representation.

The possibility to reduce the volume to a small set of relevant voxels makes this representation well-suited for efficient network transmission. An efficient compression scheme for this purpose is presented in chapter 5.


next up previous contents
Next: Fast Rendering Up: Basic Concepts Previous: Preprocessing   Contents
Lukas Mroz, May 2001,
mailto:mroz@cg.tuwien.ac.at.