I have a point cloud (data set) (3D) representing an urban terrain consisting of flat roof surfaces (of buildings) . My aim is to figure out the flat surfaces , waterbodies from the given data set .The data set is a text file consisting of the number of points followed by their individual x , y , z co-ordinates. As a trial attempt , I have generated the 2D-Delaunay triangulation of the given data set to get the triangulated surface. Henceforth, I plan to execute a graph-traversal over the faces of the triangulation to look for neighbourhood points with nearly the same z-coordinate value and treat them as a flat surface . I am using CGAL libraries to accomplish the same in C++. Is there a better approach for identifying flat surface or my method seems decent enough ?
1
votes
I think this question is formulated too broadly...do you want comments on your approach? Or are you looking for the best algo somebody else knows about? The delaunay-triangulation part sounds nice. But still, I'm not very convinced by your approach - For instance how are you going to decide what 'nearly' is? And then: very inclined surfaces will have very different z coordinates but still are flat. You probably should rather look at the inclination of the triangles and compare those. Then again computational geometry is not my strength...
- dingalapadum
1 Answers
0
votes
You might get inspiration (or just run) Advancing Front Reconstruction
No idea how your point cloud looks, but maybe Point Set Shape Detection might help you to identify flat areas.