## Surface Rendering Techniques

Several surface rendering techniques have been developed that approximate a surface contained within volumetric data using geometric primitives, which can be rendered using conventional graphics accelerator hardware. A surface can be defined by applying a binary segmentation function B(v) to the volumetric data. B(v) evaluates to 1 if the value v is considered part of the object, and evaluates to 0 if the value v is part of the background. The surface is then the region where B(v) changes from 0 to 1. If a zero-order interpolation function is being used, then the surface is simply the set of faces that are shared by voxels with differing values of B(v). If a higher-order interpolation function is in use, then the surface passes between sample points according to the interpolation function.

For a zero-order interpolation function, the natural choice for a geometric primitive is the 3D rectangular cuboid, since the surface is a set of faces and each face is a rectangle. An early algorithm for displaying human organs from computed tomograms [20] uses the square as the geometric primitive. To simplify the projection calculation and decrease rendering times, the assumption is made that sample spacing in all three directions is the same. A software Z-buffer algorithm is then used to project shaded squares onto the image plane to create the final image.

With continuous interpolation functions, a surface known as an isovalued surface or an isosurface may be defined by a single value. Several methods for extracting and rendering isosurfaces have been developed; a few are briefly described here. The Marching Cubes algorithm [41] was developed to approximate an isovalued surface with a triangle mesh. The algorithm breaks down the ways in which a surface can pass through a cell into 256 cases, reducing by symmetry to only 15 topologies. For each of these 15 cases, a generic set of triangles representing the surface is stored in a look-up table. Each cell through which a surface passes maps to one of the 15 cases, with the actual triangle vertex locations being determined using linear interpolation on the cell vertices. A normal vector is estimated for each triangle vertex, and standard graphics hardware can be utilized to project the triangles, resulting in a smooth shaded image of the isovalued surface.

When rendering a sufficiently large data set with the Marching Cubes algorithm, millions of triangles may be generated; many of them map to a single pixel when projected onto the image plane. This fact led to the development of surface rendering algorithms that use 3D points as the geometric primitive. One such algorithm is Dividing Cubes [8], which subdivides each cell through which a surface passes into subcells. The number of divisions is selected such that the subcells project onto a single pixel on the image plane. Another algorithm which uses 3D points as the geometric primitive is the Trimmed Voxel Lists method [62]. Instead of subdividing, this method uses only one 3D point per visible surface cell, projecting that 3D point on up to three pixels of the image plane to ensure coverage in the image.

0 0