Detecting Undersampling in Surface Reconstruction Tamal K. Dey and Joachim Giesen Ohio State University
Surface Reconstruction A sample and PL approximation
Previous and recent works Functional approach Tangent plane [HDeDDMS92] Natural Neighbors [BC00] Alpha shapes [EM94] [BBCS97] Voronoi filtering Crust [AB98] Cocone [ACDL00]
Local feature size and sampling Medial axis Local feature size f(p) -sampling d(p)/f(p)
Crust Algorithm Compute V P Add Voronoi vertices Compute Delaunay Retain edges between samples only
Crust in 3D Introduce poles Filter crust triangles Filter by normals Extract manifold
Cocones Compute cocones Filter triangles whose duals intersect cocones Extract manifold Space spanned by vectors making angle /8 with horizontal
Boundaries Only part of a surface is well sampled
High curvature High curvature regions are often undersampled
Non-smoothness Impossible to sample densely 0
Well sampled patch and boundary vertices S F is well sampled if ε-sampling holds for S Restricted Voronoi on S defines boundary vertices p is interior if restricted cell has no boundary point otherwise p is boundary vertex
Cocones, radius and height cocones: space spanned by vectors making /8 with the horizontal radius r(p): radius of cocone height h(p): min distance to the poles cocone neighbors N p
Flatness condition Vertex p is flat if 1. Ratio condition: r(p) h(p) 2. Normal condition: v(p),v(q) q with p N q
Boundary Detection(1 st phase) IsFlat( p, , ) check ratio and normal condition for V p ; if both are satisfied return true else return false end
Boundary detection(2 nd phase) Boundary (P, , ) Compute the set R of flat vertices; while p R and p N q with q R and r(p) h(p) and v(p),v(q) R:=R p; endwhile return P\R end
Reconstruction Cocone (P, , ) Compute V P ; for each p P if p B compute T of triangles with duals intersecting C p ; endif enfor; Extract manifold; end B:= Boundary( P, , )
Correctness Theorem 1: All deep interior vertices are flat. Definition: An interior vertex is deep if no boundary vertex contains it as cocone neighbor.
Correctness Assumptions: (i) S´ S with points f(p) away from sample points p defines same set of boundary vertices as S does, where . (ii) Each boundary vertex has an interior vertex as neighbor. (iii) Each interior vertex is connected to a deep interior vertex only through interior vertex neighborhoods. Theorem 2: Boundary vertices cannot be flat. Theorem 3: Boundary() detects all and only boundary vertices.
Implementation Co-cone is implemented in CGAL Floating point arithmetic is faster, but produces numerical errors Exact arithmetic with integers is slow Use floating point filters Difficulty in manifold extraction step with ``false boundary vertices” due to noise and numerical error
Umbrella check Check if a vertex has an umbrella Declare a vertex without umbrella as a boundary vertex Prune triangles with sharp edges only if they are not incident with boundary vertices
Parameters theory = 0.01, higher in practice theory = 1.3 , = produce good result. Smaller detects more boundaries theory = 0.14 radians, /6 produces good result cocone angle /8 in theory and /8 in practice 0.99 0.23
Data set foot
Data set Mannequin
Data set cactus
Data Set Sat
Data set Engine
Data set Oilpump
Nonsmoothness Repaired
Noise Detection (Outliers) Outliers Cleaned
Boundary Detection Helps Modeling by Parts
Arithmetic Precision Floating point is fast, but causes numerical error Exact arithmetic is slow, but produces robust results
Precision Floating pointExact arithmetic
Timings (Exact-Double) Name Delaunay Boundary Reconstruction Cactus Cat Engine foot Mannequin Oilpump Club
Timings Name #points #triangles Reconstruction(sec.) Halfsphere Mannequin Foot Oilpump Monkeysaddle PIII, 933Mhz, 512MB
Conclusions Introduced a measure radius/height ratio for skininess of Voronoi cells Helps in detecting boundaries and sharp features Recently we have used the radius/height ratio for sample decimation (CCCG01) Used it for supersize data (PVG01) Can we use it to eliminate noise? More applications 543,652 points 143 -> 28 min 3.5 million points Unfin-> 198 min