107 Views

Download Presentation
##### Volume Rendernig

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Volume Rendernig**CSE 781 Winter 05 Han-Wei Shen**Visualization Process**sensors simulation database raw data Transformation images**Visualization Pipeline**sensors simulation database raw data filter vis data mapping Renderable primitives rendering images**Visualization Pipeline**sensors simulation database raw data • Denoising • Decimation • Multiresolution • Mesh generation • etc filter vis data Renderable primitives images**Visualization Pipeline**sensors simulation database raw data • Geometry: • Line • Surface • Voxel • Attributes: • Color • Opacity • Texture vis data mapping Renderable primitives images**Visualization Pipeline**sensors simulation database raw data • Surface rendering • Volume rendering • Point based rendering • Image based rendering • NPR vis data Renderable primitives rendering images**Volume Rendering**• Goal: visualize three-dimensional functions • Measurements (medical imaging) • Numerical simulation output • Analytic functions**Data Representation**3D volume data are represented by a finite number of cross sectional slices (a stack of images) N x 2D arraies = 3D array**A voxel is a cubic cell, which**has a single value cover the entire cubic region A voxel is a data point at a corner of the cubic cell The value of a point inside the cell is determined by interpolation Data Representation (2) What is a Voxel? – Two definitions**Important Steps**• Sampling and Reconstruction • Classification • Shading • Optical model By Ray Casting or Texture Hardware**Ray Casting Basic Idea**• Data are defined at the corners • of each cell (voxel) • The data value inside the • voxel is determined using • tri-linear interpolation • No ray position round-off is • needed when sampling • Accumulate colors and opacities • along the ray path c1 c2 c3**Volume Rendering Pipeline**Acquired values f0(xi) Prepared values f1(xi) Compositing Image Pixels classification voxel opacity a(x) sample opacities Cs(x) shading voxel colors Ci(x) sample colors Cs(x)**Tri-linear Interpolation**• Use 7 linear interpolations • Interpolate both value and • gradient • Map to color and • opacity c2**Shading and Classification**• - Shading: compute a color for each data point in the • volume • - Classification: Compute an opacity for each data point • in the volume • Done by table lookup (transfer function) f(xi) C(xi), a(xi)**Shading**• Use a phong illumination model • Light (color) = ambient + diffuse + specular • C(x) = Cp * Ka + Cp / (K1 + K2* d(x)) * • (Kd * (N(x) . L + Ks * (N(x) . H )^n ) • Cp: color of light • ka,kd,ks: ambient, diffusive, specular coefficient • K1,K2: constant (used for depth attenuation) • N(x): normal at x**Normal estimation**• How to compute N(x)? • Compute the gradient at each corner • Interpolate the normal using central difference N(x,y,z) = [ (f(x+1)-f(x-1))/2, (f(y+1)-f(y-1))/2, (f(z+1)-f(z-1))/2 ] Y+1 z+1 x-1, y-1, z-1 X+1**21.05**27.05 24.03 20.05 Classification • Map from numerical values to visual attributes • Color • Transparency • Transfer functions • Color function: c(s) • Opacity function: a(s)**21.05**27.05 24.03 20.05 Classification Order • Pre classification: Classification first, and then filter • Post classification: filter first, then classification 25.3 post pre**Optimal model**• Assume a denity-emitter model (approximation) • Each data point in the volume can emit and absort light • Light emission – color classification • Light absortion – block light from behind due to non-zero opacity**Optical Model**• Assuming: x(t) : ray, parameterized by t s(x(t)) : scalar value c(s(x(t)): color; emitted light a(s(x(t)): absortion coefficient**t**D - a(s(x(t’)))dt’ C = c(s(x(t)) e dt 0 0 D 0 C Ray Integration • Calculate how much light can enter the eye for each ray**D**0 C Discrete Ray Integration n i-1 C = SC (1- A ) i i 0 0**Compositing (2)**Use ‘Front-to-Back’ Compositing formula Front-to-Back compositing: use ‘over’ operator C = initial color ‘over’ C1 C = C ‘over’ C2 C = C ‘over’ C3 … Cout = Cin + C(x)*(1- ain); aout = ain + a(x) *(1-ain) c1 c2 c3**Compositing**Or Back-to-Front (alpha blending) Back-to-Front compositing: use ‘under’ operator C = C1 ‘under’ initial C = C2 ‘under C C = C3 ‘under C … Cout = Cin * (1-a(x)) + C(x)*a(x) c1 c2 c3**Texture Mapping**+ Textured-mapped polygon 2D image 2D polygon**Tex. Mapping for Volume Rendering**Consider ray casting … (top view) z y x**z**y x Texture based volume rendering Use pProxy geometry for sampling • Render every xz slice in the volume as a texture-mapped polygon • The proxy polygon will sample the volume data • Per-fragment RGBA (color and opacity) as classification results • The polygons are blended from back to front**y**x Changing Viewing Direction What if we change the viewing position? That is okay, we just change the eye position (or rotate the polygons and re-render), Until …**y**x Changing View Direction (2) Until … You are not going to see anything this way … This is because the view direction now is Parallel to the slice planes What do we do?**y**x Switch Slicing Planes • What do we do? • Change the orientation of slicing planes • Now the slice polygons are parallel to • YZ plane in the object space**y**x Some Considerations… (5) When do we need to change the slicing orientation? When the major component of view vector changes from y to -x**Some Considerations… (6)**Major component of view vector? Given the view vector (x,y,z) -> get the maximal component If x: then the slicing planes are parallel to yz plane If y: then the slicing planes are parallel to xz plane If z: then the slicing planes are parallel to xy plane -> This is called (object-space) axis-aligned method.**z**y x Three copies of data needed • We need to reorganize the input textures for diff. View directions. • Reorganize the textures on the fly is too time consuming. We want to prepare the texture sets beforehand xz slices yz slices xy slices**Texture based volume rendering**Algorithm: (using 2D texture mapping hardware) Turn off the depth test; Enable blending For (each slice from back to front) { - Load the 2D slice of data into texture memory - Create a polygon corresponding to the slice - Assign texture coordinates to four corners of the polygon - Render and blend the polygon (use OpenGL alpha blending) to the frame buffer }**Problem (1)**• Non-even sampling rate d d’ d’’ d’’ > d’ > d Sampling artifact will become visible**y**x Problem (2) Object-space axis-alighed method can create artifact: Popping Effect There is a sudden change of slicing direction when the view vector transits from one major direction to another. The change in the image intensity can be quite visible**d’’**d d’ Solution (1) • Insert intermediate slides to maintain the sampling rate**Solution (2)**Use Image-space axis-aligned slicing plane: the slicing planes are always parallel to the view plane**Image-Space Axis-Aligned**Arbitrary slicing through the volume and texture mapping capabilities are needed - Arbitrary slicing: this can be computed using software in real time This is basically polygon-volume clipping**Image-Space Axis-Aligned (2)**Texture mapping to the arbitrary slices This requires 3D Solid texture mapping Input texture: A bunch of slices (volume) Depending on the position of the polygon, appropriate textures are mapped to the polygon.**(r2,s2,t2)**(r3,s3,t3) (r1,s1,t1) (r0,s0,t0) 3D Texture Mapping Now the input texture space is 3D Texture coordinates (r,s) -> (r,s,t) (0,1,1) (1,1,1) (0,1,0) (1,1,0) (1,0,0) (0,0,0)**Pros and Cons**• 2D textured object-aligned slices + Very high performance + High availability - High memory requirement - Bi-linear interpolation - inconsistent sampling rates - popping artifacts**Pros and Cons**• 3D textured view-aligned slices • + Higher quality • + No popping effect • Need to compute the slicing planes for • every view angle • Limited availability