3D Volume Visualization
Volume Graphics
Maintains a 3D image representation that is
close to the underlying fully-3D object (but
discrete)
경계표면(Boundary Surface)뿐만 아니라 그 내부
정보까지 표현하고 렌더링하는데 유리
N x 2D arraies
=
3D array
Input Data: 3D Images (Volumetric Image)
it is a 3D array of point samples, called voxels (volume elements)
the point samples are located at the grid points
the process of generating a 2D image from the 3D volume is called
volume rendering
Data Acquisition
Scanned Data
CT
MRI
Ultrasound
Electron Microscopy
Simulated Data
Volume Visualization Methods
Volume Rendering
Ray casting
Isosurface Extraction
triangulation
Volume Rendering (Basic Idea)
Based on the idea of ray tracing
• Trace from each pixel as a ray into
object space
• Compute and accumulate
color/opacity value along the ray
• Assign the value to the pixel
Transfer Function
Maps voxel data values to optical properties
Voxel Data
Optical Properties
• Density
• Temperature
• Color
• Opacity
Color/opacity map
Emphasize or classify features of interest in the data
Raycasting
volumetric compositing
color
opacity
1.0
object (color, opacity)
Raycasting
Interpolation
kernel
volumetric compositing
color
opacity
1.0
object (color, opacity)
Raycasting
Interpolation
kernel
volumetric compositing
color c = c s s(1 - ) + c
opacity = s (1 - ) +
1.0
object (color, opacity)
Raycasting
volumetric compositing
color
opacity
1.0
object (color, opacity)
Raycasting
volumetric compositing
color
opacity
1.0
object (color, opacity)
Raycasting
volumetric compositing
color
opacity
1.0
object (color, opacity)
Raycasting
volumetric compositing
color
opacity
1.0
object (color, opacity)
Raycasting
volumetric compositing
color
opacity
object (color, opacity)
Volume Ray Marching
1. Raycast – once per pixel
2. Sample – uniform intervals along ray
3. Interpolate – trilinear interpolate, apply transfer function
4. Accumulate – integrate optical properties
Composition (alpha blending)
3D Texture Based Volume Rendering
Use Image-space axis-aligned slicing plane:
the slicing planes are always parallel to the view plane
Isosurface
Isosurface (i.e. Level Set ) :
C(w) = { x | F(x) - w = 0 }
( w : isovalue , F(x) : real-valued function , usually 3D volume data )
isosurfacing
얼굴 CT 볼륨 영상
밀도함수 F(x,y,z)
등위면 추출
F(x,y,z)=w
얼굴 피부 등위면
w = 피부 밀도값
두개골 등위면
w = 뼈 밀도값
Marching Cubes
[Lorensen and Cline, ACM SIGGRAPH ’87]
Goal
Input : 2D/3D/4D imaging data (scalar)
Interactive parameter : isovalue selection
Output : Isosurface triangulation
isosurfacing
Surface Intersection in a Cube
assign ZERO to vertex outside the surface
assign ONE to vertex inside the surface
Note:
Surface intersects those cube edges where one
vertex is outside and the other inside the surface
Surface Intersection in a Cube
There are 2^8=256 ways the surface may
intersect the cube
Triangulate each case
Marching Cubes Table
Using symmetries reduces 256 cases into 15 cases
<wrong surface>
Surface intersection in a cube
Create an index for each case:
Interpolate surface intersection along each edge
Calculating normals
Calculate normal for each cube vertex:
Interpolate the normals at
the vertices of the triangles:
Problems in Marching Cubes
May Generate very large meshes
Simplification
Can we generate 3D mesh?
Interval Volume Tetrahedrization
Computationally Slow
Acceleration techniques , CUDA
Ambiguity problem
Trilinear isosurface
How to select isovalue?
Contour spectrum
Problems in Marching Cubes
How to preserve sharp features?
Dual contouring
Hard to deal with extremely large volume data
Parallel
Out-of-core
Segmenting Isosurface Components?
Contour Tree
Volume Structure
Contour Tree , Morse Complex
Comparison
Volume Rendering
투명도 처리를 통해 3D볼륨 전체를 2D화면에 보여줌
뚜렷한 경계면이 없는 물체도 효과적으로 나타냄
Transfer function의 조작에 따라 결과 영상의 quality가
많이 달라질 수 있으므로, 숙련된 조작을 필요로 함.
Isosurface Extraction
Triangulation을 하기 때문에 Surface Mesh 표현법의
장점(fast rendering, shading, 등)을 가짐
하나의 isosurface는 볼륨 전체를 나타내는 것이 아니라
선택된 isovalue값을 가지는 점의 집합만 보여줌.
Visualization SW
Volume Rover
http://www.cs.utexas.edu/~bajaj/cvc/software/volrover.shtml
Transfer function