Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE554Contouring IISlide 1 CSE 554 Lecture 5: Contouring (faster) Fall 2013.

Similar presentations


Presentation on theme: "CSE554Contouring IISlide 1 CSE 554 Lecture 5: Contouring (faster) Fall 2013."— Presentation transcript:

1 CSE554Contouring IISlide 1 CSE 554 Lecture 5: Contouring (faster) Fall 2013

2 CSE554Contouring IISlide 2 Review Iso-contours – Points where a function evaluates to a same value (iso-value) Smooth thresholded boundaries Contouring methods – Primal methods Marching Squares (2D) and Cubes (3D) Placing vertices on grid edges – Dual methods Dual Contouring (2D,3D) Placing vertices in grid cells PrimalDual

3 CSE554Contouring IISlide 3 Efficiency Iso-contours is very often used for visualizing 3D volumes – The volume data can be large (e.g, 1000^3) MRI, CT, Ultrasound, EM, etc. – The user often needs to view surfaces as she changes iso-values An efficient contouring algorithm is needed – Optimized for viewing one volume at multiple iso-values

4 CSE554Contouring IISlide 4 Marching Squares - Revisited Active cell – A grid cell where {min, max} of 4 corner values encloses the iso-value Algorithm – Visit each cell. – If active, create vertices and edges Time complexity: O(n+k) n: the number of all grid cells k: the number of active cells 12321 23432 34543 23432 12321 Iso-value = 3.5 O(n) O(k)

5 CSE554Contouring IISlide 5 Marching Squares - Revisited Running time (seconds) Iso-value Only visiting each square and checking if it is active (without creating vertices and edges) O(n) Marching Squares O(n+k)

6 CSE554Contouring IISlide 6 Speeding Up Contouring Data structures that allow faster query of active cells – Quadtrees (2D), Octrees (3D) Hierarchical spatial structures for quickly pruning large areas of inactive cells Complexity: O(k*Log(n)) – Interval trees An optimal data structure for range finding Complexity: O(k+Log(n))

7 CSE554Contouring IISlide 7 Interval Trees Running time (seconds) Iso-value Marching Squares O(n+k) Quadtree O(k*Log(n)) Interval tree O(k+Log(n))

8 CSE554Contouring IISlide 8 Speeding Up Contouring Data structures that allow faster query of active cells – Quadtrees (2D), Octrees (3D) Hierarchical spatial structures for quickly pruning large areas of inactive cells Complexity: O(k*Log(n)) – Interval trees An optimal data structure for range finding Complexity: O(k+Log(n))

9 CSE554Contouring IISlide 9 Quadtrees (2D) Basic idea:coarse-to-fine search – Start with the entire grid: If the {min, max} of all grid values does not enclose the iso-value, stop. Otherwise, divide the grid into four sub-grids and repeat the check within each sub-grid. If the sub-grid is a unit cell, it’s an active cell.

10 CSE554Contouring IISlide 10 Quadtrees (2D) Basic idea:coarse-to-fine search – Start with the entire grid: If the {min, max} of all grid values does not enclose the iso-value, stop. Otherwise, divide the grid into four sub-grids and repeat the check within each sub-grid. If the sub-grid is a unit cell, it’s an active cell. Iso-value in {min,max} Iso-value not in {min,max}

11 CSE554Contouring IISlide 11 Quadtrees (2D) Basic idea:coarse-to-fine search – Start with the entire grid: If the {min, max} of all grid values does not enclose the iso-value, stop. Otherwise, divide the grid into four sub-grids and repeat the check within each sub-grid. If the sub-grid is a unit cell, it’s an active cell. Iso-value in {min,max} Iso-value not in {min,max}

12 CSE554Contouring IISlide 12 Quadtrees (2D) Basic idea:coarse-to-fine search – Start with the entire grid: If the {min, max} of all grid values does not enclose the iso-value, stop. Otherwise, divide the grid into four sub-grids and repeat the check within each sub-grid. If the sub-grid is a unit cell, it’s an active cell. Iso-value in {min,max} Iso-value not in {min,max}

