Point Cloud Segmentation for 3D Reconstruction
-
Upload
pirouz-nourian -
Category
Engineering
-
view
1.169 -
download
0
Transcript of Point Cloud Segmentation for 3D Reconstruction
1 Challenge the future
Point Cloud Segmentation &
Surface Reconstruction
An overview of methods
Ir. Pirouz Nourian PhD candidate & Instructor, chair of Design Informatics, since 2010 MSc in Architecture 2009
BSc in Control Engineering 2005
MSc Geomatics, GEO1004, Directed by Dr. Sisi Zlatanova
2 Challenge the future
Topics
A very short introduction to segmentation and surface reconstruction
• Big Picture, Problem Statement • Goal is to make a [simple] Brep, with few faces
• General Approaches to this problem (surface
reconstruction):
• Volumetric, Implicit, using voxels and iso-surfaces • Alpha Shapes (Ball-Pivoting)
• Delaunay or Voronoi Based? • Poisson? • General Approaches to this problem (surface
reconstruction):
3 Challenge the future
Topics
A very short introduction to segmentation and surface reconstruction
• Big Picture, Problem Statement • Goal is to make a [simple] Brep, with few faces
Images courtesy of Ajith Sampath
?
4 Challenge the future
A few approaches to surface reconstruction
• Voxels Field of Signed-Distance Iso-Surface
• Ball-Pivoting (alpha shapes) triangulation
• Planar Segments Neighbourhood Matrix Edge List Simple Mesh
• Poisson Surface Reconstruction
• Implicit Function
• [ Hoppe et al. 92 ]
• Volumetric Reconstruction
• [ Curless and Levoy 96 ]
• Alpha Shapes
• [ Edelsbrunner and Mucke 94 ]
• 3D Voronoi-Based Reconstruction
• [ Amenta , Bern & Kamvysselis 98 ]
5 Challenge the future
Segmentation for Detecting Features
Points belonging to a set of surfaces considered as Brep faces
Images courtesy of Dr. Shi Pu, Faculty of Feo Information Science and Earth Observations, University of Twente (ITC)
6 Challenge the future
Segmentation for Detecting Features
Points belonging to a set of surfaces considered as Brep faces
3D reconstruction from AHN pointcloud: Carl Chen, Rusne Sileryte, Kaixuan Zhou; Ed. Pirouz Nourian, Sisi Zlatanova
7 Challenge the future
Segmentation for Detecting Features
Points belonging to a set of surfaces considered as Brep faces
Images courtesy of Ajith Sampath
8 Challenge the future
Segmentation for Detecting Features
Points belonging to a set of surfaces considered as Brep faces
Images courtesy of Ajith Sampath
Building Reconstruction The distance between two planar segments (P & Q) in a roof is defined as:
A neighborhood Matrix is then generated. The matrix shows all mutually intersecting
planes. Any two intersecting planes are selected, and all planes that intersect both of them are
enumerated, and solved. For instance Planes {1,4,10} and {1,4,13} are solved to get the breakline (A-B)as shown.
9 Challenge the future
Problem
• Estimated Normal Vectors For Each Point
• Estimated Curvature For Each Point
Preliminaries…
• Estimate Normal Vectors For Each Point Using the Covariance Matrix
• (Fit a Plane to a Bunch of Points)
• Cross Product of the Two Eigen Vectors Corresponding to the Two Largest Eigen Values
10 Challenge the future
Covariance Matrix Computation Check the attached code for the latest version!
Dim Neighbors = Pts.FindAll(Function(V) V.distanceto(point) < D) Dim Centroid As New Point3d For Each neighbor As point3d In Neighbors
Centroid = Centroid + neighbor Next For k As Integer=0 To Neighbors.count - 1 Dim CiCBar As New Matrix(3, Neighbors.count) Dim Diff As point3d = Neighbors(k) - Centroid
CiCBar(0, k) = Diff.X CiCBar(1, k) = Diff.y CiCBar(2, k) = Diff.z Dim CiCBarOld As New Matrix(3, Neighbors.count) CiCBarOld = CiCBar.Duplicate()
CiCBar.Transpose() CovM = CiCBarOld * CiCBar ‘Why is this a matrix of correct size? Next CovM.Scale(1 / Neighbors.count) CovMatrices.Add(CovM)
11 Challenge the future
Efficient Eigen Value Computation
• Find the roots of this characteristic function (why? & how?)
• Using a Trigonometric Method
• (The following code is my version of it, test it first on a cubic function)
A special case in which a 3x3 Matrix is dealt with
Function CubicRoots(a, b, c, d) Dim t As Double
Dim p,q As Double p = (3 * a * c - b ̂ 2) / (3 * a ^ 2)
If p < 0 Then q = (2 * b ^ 3 - 9 * a * b * c + 27 * a ^ 2 * d) / (27 * a ^ 3) Dim roots As New list(Of Double)
For k As Integer = 0 To 2 t = 2 * Math.Sqrt(-p / 3) * Math.Cos((1 / 3) * Math.Acos(((3 * q) / (2 * p)) * Math.Sqrt(-3 / p)) - k * ((2 * Math.PI) / 3))
Dim x As Double = t - b / (3 * a) roots.add(x) Next
Return roots Else
Return Nothing End If End Function
12 Challenge the future
Ready for Segmentation! We do an iterative segmentation called Region Growing
Mesh Segmentation in Action
low angle threshold
high angle threshold
13 Challenge the future
Mesh Segmentation
• Connected Faces
• Start Making Regions out of Neighbours of Similar Aspects
(normal vectors/orientations)
• Recursively Grow Regions with an Angle Tolerance (how?)
How to detect faces of a Brep given a Mesh?
Define Faces=M.Faces Define Regions As New list(Of List(Of Integer)) For i in range M.Faces.Count
If clusters.count = 0 Or There is no region containing(i) Then Define region As New list(Of Integer) region.Append(i) For j in range adjacentfaces(of i) If isSimilar(M.FaceNormals(i), M.FaceNormals(j), t) Then region.Append(j)
End For region = RecursivelyGrowRegion(M, region, angle threshold) Regions.Append(region) End If End For
14 Challenge the future
Point Cloud Segmentation Region Growing Segmentation Pseudocode
15 Challenge the future
A few approaches to surface reconstruction
• 3d Hough Transform [Vosselman et al.]
• Implicit Function [ Hoppe et al. 92 ]
• Alpha Shapes [ Edelsbrunner and Mucke 94 ]
• Many more:
Berger, Matthew, et al. "State of the art in surface reconstruction from point clouds." EUROGRAPHICS star reports. Vol. 1. No. 1. 2014.
(e.g. Ball-Pivoting algorithm) The space generated by point pairs that can be touched by an empty disc of radius alpha.
Using Voxels Field of Signed-Distance Iso-Surface
16 Challenge the future
2D Hough Transform
17 Challenge the future
2d Hough
Transform
b = -ax + y
18 Challenge the future
2d Hough
Transform
R=x cos θ+ y sin θ
19 Challenge the future
3d Hough transform
c = -ax -by + z
R = x cos θ cos Φ + y sin θ cos Φ+ z sin Φ
20 Challenge the future
20
Restricted 3d Hough Transform
Plane should contain (0,0,0) → z = ax + by
b = -ax/y + z/y (y != 0)
21 Challenge the future
21
22 Challenge the future
22
23 Challenge the future
23
24 Challenge the future
24
Hough Filtering
25 Challenge the future
25
Final result