Information about Volume Rendering

Volume rendering is a technique used to display a 2D projection of a 3D discretely sampled data set.

A typical 3D data set is a group of 2D slice images acquired by a CT or MRI scanner. Usually these are acquired in a regular pattern (e.g., one slice every millimeter) and usually have a regular number of image pixels in a regular pattern. This is an example of a regular volumetric grid, with each volume element, or voxel represented by a single value that is obtained by sampling the immediate area surrounding the voxel.

To render a 2D projection of the 3D data set, one first needs to define a camera in space relative to the volume. Also, one needs to define the opacity and color of every voxel. This is usually defined using an RGBA (for red, green, blue, alpha) transfer function that defines the RGBA value for every possible voxel value.

A volume may be viewed by extracting surfaces of equal values from the volume and rendering them as polygonal meshes or by rendering the volume directly as a block of data. The Marching Cubes algorithm is a common technique for extracting a surface from volume data. Direct volume rendering is a computationally intensive task that may be performed in several ways.

Direct Volume Rendering

A direct volume renderer requires every sample value to be mapped to opacity and a color. This is done with a “transfer function” which can be a simple ramp, a piecewise linear function or an arbitrary table. Once converted to an RGBA (for red, green, blue, alpha) value, the composed RGBA result is projected on correspondent pixel of the frame buffer. The way this is done depends on the rendering technique.

A combination of these techniques is possible. For instance, a shear warp implementation could use texturing hardware to draw the aligned slices in the off-screen buffer.

Volume Ray Casting

Main article: Volume ray casting.

The simplest way to project the image is to cast rays through the volume using ray casting. In this technique, a ray is generated for each desired image pixel. Using a simple camera model, the ray starts at the center of the projection of the camera (usually the eye point) and passes through the image pixel on the imaginary image plane floating in between the camera and the volume to be rendered. The ray is clipped by the boundaries of the volume in order to save time. Then the ray is sampled at regular intervals throughout the volume. The data is interpolated at each sample point, the transfer function applied to form an RGBA sample, the sample is composited onto the accumulated RGBA of the ray, and the process repeated until the ray exits the volume. The RGBA color is converted to an RGB color and deposited in the corresponding image pixel. The process is repeated for every pixel on the screen to form the completed image. Examples of high quality ray casting volume rendering can be seen on [1].

Splatting

This is a technique which trades quality for speed. Here, every volume element is splatted (like snow balls) on to the viewing surface in back to front order. These splats are rendered as disks whose properties (color and transparency) vary diametrically in normal (Gaussian) manner. Flat disks and those with other kinds of property distribution are also used depending on the application.

Shear Warp

A new approach to volume rendering was developed by Cameron and Undrill, popularized by Philippe Lacroute and Marc Levoy, and described in the paper "Fast Volume Rendering Using a Shear-Warp Factorization of the Viewing Transformation" [2] In this technique, the viewing transformation is transformed such that the nearest face of the volume becomes axis aligned with an off-screen image buffer with a fixed scale of voxels to pixels. The volume is then renderered into this buffer using the far more favourable memory alignment and fixed scaling and blending factors. Once all slices of the volume have been rendered, the buffer is then warped into the desired orientation and scale in the displayed image.

This technique is relatively fast in software at the cost of less accurate sampling and potentially worse image quality compared to ray casting. Expected overhead is storing multiple copies of the volume for the ability to have near axis aligned volumes. And that is mitigated by the run length encoding used.

Texture Mapping

Many 3D graphics systems use texture mapping to apply images, or textures, to geometric objects. Commodity PC graphics cards are fast at texturing and can efficiently render slices of a 3D volume, with realtime interaction capabilities. Workstation GPU's are even faster, and are the basis for much of the production volume visualization used in medical imaging, oil and gas, and other markets (2007). In earlier years, dedicated 3D texture mapping systems were used on workstation systems such as Silicon Graphics Infinite Reality, HP Visualize FX, and others.

These slices can either be aligned with the volume and rendered at an angle to the viewer, or aligned with the viewing plane and sampled from unaligned slices through the volume. Graphics hardware support for 3D textures is needed for the second technique.

Volume aligned texturing produces images of reasonable quality, though there is often a noticeable transition when the volume is rotated. View aligned texturing creates images of similar high quality to those of ray casting, and indeed the sampling pattern is identical.

Hardware-Accelerated Volume Rendering

A recently exploited technique to accelerate rendering is the use of modern graphics cards to accelerate traditional volume rendering algorithms such as ray-casting. Starting with the programmable pixel shaders, people recognized the power of parallel operations on multiple pixels and began to perform general purpose computations on the graphics chip. The pixel shaders, once called "register-combiners" were able to read and write randomly from texture memory, perform some basic mathematical and logical calculations. These SIMD processors, now called GPUs, were harnessed to perform general calculations such as ray tracing polygons and signal processing. With OpenGL version 2.0, the pixel shaders now are able to function as MIMD processors (now able to independently branch) with as many as 128 parallel processing elements utilizing up to 1GB of texture memory and high bit depth numerical formats. With such power, virtually any algorithm with steps that can be performed in parallel, such as volume ray casting or CT reconstruction, can be performed with tremendous acceleration. The introduction of the GLSL has made it possible for volume renderers such as Drishti to use their own algorithms optimised for the task at hand. Custom shaders can be written for variations of the volume rendering process, such as multiple volume shaders, shadow and lighting, emissive colour and so forth.

