Title: Isosurface Extractions II
1Isosurface Extractions (II)
3D Isosurface
2D Isocontour
2Isosurface cell search
- Isosurfaec cells cells that contain isosurface.
- min lt isovalue lt max
-
- Marching cubes algorithm performs a linear search
to locate the isosurface cells not very
efficient for large-scale data sets.
3Isosurface Cells
- For a given isovalue, only a smaller portion of
cells are isosurface cell. - For a volume with
- n x n x n cells, the
- average number of the
- isosurface cells is nxn
- (ratio of surface v.s. volume)
n
n
n
4Efficient isosurface cell search
- Problem statement
- Given a scalar field with N cells, c1, c2, ,
- cn, with min-max ranges (a1,b1), (a2,b2), ,
- (an, bn)
- Find Ck ak lt C lt bk Cisovalue
5Efficient search methods
- Spatial subdivision (domain search)
- Value subdivision (range search)
- Contour propagation
6Domain search
- Subdivide the space into several subdomains,
check the min/max values for each subdomain - If the min/max values (extreme values) do not
contain the isovalue, we skip the entire region
Min/max
Complexity O(Klog(n/k))
7Range Search
- Organize the cells based on their min/max ranges
- Find cells that have ranges intersect with the
isovalue
Global minimum
Global maximum
Isovalue
8Range Search by min/max sort
- Sort the cells based on their min/max values
Max gt isovalue
G1
Min lt isovalue
G2
Isosurface cells G1 G2
- Efficient intersection tests are needed
9Sweeping Simplicies
- Keep two lists min and max lists
0 0 0 0 0 0
0 0 0 0 0
Max
M5 M2 M6 M4 M1 M3 M7 M8
M11 M10 M9
Min
m5 m1 m6 m3 m8 m7 m2 m9
m11 m4 m10
10Sweeping Simplicies
- Given an isovalue, find the cells which have
smaller minimum values, and then set the
corresponding bits in the max list
1 0 1 0 1 1
0 1 0 0 0
Max
M5 M2 M6 M4 M1 M3 M7 M8
M11 M10 M9
Min
m5 m1 m6 m3 m8 m7 m2 m9
m11 m4 m10
isovalue
11Sweeping Simplicies
- Then starting from the first cell with maximum
value greater than isovalue, check the bits
1 0 1 0 1 1
0 1 0 0 0
Max
M5 M2 M6 M4 M1 M3 M7 M8
M11 M10 M9
Min
m5 m1 m6 m3 m8 m7 m2 m9
m11 m4 m10
isovalue
12Sweeping Simplicies
- If the isovalue changes, only need to flip the
bits between the old and the new isovalues
1 0 1 0 1 1
0 1 0 0 0
Max
M5 M2 M6 M4 M1 M3 M7 M8
M11 M10 M9
Min
m5 m1 m6 m3 m8 m7 m2 m9
m11 m4 m10
isovalue
13Sweeping Simplicies
- Hierarchical subdivision of the value ranges
14Range Search (4)
Span Space Instead of treating each cell as a
range, we can treat it as a 2D point at (min,
max) This space consists of min and max axes is
called span space
Any problem here?
15Span Space
What are the isosurface cells?
max
How to search them?
min
C
16Span Space Search (1)
With the point representation, subdividing the
space is much easier now. Search method 1
K-D tree subdivision (NOISE algorithm)
- K-d tree
- A multi-dimensional version of binary tree
- Partition the data by alternating between
- each of the dimensions at each level of the
tree -
17NOISE Algorithm (K-d tree)
Median point
Min
Construction
Max
left
right
min
max
up
down
One node per cell
min
18NOISE Algorithm (Query)
Median point
- If ( isovalue lt root.min )
- Prune the right subtree
- Check the left subtree
Min
Max
left
right
?
up
down
19NOISE Algorithm (Query)
Median point
- If (isovalue gt root.min)
- Check both subtrees, but now the left subtree
guarantees to satisfy the min condition - Dont forget to check the root s interval as
well.
Min
Max
left
right
?
up
down
20Lattice subdivision of span space
Search Method (2) ISSUE
Complexity ?
21Interval Tree (Optimal)
Sort all the data points (x1,x2,x3,x4,. ,
xn) Let d x (mid point)
Interval Tree
n/2
We use d to divide the cells into three sets
Id, I left, and I right (recursively) Id
cells that have min lt d lt max I left
cells that have max lt d I right cells that
have min gt d
22Interval Tree
Interval Tree
Within Id, We keep two sorted lists - One by
cell min values in ascending order (AL)
- The other by cell max values in descending
order (DR)
Id cells that have min lt d lt max I
left cells that have max lt d I right cells
that have min gt d
23Interval Tree
Interval Tree
Within Id, We keep two sorted lists - One by
cell min values in ascending order (AL)
- The other by cell max values in descending
order (DR)
Query isovalue q If q d
Id cells that have min lt d lt max I
left cells that have max lt d I right cells
that have min gt d
- All the cells in Id are reported.
24Interval Tree
Interval Tree
Within Id, We keep two sorted lists - One by
cell min values in ascending order (AL)
- The other by cell max values in descending
order (DR)
Query isovalue q If q lt d
Id cells that have min lt d lt max I
left cells that have max lt d I right cells
that have min gt d
- Scan the AL list to find cells with min lt q
- Prune the right subtree
- Visit left subtree recursively
25Interval Tree
Interval Tree
Within Id, We keep two sorted lists - One by
cell min values in ascending order (AL)
- The other by cell max values in descending
order (DR)
Query isovalue q If q gt d
Id cells that have min lt d lt max I
left cells that have max lt d I right cells
that have min gt d
- Scan the DR list to find cells with max gt q
- Prune the left subtree
- Visit right subtree recursively
26Interval Tree
- Now, given an isovalue C
- If C lt d
- If C gt d
- 3) If C d
Complexity O(log(n)k) Optimal!!
Id cells that have min lt d lt max I
left cells that have max lt d I right cells
that have min gt d
27Range Search Methods
In general, range search methods all are
superfast two order of magnitude faster than
the marching cubes algorithm in terms of cell
search But they all suffer a common problem
Excessive extra memory requirement!!!