Direct Volume Rendering What is volume rendering Accumulate

  • Slides: 17
Download presentation
Direct Volume Rendering

Direct Volume Rendering

What is volume rendering? • Accumulate information along 1 dimension line through volume

What is volume rendering? • Accumulate information along 1 dimension line through volume

Volume rendering vs. isosurfaces • • • No intermediate geometry No thresholding needed View

Volume rendering vs. isosurfaces • • • No intermediate geometry No thresholding needed View dependent Uses all data instead of just some Fuzzy vs sharp appearance

Two General Methods Two general methods: –Image order: ray casting –Object order: splatting

Two General Methods Two general methods: –Image order: ray casting –Object order: splatting

Other methods (handwaving only!) • Texture slabs – Volume loaded into texture map memory

Other methods (handwaving only!) • Texture slabs – Volume loaded into texture map memory of graphics card – “slab” between each pair of volume rendering slices – Pre-integration of volume rendering integral possible

Other methods, cont’d • Fourier volume rendering – Many 1 D projections from unique

Other methods, cont’d • Fourier volume rendering – Many 1 D projections from unique angles – 1 D Fourier transform interpolated to 2 D array F(wx, wy) – Invert Fourier to recover original density function f(x, y)

The Volume Integral • • • B = ∫I D (cos ) e- ∫D

The Volume Integral • • • B = ∫I D (cos ) e- ∫D ds dt : angle between I & E at each voxel on ray B: cumulative attenuated info along ray : decay constant D ds: accumulated densities between voxel & I light source E Attenuate: to lessen the amount, force, magnitude, or value of

Image Order, color C, opacity • Ray Casting • 3 D density data (e.

Image Order, color C, opacity • Ray Casting • 3 D density data (e. g. , CAT scan) – 3 D color C(x, y, z) – 3 D opacity (x, y, z) DVR • C(x, y, z) determined by gradient (“surface” normal) & lighting (independent of other volume voxels between the point & the light) • (x, y, z) determined by mapping density values to different types of tissue

Raycast! • Raycast: combine c & into C(R), color seen by ray R. K

Raycast! • Raycast: combine c & into C(R), color seen by ray R. K K C(R) =∑ C(R, k) (1 - (R, j)) k=0 j=k+1 (R, k) : kth voxel along ray C(R, 0): color of background (back to front!) (R, 0) = 1 (opaque background) For each pixel, shoot ray, calculate C(R)

Raycasting Variations/Issues 1. MIP- maximum intensity projection good for noisy data but lose differentiation

Raycasting Variations/Issues 1. MIP- maximum intensity projection good for noisy data but lose differentiation of in front/behind - where does max lay? A Scalar value Single Ray Max intensity B Mean Intensity Distance along ray C C(R) = A or C(R) = B or C(R) = C, (distance to reach accumulated value)

More Variations/Issues 2. Sampling • Regular sampling – What is correct step size? Computation

More Variations/Issues 2. Sampling • Regular sampling – What is correct step size? Computation cost vs smoothness, may miss details • Cell intersection – What if ray enters near 90 degrees? – Bresenham method – Other issues covered in VTK text

More Variations/Issues • Parallel (easy for hardware!) vs. perspective projection( will image warp? )

More Variations/Issues • Parallel (easy for hardware!) vs. perspective projection( will image warp? ) • Starting point for sampling Initial point of ray 1 st intersection

More Variations/Issues • Data vs color – Calculate color at each vertex, then trilinear

More Variations/Issues • Data vs color – Calculate color at each vertex, then trilinear interpolate to sample – Use data at each vertex, trilinear interpolate to sample. THEN convert to color based on interpolated values • Early termination based on accumulated opacity

Object Order • For each voxel – Project (throw) voxel to projection screen –

Object Order • For each voxel – Project (throw) voxel to projection screen – Apply filtering to ‘splat’, e. g. gaussian, proportional to distance from plane – Alpha blending – Splatting may be done • Front to back • Back to front

Object Order • Discrete process which produces holes on the periphery or when perspective

Object Order • Discrete process which produces holes on the periphery or when perspective projection gets extreme. ! • Countered by distributing the energy across multiple pixels via a footprint table. All splats make a footprint and, using the table, adjustments can be made before rendering. Note: Footprint is the same for each voxel when using parallel projection

Coherent Projection • • Scanline algorithm Much faster than splatting for parallel projection Scan

Coherent Projection • • Scanline algorithm Much faster than splatting for parallel projection Scan converts the depth information behind each projected polygon. (Recall scan conversion: line-by-line, fill polygons) • Interpolated data and color samples used in raycasting can be accounted for by integrating the values at each scan converting step.