Upload
june-parker
View
214
Download
0
Tags:
Embed Size (px)
Citation preview
SURFACE RECONSTRUCTION FROM POINT CLOUD
Bo GaoMaster’s ThesisDecember, 2007
Thesis Committee: Professor Harriet FellProfessor Robert Futrelle
College of Computer ScienceNortheastern University
3D Scanner
A 3D scanner is a device that analyzes a real-world object or environment to collect data on its shape and possibly its appearance (i.e. color).
Technology Contact
CMM (Coordinate Measuring Machine) Non-Contact
Laser Structured Light
3D Scanner (Pictures)
Brontes Technologies, A 3M Company
Point Cloud
A point cloud is a set of 3D points describing the outlines or surface features of an object
Stanford 3D scanning repository Brontes’ 3D scanning data Others
Surface Reconstruction
Given a set of sample points X assumed to lie on or near an unknown surface F, create a surface model S approximating F.
Automatic, accurate, concise, piecewise, etc.
CAD designs, medical imaging, visualization, entertainment, reverse engineering, etc.
Related Work
Computer Graphics Hoppe et al. (Zero-set Algorithm) Curless and Levoy (Laser scan)
Computational Geometry Edelsbrunner et al. (α-shape Algorithm) Amenta et al. (Crust & Power Crust
Algorithms)
Computer Graphics Based Approach
Marching Cubes Algorithm Isovalue Normal Normal Consistency Zero-set Algorithm Demo
Computer Graphics Based Approach – Marching Cubes Algorithm
Marching Cubes Algorithm Use a series of logical
cubes, determine how the surface intersects these cubes, and generate a triangle mesh to represent the surface
Isovalue – a scalar value in comparing to the Isosurface
2D example 3D patterns
R3
Computer Graphics Based Approach – Marching Cubes Algorithm (2D)
Computer Graphics Based Approach – Marching Cubes Algorithm (Cont.)
Computer Graphics Based Approach – Marching Cubes Algorithm (Cont.)
Computer Graphics Based Approach – Isovalue
Density Low accuracy Two layers
Signed distance
One layer Accurate
dist p= p−o i⋅n
Computer Graphics Based Approach – Normal
Scanned Normal Data sets from Brontes Technologies
Computed Normal All other data sets online Eigenvector
Create covariance matrix of as follows:
Get eigenvalues , and related eigenvectors , choose as normal
321iii
321iii vvv 33 ii vorv
CV = ∑p ∈ Nbhd x i
p− o i ° p− o i
ni
Nbhd x i
Computer Graphics Based Approach – Normal Consistency
Inconsistent normal problem
Reason
Computer Graphics Based Approach – Normal Consistency (Cont.)
Solution Create a Graph G(V, E) V are all sample points For each edge ,
Use Kruskal’s algorithm to find the MST (Minimum Spanning Tree)
Traverse the MST in DFS order
Evu ),(u ∈ Nbhd v ∨ v ∈ Nhbd u
Computer Graphics Based Approach – Zero-set Algorithm
Separate points into mxmxm blocks according to their coordinates
For each point , compute its ,average center , normal , and make normal consistent
Compute isovalue at each cube vertex
Do Marching Cube process Write triangles into mesh file
x iNbhd x i o i
n i
Computer Graphics Based Approach – Marching Cubes Algorithm (Cont.)
Marching Cubes Trick
Computer Graphics Based Approach – Demo
DEMO
Computational Geometry Based Approach
Voronoi Diagram and Delaunay Triangulation
Pole and Medial Axis Crust Algorithm Demo
Computational Geometry Based Approach – Voronoi Diagram & Delaunay Triangulation
Voronoi Diagram is a subdivision of space
Delaunay triangulation is the dual graph of the Voronoi diagram
Voronoi/Delaunay Applet
Computational Geometry Based Approach – Pole & Medial Axis
Computational Geometry Based Approach – Crust Algorithm
2D Crust Algorithm
Computational Geometry Based Approach – Crust Algorithm (Cont.)
Compute the 8 vertices Z of the surrounding box of the point set S.
Compute the Voronoi diagram of , and get the Voronoi vertices V.
Compute poles for each sample point Let P denote all poles. Compute the
Delaunay triangulation of . Keep only those triangles in which all
three vertices are sample points. Write triangles into final mesh file.
S∪Z
S∪P
Computational Geometry Based Approach – Crust Algorithm (Cont.)
Improvements 8 vertices of the surrounding box
hull – by Ken Clarkson, an open-source convext hull program
qhull – quick hull, 4 times faster than hull, http:www.qhull.org
Computational Geometry Based Approach – Demo
DEMO
Voronoi Based Zero-set Approach
Introduction Pole cube Algorithm Future Work Demo
Voronoi Based Zero-set Approach – Introduction
Use Pole as normal Use Delaunay triangles to get Nghb Lower time complexity than Zero-set
Algorithm
Lower space complexity than Crust Algorithmqhull needs more than 2GB memory for the second round computation of “Buddha” (543k points).
)lg( VS )lg'lg( 323 mnnnnOmnnnvnO
Voronoi Based Zero-set Approach – Pole cube Algorithm
Compute the 8 vertices Z of the surrounding box of the point set S.
Compute the Voronoi diagram of , and get the Voronoi vertices V and Delaunay triangles DT.
Separate points according to their coordinates into blocks.
Compute pole for each sample point, and set the normal as pole.
Compute Nghb from DT. Make normals consistent. Compute Isovalue at each cube vertex. Do Marching Cubes process. Write triangles into mesh file.
S∪Z
m×m×m
Voronoi Based Zero-set Approach – Future Work
Label each pole inside or outside of sample S.
Make normal consistent without finding k-Nbhd
Using “power diagram” or “eigenvector” to separate poles described in two recent papers.
Voronoi Based Zero-set Approach – Demo
DEMO
Comparisons
Scanned normal VS. Computed normal
Performance (speed) Surface Quality
Comparisons – Scanned Normal VS. Computed Normal
D of Zero-set D of Pole Cube
Point Cloud k = 6 k = 8 k = 6 k = 8
Horse 0.00722519 0.00531292 0.00793274 0.00793274
Die 0.00842918 0.0053838 0.00640121 0.00640121
Face(121) 0.121609 0.0733952 0.0661861 0.0661861
Face(124) 0.0270493 0.0129876 0.0171255 0.0171255
Wheel(125) 0.0379457 0.0249135 0.0307598 0.0307598
Weapon(126) 0.0503735 0.0396337 0.0516142 0.0516142
Weapon(127) 0.112135 0.0527464 0.0591031 0.0591031
D=∑ 1− C⋅S × C⋅S / n , where C is the computed normal ,
S is the scanned normal , n is the mumber of sample points.
Comparisons – Performance (speed)
Point Cloud Points Crust Zero-set Pole CubeBasic K=8, 400 K=8, 400
Triangles Time Triangles Time Triangles TimeBunny 35947 232082 21.536s 1111425 1m20.083s 1150689 1m21.278sFace 52338 319840 31.735s 457513 1m14.905 697204 1m25.954Wheel 61785 385450 47.050s 459843 1m20.034s 621637 1m30.269Horse 101358 630082 1m0.823s 310644 2m10.432s 319433 2m5.349sDie 104038 610074 57.957s 501109 2m6.128s 493507 1m57.465sWeapon 162504 1024956 1m36.994s 577345 3m45.271 603768 3m10.488sDragon 437645 N/A N/A 842249 17m49.813s 853484 14m54.365sBuddha 543652 N/A N/A 668717 29m25.840s 752417 20m29.280s
Comparisons – Surface QualityCrust Zero-set (k=8, 3400 ) Pole Cube (k=8, 3400 )
Comparisons – Surface Quality (Cont.)
Comparisons – Surface Quality (Cont.)
Comparisons – Surface Quality (Cont.)
Surface Viewer
The “Surface Viewer” is for viewing and analyzing generated surfaces. This tool was written in C++ with OpenGL as the display API. Basic functions of the tool are: rotation, scale, filled/wired polygon view mode, surface/point view mode, pole view mode (for “Crust” algorithm), and normal comparison mode (for “Zero-set” and “Pole Cube” algorithms).
Demo
Questions
?