13 CSE554Contouring IISlide 13 Quadtrees (2D) Basic idea:coarse-to-fine search – Start with the entire grid: If the {min, max} of all grid values does not enclose the iso-value, stop. Otherwise, divide the grid into four sub-grids and repeat the check within each sub-grid. If the sub-grid is a unit cell, it’s an active cell. Iso-value in {min,max} Iso-value not in {min,max}

14 CSE554Contouring IISlide 14 Quadtrees (2D) Basic idea:coarse-to-fine search – Start with the entire grid: If the {min, max} of all grid values does not enclose the iso-value, stop. Otherwise, divide the grid into four sub-grids and repeat the check within each sub-grid. If the sub-grid is a unit cell, it’s an active cell. Iso-value in {min,max} Iso-value not in {min,max}

15 CSE554Contouring IISlide 15 Quadtrees (2D) A degree-4 tree – Root node: entire grid – Each node maintains: {min, max} in the enclosed part of the image (in a non-leaf node) 4 children nodes for the 4 quadrants 123 234 345 {1,5} {1,3}{2,4} {3,5} Grid Level-1 nodes (leaves) Root node Quadtree

16 CSE554Contouring IISlide 16 Quadtrees (2D) Tree building: bottom-up – Each grid cell becomes a leaf node – Assign a parent node to every group of 4 nodes Compute the {min, max} of the parent node from those of the children nodes Padding dummy leaf nodes (e.g., {-∞,-∞}) if the dimension of grid is not power of 2 {1,3}{2,4} {3,5}{2,4} 123 234 345 {1,5} Grid Leaf nodes Root node

17 CSE554Contouring IISlide 17 Tree building: a recursive algorithm Quadtrees (2D) // A recursive function to build a single quadtree node // for a sub-grid at corner (lowX, lowY) and with length len buildNode (lowX, lowY, len) 1.If (lowX, lowY) is out of range: Return a leaf node with {-∞,-∞} 2.If len = 1: Return a leaf node with {min, max} of corner values 3.Else 1.c1 = buildNode (lowX, lowY, len/2) 2.c2 = buildNode (lowX + len/2, lowY, len/2) 3.c3 = buildNode (lowX, lowY + len/2, len/2) 4.c4 = buildNode (lowX + len/2, lowY + len/2, len/2) 5.Return a node with children {c1,…,c4} and {min, max} of all {min, max} of these children // Building a quadtree for a grid whose longest dimension is len Return buildNode (1, 1, 2^Ceiling[Log[2,len]])

18 CSE554Contouring IISlide 18 Quadtrees (2D) Tree building: bottom-up – Each grid cell becomes a leaf node – Assign a parent node to every group of 4 nodes Compute the {min, max} of the parent node from those of the children nodes Padding background leaf nodes (e.g., {-∞,-∞}) if the dimension of grid is not power of 2 – Complexity: O(n) Total number of nodes in the tree is < 2n But we only need to do this once (after that, the tree can be used to speed up contouring at any iso- value) {1,3}{2,4} {3,5}{2,4} 123 234 345 {1,5} Grid Leaf nodes Root node

19 CSE554Contouring IISlide 19 Quadtrees (2D) Contouring with a quadtree: top-down – Starting from the root node – If {min, max} of the node encloses the iso-value If the node is not a leaf, search within each of its children If the node is a leaf, contour in that grid cell {1,5} {1,3}{2,4} {3,5}{2,4} Leaf nodes Root node 123 234 345 Grid iso-value = 2.5

20 CSE554Contouring IISlide 20 Quadtrees (2D) // A recursive function to contour in a quadtree node // for a sub-grid at corner (lowX, lowY) and with length len contourNode (node, iso, lowX, lowY, len) 1.If iso is within {min, max} of node 1.If len = 1: do Marching Squares in this grid square 2.Else (let the 4 children be c1,…,c4) 1.contourNode (c1, iso, lowX, lowY, len/2) 2.contourNode (c2, iso, lowX + len/2, lowY, len/2) 3.contourNode (c3, iso, lowX, lowY + len/2, len/2) 4.contourNode (c4, iso, lowX + len/2, lowY + len/2, len/2) // Contouring using a quadtree whose root node is Root // for a grid whose longest dimension is len contourNode (Root, iso, 1, 1, 2^Ceiling[Log[2,len]]) Contouring with a quadtree: a recursive algorithm