Optimization Techniques

Empty Space Skipping

Often, a volume rendering system will have a system for identifying regions of the volume containing no visible material. This information can be used to avoid rendering these transparent regions.

Early Ray Termination

This is a technique used when the volume is rendered in front to back order. For a ray through a pixel, once sufficient dense material has been encountered, further samples will make no significant contribution to the pixel and so may be ignored.

Octree and BSP space subdivision

The use of hierarchical structures such as octree and BSP-tree could be very helpful for both compression of volume data and speed optimization of volumetric ray casting process.

Volume Segmentation

By sectioning out large portions of the volume that one considers uninteresting before rendering, the amount of calculations that have to be made by ray casting or texture blending can be significantly reduced.

Multiple and Adaptive Resolution Representation

By representing less interesting regions of the volume in a coarser resolution, the data input overhead can be reduced. On closer observation, the data in these regions can be populated either by reading from memory or disk, or by interpolation.

Sources

  • R. A. Drebin, L. Carpenter, P. Hanrahan: Volume Rendering. 1988
  • Barthold Lichtenbelt, Randy Crane, Shaz Naqvi, Introduction to Volume Rendering (Hewlett-Packard Professional Books) , Hewlett-Packard Company 1998.

External links

data set (or dataset) is a collection of data, usually presented in tabular form. Each column represents a particular variable. Each row corresponds to a given member of the data set in question.
..... Click the link for more information.
Computed tomography (CT), originally known as computed axial tomography (CAT or CT scan) and body section roentgenography, is a medical imaging method employing tomography where digital geometry processing is used to generate a three-dimensional image of the
..... Click the link for more information.
Magnetic resonance imaging (MRI), formerly referred to as magnetic resonance tomography (MRT) and, in scientific circles and as originally marketed by companies such as General Electric, nuclear magnetic resonance imaging (NMRI) or NMR zeugmatography imaging
..... Click the link for more information.
A voxel (a portmanteau of the words volumetric and pixel) is a volume element, representing a value on a regular grid in three dimensional space. This is analogous to a pixel, which represents 2D image data.
..... Click the link for more information.
RGBA stands for Red Green Blue Alpha. While it is sometimes described as a color space, it is actually simply a use of the RGB color model, with extra information.
..... Click the link for more information.
Marching cubes is a computer graphics algorithm, published in the 1987 SIGGRAPH proceedings by Lorensen and Cline,[1] for extracting a polygonal mesh of an isosurface from a 3D scalar field (sometimes called voxels).
..... Click the link for more information.
Volume ray casting, sometimes called volumetric ray casting, is an image based volume rendering technique. It computes 2D images from 3D volumetric data sets. Volume ray casting, which processes volume data, must not be mistaken with ray casting, which processes surface data.
..... Click the link for more information.
Marc Levoy is a computer graphics researcher and Professor of Computer Science and Electrical Engineering at Stanford University. He is noted for pioneering work in volume rendering.
..... Click the link for more information.
pixel shader (abbreviation PS) is a shader program, normally executed on the graphics processing unit. In OpenGL, it is referred to as the fragment shader.

Function


..... Click the link for more information.
pixel shader (abbreviation PS) is a shader program, normally executed on the graphics processing unit. In OpenGL, it is referred to as the fragment shader.

Function


..... Click the link for more information.
Flynn's Taxonomy
  Single
Instruction Multiple
Instruction
Single
Data SISD MISD
Multiple
Data SIMD MIMD In computing, SIMD (Single Instruction, Multiple D
..... Click the link for more information.
graphics processing unit or GPU (also occasionally called visual processing unit or VPU) is a dedicated graphics rendering device for a personal computer, workstation, or game console.
..... Click the link for more information.
Flynn's Taxonomy
  Single
Instruction Multiple
Instruction
Single
Data SISD MISD
Multiple
Data SIMD MIMD In computing, MIMD (Multiple Instruction stream, Multiple D
..... Click the link for more information.
GLSL (OpenGL Shading Language), also known as GLslang, is a high level shading language based on the C programming language. It was created by the OpenGL ARB to give developers more direct control of the graphics pipeline without having to use assembly language or
..... Click the link for more information.
Drishti (meaning "vision" or "insight" in Sanskrit) is a multi-platform, open-source Volume Exploration and Presentation Tool. It was written for visualizing tomography data, electron-microscopy data and so forth.
..... Click the link for more information.
An octree is a tree data structure in which each internal node has up to eight children. Octrees are most often used to partition a three dimensional space by recursively subdividing it into eight octants.
..... Click the link for more information.
interpolation is a method of constructing new data points from a discrete set of known data points.

In engineering and science one often has a number of data points, as obtained by sampling or experiment, and tries to construct a function which closely fits those data points.
..... Click the link for more information.


This article is copied from an article on Wikipedia.org - the free encyclopedia created and edited by online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of the wikipedia encyclopedia articles provide accurate and timely information please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.
Herod_Archelaus


page counter