What is volume rendering? Accumulate information along 1 dimension line through volume
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
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 1D projections from unique angles –1D Fourier transform interpolated to 2D array F(w x,w y ) –Invert Fourier to recover original density function f(x,y)
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 & light source I E Attenuate: to lessen the amount, force, magnitude, or value of
Image Order, color C, opacity Ray Casting 3D density data (e.g., CAT scan) –3D color C(x,y,z) –3D opacity (x,y,z) 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 DVR
Raycast! Raycast: combine c & into C(R), color seen by ray R. K K C(R) = ∑ C(R,k) (R,k) (1 - (R,j)) k=0 j=k+1 (R,k) : k th 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 of in front/behind - where does max lay? Single Ray Scalar value Distance along ray Max intensity Mean Intensity A C B 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 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?) Starting point for sampling Initial point of ray 1st intersection
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 –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 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 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.
Your consent to our cookies if you continue to use this website.