performed on the voxels along a discrete path or continuous ray. Instead, we can traverse the whole ray,
storing in the image plane pixel the maximum value encountered along the ray. Figure 6.12(a) is a first
opaque, or surface, projection of a bullfrog sympathetic ganglion cell, that was reconstructed from confocal
microscope data, while Figure 6.12(b) is a maximum projection of the same cell. Figure 6.12 was generated
using the PARC algorithm, described in Section 6.5. As opposed to a surface projection, a maximum
projection is capable of revealing internal features of the data. For example, the high intensity regions of
Figure 6.12(b) are boutons, which lie below the surface of the cell and are therefore not visible in Figure
6.12(a). Another option is to store the sum (simulating X-rays) or average of all values along the ray. More
complex techniques exist, which may involve defining an opacity and color for each scalar value, then
accumulating intensity along the ray according to some compositing function.
Figure 6.12 (a) A surface projection of a nerve cell. (b) A maximum projection of a nerve cell (See color
section, plate 6.12)
The two previous rendering techniques, binary ray casting and discrete ray casting, use zero-order
interpolation in order to define the scalar value at any location in R
3
. One advantage to using zero-order
interpolation is simplicity and speed, since many of the calculations required can be done using integer
arithmetic. One disadvantage, though, is the aliasing effects in the image. Higher-order interpolation functions
can be used to create a more accurate image, but generally at the cost of algorithm complexity and
computation time. The next three algorithms described in this section all use higher-order interpolation
functions.
When creating a composite projection of a data set, there are two important parameters, the color at a location,
and the opacity at that location. An image-order volume rendering algorithm developed by Levoy states that
given an array of data samples S, we can use preprocessing techniques to generate two new arrays S
c
and S
±
,
which define the color and opacity at each grid location [18]. We then define the interpolation functions f(x, y,
z), f
c
(x, y, z), and f
±
(x, y, z), which define the sample value, color, and opacity at any location in R
3
.
Generating the array S
c
of color values involves performing a shading operation, such as gray-level shading,
at each data sample in the original array S. For this purpose, the Phong illumination model could be used. The
normal at each data sample is the unit gradient vector at that location. The gradient vector at any location can
be computed by partially differentiating the interpolation function with respect to x, y, and z to get each
component of the gradient. If the interpolation function is not first derivative continuous, aliasing artifacts will
occur in the image due to the discontinuous normal vector. A smoother set of gradient vectors can be obtained
using a central differencing method similar to the one described previously in this section.
Calculating the array S
±
is essentially a surface classification operation. There are various different ways to
classify surfaces within a scalar field, and each way requires a new mapping from S(x, y, z) to S
±
(x, y, z). If we
wish to view an isosurface at some constant value v with an opacity ±
v
, we could simply assign S(x, y, z) to ±
v
if S(x, y, z) is v, otherwise S
±
(x, y, z) = 0. This will produce aliasing artifacts, which can be reduced by setting
S
±
(x, y, z) close to ±v if S(x, y, z) is close to v. The best results are obtained when the thickness of the
transition region is constant throughout the volume. This can be approximated by having the opacity fall off at
a rate inversely proportional to the magnitude of the local gradient vector.
Multiple iso-surfaces can be displayed in a single image by separately applying the classification mappings,
then combining the opacities. For example, if N iso-value surfaces are to be displayed with values v
n
and
opacities
, 1 d n d N, we would define N opacity mappings, and compute the total opacity by:
Previous Table of Contents Next