The basic goal of a volume rendering algorithm is to, given an object (usually a 3D dataset) and a view (image plane), generate an image that looks as though the user is looking at that object. There are several issues in generating the image, for instance:
Signal processing forms the basis of volume rendering because volume
rendering involves the reconstruction of the input data and a
resampling to generate a discrete image. The sampling theorem
[44] states that if the volumetric sampling rate is at
least twice the original source's maximum spatial frequency, it is
possible to fully reconstruct the original signal from the sample. If
the original signal was sampled at a lower rate than its Nyquist rate
, the
sampled signal does not contain the information required to properly
reconstruct the input signal and aliasing artifacts will be
introduced. Volume renderers assume the original signal was
properly filtered before sampling.
The volume data is given as a scalar array of sampled points
, where
, that is assumed to be
sampled above the Nyquist rate (or filtered). There are basically two
ways a volume rendering algorithm can look at the data above. Some
algorithms view the sampled points as the centers of regions of
influence, (for instance, the center of a regular hexahedral). The
contribution of the sample point
to the volume is considered
to drop off with distance. One can associate a filter function with
each sample point
to represent the contribution of
in the region of influence. This is done in the splatting
algorithm described in detail in Subsection 3.4.
Other algorithms consider the sample points as the corners of a cell.
These reconstruction methods try to guess the values between the sample
points by some interpolation method, for instance trilinear
interpolation
. Ray casting described in Subsection 3.2 is one
such method.
The sampled values stored in the volume array must be mapped to visual parameters for imaging. A simple approach is to use transfer functions that map data values to color and opacity. Transfer function mapping is often done using table lookup for speed. Splatting and ray casting both use transfer functions.