Title: Volume Visualization Visualization II MSIM 842, CS 795/895
1Volume VisualizationVisualization IIMSIM 842,
CS 795/895
- Instructor
- Jessica Crouch
2Volume Viz Problem
- Data points fill a 3D volume
- You can only display one 2D image at a time
- Naïve rendering of a volume will just let you see
the surface - How can you visualize the volume data in a way
that lets you understand the internal structure
of the data?
3Structured vs. Scattered Data
- The best approach will depend on the
characteristics of the data - Data points arranged in rows, columns, and layers
(3D image) can be referred to as voxels
(volumetric-pixels) - Data points that follow a non-gridded pattern are
called scattered
Wikipedia image
4Volume Viz Data Dimensionality
- Each data point has
- 3D coordinates (x,y,z), specifying a position in
the volume - and one of the following
- Scalar a single number, 0D data
- Vector a list of numbers, 1D data
- Tensor a matrix or ND array of numbers, for Ngt1
-
5Data examples
- Scalar Data
- CT Scan ? x-ray opacity for each voxel
- PET Scan ? positron radiation for each voxel
- Atmospheric simulation (or measurement) ?
pollutant concentration - Ocean temperature distribution
- Vector Data
- Velocity vectors at each voxel
- Fluid flow (river water, arterial blood, etc.)
- Displacement vectors at each voxel
- Provides mapping between different deformed
configurations of the same object - Tensor data
- Higher dimensional data is more complicated
- Stress and strain matrices
- Gradients of 3D functions
6Simplest Case
- Lets consider continuous, scalar, voxel data
- Geometrically regular arrangement (3D grid)
- Just 1 data value per voxel
- Think of CT data (3D x-ray)
- What would you be interested in seeing?
- How would you construct a visualization?
7Scalar Voxel Viz.
- Simplest possible visualization is to just look
at the slices - Use color mapping (or grayscale mapping) to see
slice values - Slices can be useful
- We can do more interesting things
8Scalar Voxel Viz.
- Bone voxels will be bright (have large values),
other voxels will be dark - How could you visualize the surface of the bones?
- Several alternatives exist, including
- 1. Render an isosurface Use Marching Cubes
Algorithm - 2. Ray Casting Integrate scalar variable along
the view direction - 3. Splatting
9(No Transcript)
10Isosurfaces from 3D
- How to construct a polygonal surface from a 3D
dataset? - Find points on the isosurface of a scalar
variable - 3D analog of 2D contour maps
- You pick a meaningful threshold value
- Voxels with data values below the threshold sit
on one side of the isosurface, voxel with data
values above the threshold sit on the other - Simplifying assumption is that threshold value
0 - To force this, just subtract the desired
threshold value from all data points - Tessellate points on the isosurface to create a
polygonal representation of the surface - The Marching Cubes algorithm does this
- This is one of the famous, older (gt20 yrs) viz.
algorithms - Render the tessellated isosurface using normal 3D
graphics methods
11(No Transcript)
12(No Transcript)
13(No Transcript)
14Isosurfaces Opacity
15The Visible Man Image Data
16Visible Man Isosurfaces
17(No Transcript)
18Marching Cubes Considered
- How effective is the visualization perceptually?
- What can you see?
- What cant you see?
- How is this in terms of efficiency?
- Phase I
- Phase II
- Rendering
- Compare other approaches
19Ray Casting Volume Data
20Review Ordinary Ray Casting
21(No Transcript)
22Ray Casting with a Voxel
23(No Transcript)
24Ray Casting for Approximation of Light Integral
25(No Transcript)
26Examples
27Ray Casting Considered
- How effective?
- How are the images different from those produced
by Marching Cubes? - How efficient?
- Another alternative
28Volume Splatting
- Ray casting is an image space method
- Ray are generated per pixel, and travel out into
the volume - Volume splatting is an object space method
- Data points in the volume are mapped (splatted)
onto the image plane
29Splatting A Feed Forward Process
Feed forward Splatting
Splat!
30Splatting (feed-forward)
?
31Fill the holes
We need to fill the pixel values between the
volume projection samples
?
323D Kernel for Splatting
Need to know the 3D extent of each voxel, and
Then project the extent to the image plane
This is called footprint
33(No Transcript)
34 Visibility
- How does occlusion work?
- Splatting uses back to front compositing
- Samples in front are added on top of and
partially obscure previously splatted (further
back) samples
35Gaussian kernel
- A popular kernel is the Gaussian function (think
bell curve) - Sigma controls the width
- Gaussians have circular splat footprints
36Ray Casting vs. Splatting
- What are the differences in the images produced?
- Think about aliasing
- Efficiency considerations?
- In what order are the voxel data points accessed?
- For ray casting?
- For splatting?
37Summary of Techniques
- Marching cubes
- Construct polygonal isosurfaces
- Render with regular graphics pipeline
- Ray casting
- Image space algorithm
- Shoot rays from image into volume, integrate
color opacity along each ray - Volume splatting
- Object space algorithm
- Project each voxel onto the image plane
- These are good ways of looking directly at the
recorded data. What could you do to focus
attention on significant features in the data?
38Feature Extraction
- What is a significant feature?
- Answer is application dependent
- Often, regions with a high gradient are
significant - What is the gradient of a voxel volume?
- Look at the gradient of a 2D image
3910 50 250 100 10
10 50 250 100 10
250 250 250 250 250
100 100 250 100 100
10 10 250 10 10
25 120 25 -120 -50
25 120 25 -120 -50
125 0 0 0 -125
50 75 0 -75 -50
5 120 0 -120 -5
-.5 0 .5
-.5 0 .5
-.5 0 .5
Derivative in X direction
4010 50 250 100 10
10 50 250 100 10
250 250 250 250 250
100 100 250 100 100
10 10 250 10 10
-5 -25 -125 -50 -5
-120 -100 0 -75 -120
-45 -25 0 0 -45
120 120 0 120 120
50 50 125 50 50
.5 .5 .5
0 0 0
-.5 -.5 -.5
Derivative in Y direction
41Gradient Direction Vectors
dI/dx
dI/dy
25 120 25 -120 -50
25 120 25 -120 -50
125 0 0 0 -125
50 75 0 -75 -50
5 120 0 -120 -5
-5 -25 -125 -50 -5
-120 -100 0 -75 -120
-45 -25 0 0 -45
120 120 0 120 120
50 50 125 50 50
42Volume gradient
- Is a 3x1 vector
- dI/dx dI/dy dI/dz
- Vector points uphill in direction of increasing
data value - Vector length (magnitude) indicates how quickly
data values in the neighborhood are changing
43Gradient Magnitude
- Given scalar data, the gradient magnitude can be
computed - Result is another scalar data set
- Each voxel value gets the length of the gradient
vector computed for the original data - Large gradient magnitude values in a region
indicate sharp changes in the original data
44Gradient Magnitude Viz.
- Sharp changes are often significant
- May indicate an edge or surface
- Large gradient in CT data indicate a voxel is on
bone surface - May indicate where something important is
happening - Large temperature gradient in atmosphere can
indicate a weather front - Can apply the three visualization methods already
discussed to the gradient magnitude data
45Other feature extraction methods
- Can apply other types of pre-processing to the
input data to find areas of interest - Search for blobs of a certain size
- Search for areas with a certain texture or
pattern - Filter out high frequency noise from input data
- Create new data set by assigning voxel values
based on how well original data matches the
search criteria - Have to know what youre looking for, what
defines significant for a particular
application
46Still to come
- Consideration of volume viz. for higher
dimensional data - Vectors
- Tensors
- Time-varying sequences
- Data with probabilistic uncertainty
47(No Transcript)
48Streamlines
Follow the flow of a vector field, tracing the
path a particle would take
49Tensor Glyphs
- Ellipsoids, Cuboids, Superquadratics (see
right), other 3D polyhedra and implicit surface
shapes - For 3x3 matrices, illustrates 3 axes (or
eigenvectors)