Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

Successfully reported this slideshow.

Like this presentation? Why not share!

- Point Cloud Processing: Estimating ... by Pirouz Nourian 6978 views
- On NURBS Geometry Representation in... by Pirouz Nourian 1854 views
- Preliminaries of Analytic Geometry ... by Pirouz Nourian 1131 views
- Intro computational design_mega2016... by Pirouz Nourian 974 views
- Tudelft stramien 16_9_on_optimization by Pirouz Nourian 462 views
- Polygon Mesh Representation by Pirouz Nourian 1735 views

1,917 views

Published on

Published in:
Engineering

License: CC Attribution-NoDerivs License

No Downloads

Total views

1,917

On SlideShare

0

From Embeds

0

Number of Embeds

15

Shares

0

Downloads

81

Comments

0

Likes

3

No embeds

No notes for slide

- 1. 1Challenge 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. 2Challenge 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. 3Challenge 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. 4Challenge 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. 5Challenge 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. 6Challenge 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. 7Challenge the future Segmentation for Detecting Features Points belonging to a set of surfaces considered as Brep faces Images courtesy of Ajith Sampath
- 8. 8Challenge 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 mutuallyintersecting planes. Any two intersecting planes are selected,and all planes thatintersectboth 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. 9Challenge 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. 10Challenge 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. 11Challenge 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. 12Challenge the future Ready for Segmentation! We do an iterative segmentation called Region Growing Mesh Segmentation in Action low angle threshold high angle threshold
- 13. 13Challenge 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. 14Challenge the future Point Cloud Segmentation Region Growing Segmentation Pseudocode
- 15. 15Challenge 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. 16Challenge the future 2D Hough Transform
- 17. 17Challenge the future 2d Hough Transform b = -ax + y
- 18. 18Challenge the future 2d Hough Transform R=x cos θ+ y sin θ
- 19. 19Challenge the future 3d Hough transform c = -ax -by + z R = x cos θ cos Φ + y sin θ cos Φ+ z sin Φ
- 20. 20Challenge the future 20 Restricted 3d Hough Transform Plane should contain (0,0,0) → z = ax + by b = -ax/y + z/y (y != 0)
- 21. 21Challenge the future 21
- 22. 22Challenge the future 22
- 23. 23Challenge the future 23
- 24. 24Challenge the future 24 Hough Filtering
- 25. 25Challenge the future 25 Final result
- 26. 26Challenge the future Questions? Thank you! p.nourian@tudelft.nl

No public clipboards found for this slide

Be the first to comment