21 CSE554Contouring IISlide 21 Quadtrees (2D) Contouring with a quadtree: top-down – Starting from the root node – If {min, max} of the node encloses the iso-value If the node is an intermediate node, search within each of its children nodes If the node is a leaf, output contour in that grid square – Complexity: (at most) O(k*Log(n)) Much faster than O(k+n) (Marching Squares) if k<<n But not efficient when k is large (can be as slow as O(n)) {1,5} {1,3}{2,4} {3,5}{2,4} Leaf nodes Root node 123 234 345 Grid iso-value = 2.5

22 CSE554Contouring IISlide 22 Quadtrees (2D) Running time (seconds) Iso-value Marching Squares O(n+k) Quadtree O(k*Log(n))

23 CSE554Contouring IISlide 23 Quadtrees (2D): Summary Algorithm – Preprocessing: building the quad tree Independent of iso-values – Contouring: traversing the quad tree – Both are recursive algorithms Time complexity – Tree building: O(n) Slow, but one-time only – Contouring: O(k*Log(n))

24 CSE554Contouring IISlide 24 Octrees (3D): Overview Algorithm: similar to quadtrees – Preprocessing: building the octree Each non-leaf node has 8 children nodes, one for each octant of grid – Contouring: traversing the octree – Both are recursive algorithms Time complexity: same as quadtrees – Tree building: O(n) Slow, but one-time only – Contouring: O(k*Log(n))

25 CSE554Contouring IISlide 25 Speeding Up Contouring Data structures that allow faster query of active cells – Quadtrees (2D), Octrees (3D) Hierarchical spatial structures for quickly pruning large areas of inactive cells Complexity: O(k*Log(n)) – Interval trees An optimal data structure for range finding Complexity: O(k+Log(n))

26 CSE554Contouring IISlide 26 Interval Trees Basic idea – Each grid cell occupies an interval of values {min, max} An active cell’s interval intersects the iso-value – Stores all intervals in a search tree for efficient intersection queries Minimizes the “path” from root to all leaves intersecting any given iso-value 0255 Iso-value

27 CSE554Contouring IISlide 27 Interval Trees A binary tree – Root node: all intervals in the grid – Each node maintains: δ : Median of end values of all intervals (used to split the children intervals) (in a non-leaf node) Two children nodes – Left child: intervals strictly lower than δ – Right child: intervals strictly higher than δ Two sorted lists of intervals intersecting δ – Left list (AL): ascending order of min-end of each interval – Right list (DR): descending order of max-end of each interval

28 CSE554Contouring IISlide 28 Interval Trees Intervals: Interval tree: δ=7 δ=4δ=10 AL: d,e,f,g,h,i DR: i,e,g,h,d,f AL: j,k,l DR: l,j,k AL: m DR: m AL: a,b,c DR: c,a,b δ=12

29 CSE554Contouring IISlide 29 Interval Trees Intersection queries: top-down – Starting with the root node If the iso-value is smaller than δ – Scan through AL: output all intervals whose min-end is smaller than iso-value. – Go to the left child. If the iso-value is larger than δ – Scan through DR: output all intervals whose max-end is larger than iso-value. – Go to the right child. If iso-value equals δ – Output AL (or DR).

30 CSE554Contouring IISlide 30 Interval Trees Intervals: Interval tree: δ=7 δ=4δ=10 AL: d,e,f,g,h,i DR: i,e,g,h,d,f AL: j,k,l DR: l,j,k AL: m DR: m AL: a,b,c DR: c,a,b δ=12 iso-value = 9

31 CSE554Contouring IISlide 31 Interval Trees Intervals: Interval tree: δ=7 δ=4δ=10 AL: d,e,f,g,h,i DR: i,e,g,h,d,f AL: j,k,l DR: l,j,k AL: m DR: m AL: a,b,c DR: c,a,b δ=12 iso-value = 9

32 CSE554Contouring IISlide 32 Interval Trees Intervals: Interval tree: δ=7 δ=4δ=10 AL: d,e,f,g,h,i DR: i,e,g,h,d,f AL: j,k,l DR: l,j,k AL: m DR: m AL: a,b,c DR: c,a,b δ=12 iso-value = 9

