Package: polylidar
Polylidar3DPolygon Extraction from 2D Point Sets, Unorganized/Organized 3D Point Clouds, and Triangular MeshesKey Features•Documentation•Use Cases•Credits•Related•Citations•LicenseKey FeaturesFast (Multi)Polygon Extraction from multiple sources of 2D and 3D DataWritten in C++ for portabilityExtremely fast single-threaded but includes CPU multi-threading using data and task-based parallelismPolygons with holes may be returnedPython3 bindings using PyBind11Low overhead for calling python/cpp interface (no copying of point cloud data)Python and C++ ExamplesExamples from 2D point sets, unorganized 3D point clouds, organized 3D point clouds (i.e., range images), and user provided meshesCross platformWindows and Linux readyPolylidar3D is a non-convex polygon extraction algorithm which takes as input either unorganized 2D point sets, unorganized 3D point clouds (e.g., airborne LiDAR point clouds), organized 3D point clouds (e.g., range images), or user provided meshes. In 3D, the non-convex polygons extracted represent flat surfaces in an environment, while interior holes represent obstacles on said surfaces. The picture above provides an examples of Polylidar3D extracting polygons from a 2D point set and a 3D triangular mesh; green is the concave hull and orange are interior holes. Polylidar3D outputsplanartriangular segments and their polygonal representations. Polylidar3D is extremely fast, taking as little as a few milliseconds and makes use of CPU multi-threading and GPU acceleration when available.Here is a small introductory blog-post aboutPolylidar3D.Documentation and BranchesPlease seedocumentationfor installation, api, and examples. Note that Polylidar went though major changes in July 2020 for 3D work, now calledPolylidar3D. The old repository for 2D work (and somebasic3D) is found in the branchpolylidar2Dand is connected to thispaper.Polylidar3Dcan still handle 2D point sets but the API is different and not the focus of this repo. For papers referencing Polylidar2D and Polylidar3D please seeCitations.EventuallyI am going to make a standalone cpp/header file for 2D point set -> polygon extraction for those that don't need any of the features ofPolylidar3D.Polylidar Use CasesPolylidar-RealSense- Live ground floor detection with Intel RealSense camera using PolylidarPolylidar-KITTI- Street surface and obstacle detection from autonomous driving platformPolylidarWeb. An very old Typescript (javascript) version with live demos of Polylidar2DConcave-Evaluation- Evaluates and benchmarks several competing concavehull algorithmsCreditsThis software is only possible because of the great work from the following open source packages:Delaunator- Original triangulation libraryDelaunatorCPP- Delaunator ported to C++ (used)parallel-hashmap- Fast hashmap library (used)marl- A parallel thread/fiber task scheduler (used)PyBind11- Python C++ Binding (used)Robust Geometric Predicates- Original Robust Geometric predicatesUpdated Predicates-Updated geometric predicate library (used)Related Methods2D ConcaveHull ExtractionCGAL Alpha Shapes- MultiPolygon with holesPostGIS ConcaveHull- Single Polygon with holesSpatialite ConcaveHull- MultiPolygon with holesConcaveman- A 2D concave hull extraction algorithm for 2D point setsContributingAny help or suggestions would be appreciated!Citation2DIf are using Polylidar for 2D work please cite:J. Castagno and E. Atkins, "Polylidar - Polygons From Triangular Meshes," in IEEE Robotics and Automation Letters, vol. 5, no. 3, pp. 4634-4641, July 2020, doi: 10.1109/LRA.2020.3002212.Link to Paper@ARTICLE{9117017,
  author={J. {Castagno} and E. {Atkins}},
  journal={IEEE Robotics and Automation Letters}, 
  title={Polylidar - Polygons From Triangular Meshes}, 
  year={2020},
  volume={5},
  number={3},
  pages={4634-4641}
}3DIf you are using Polylidar3D for 3D work please cite:J. Castagno and E. Atkins, "Polylidar3D - Fast Polygon Extraction from 3D Data," in MDPI Sensors, vol. 20, no.17, 4819, September 2020, doi: 10.3390/s20174819Link to Paper@Article{s20174819,
author = {Castagno, Jeremy and Atkins, Ella},
title = {Polylidar3D-Fast Polygon Extraction from 3D Data},
journal = {Sensors},
volume = {20},
year = {2020},
number = {17},
article-number = {4819},
url = {https://www.mdpi.com/1424-8220/20/17/4819},
issn = {1424-8220}
}LicenseMITGitHub@jeremybyu