33 CSE554Contouring IISlide 33 Interval Trees Intersection queries: top-down – Starting with the root node If the iso-value is smaller than δ – Scan through AL: output all intervals whose min-end is smaller than iso-value. – Go to the left child. If the iso-value is larger than δ – Scan through DR: output all intervals whose max-end is larger than iso-value. – Go to the right child. If iso-value equals δ – Output AL (or DR). – Complexity: O(k + Log(n)) k: number of intersecting intervals (active cells) Much faster than O(k+n) (Marching squares/cubes)

34 CSE554Contouring IISlide 34 Interval Trees Tree building: top-down – Starting with the root node (which includes all intervals) – To create a node from a set of intervals, Find δ (the median of all ends of the intervals). Sort all intervals intersecting with δ into the AL, DR Construct the left (right) child from intervals strictly below (above) δ – A recursive algorithm

35 CSE554Contouring IISlide 35 Interval Trees Intervals: Interval tree:

36 CSE554Contouring IISlide 36 Interval Trees Intervals: Interval tree: δ=7 AL: d,e,f,g,h,i DR: i,e,g,h,d,f

37 CSE554Contouring IISlide 37 Interval Trees Intervals: Interval tree: δ=7 δ=4 AL: d,e,f,g,h,i DR: i,e,g,h,d,f AL: a,b,c DR: c,a,b

38 CSE554Contouring IISlide 38 Interval Trees Intervals: Interval tree: δ=7 δ=4δ=10 AL: d,e,f,g,h,i DR: i,e,g,h,d,f AL: j,k,l DR: l,j,k AL: a,b,c DR: c,a,b

39 CSE554Contouring IISlide 39 Interval Trees Intervals: Interval tree: δ=7 δ=4δ=10 AL: d,e,f,g,h,i DR: i,e,g,h,d,f AL: j,k,l DR: l,j,k AL: m DR: m AL: a,b,c DR: c,a,b δ=12

40 CSE554Contouring IISlide 40 Interval Trees Tree building: top-down – Starting with the root node (which includes all intervals) – To create a node from a set of intervals, Find δ (the median of all ends of the intervals). Sort all intervals intersecting with δ into the AL, DR Construct the left (right) child from intervals strictly below (above) δ – A recursive algorithm – Complexity: O(n*Log(n)) A linear sweep at each level of the tree Depth of the tree is Log(n) (as a result of using the median to split) Again, this is one-time only

41 CSE554Contouring IISlide 41 Interval Trees Running time (seconds) Iso-value Marching Squares O(n+k) Quadtree O(k*Log(n)) Interval tree O(k+Log(n))

42 CSE554Contouring IISlide 42 Interval Trees: Summary Algorithm – Preprocessing: building the interval tree Independent of iso-values – Contouring: traversing the interval tree – Both are recursive algorithms Tree-building and traversing are same in 2D and 3D Time complexity – Tree building: O(n*log(n)) Slow, but one-time – Contouring: O(k+log(n))

43 CSE554Contouring IISlide 43 Further Readings Quadtree/Octrees: – “Octrees for Faster Isosurface Generation”, Wilhelms and van Gelder (1992) Interval trees: – “Dynamic Data Structures for Orthogonal Intersection Queries”, by Edelsbrunner (1980) – “Speeding Up Isosurface Extraction Using Interval Trees”, by Cignoni et al. (1997)

44 CSE554Contouring IISlide 44 Further Readings Other acceleration techniques: – “Fast Iso-contouring for Improved Interactivity”, by Bajaj et al. (1996) Growing connected component of active cells from pre-computed seed locations – “View Dependent Isosurface Extraction”, by Livnat and Hansen (1998) Culling invisible mesh parts – “Interactive View-Dependent Rendering Of Large Isosurfaces”, by Gregorski et al. (2002) Level-of-detail: decreasing mesh resolution based on distance from the viewer Gregorski et al. Livnat and Hansen


Download ppt "CSE554Contouring IISlide 1 CSE 554 Lecture 5: Contouring (faster) Fall 2013."

Similar presentations


Ads by Google