All Projects → JeremyBYU → Polylidar

JeremyBYU / Polylidar

Licence: mit
Polylidar3D - Fast polygon extraction from 3D Data

Projects that are alternatives of or similar to Polylidar

Plexus
Polygonal mesh processing.
Stars: ✭ 90 (-15.09%)
Mutual labels:  mesh, polygon, geometry
Cgal
The public CGAL repository, see the README below
Stars: ✭ 2,825 (+2565.09%)
Mutual labels:  point-cloud, polygon, geometry
Matgeom
Matlab geometry toolbox for 2D/3D geometric computing
Stars: ✭ 168 (+58.49%)
Mutual labels:  mesh, polygon, geometry
Point Cloud Utils
A Python library for common tasks on 3D point clouds
Stars: ✭ 281 (+165.09%)
Mutual labels:  point-cloud, mesh, geometry
Pcl
Point Cloud Library (PCL)
Stars: ✭ 6,897 (+6406.6%)
Mutual labels:  point-cloud, pointcloud
Wicket
A modest library for moving between Well-Known Text (WKT) and various framework geometries
Stars: ✭ 484 (+356.6%)
Mutual labels:  polygon, geometry
Wxdraw
几何画图(微信小程序)
Stars: ✭ 36 (-66.04%)
Mutual labels:  polygon, geometry
Sopgi
A small VEX raytracer for SideFX Houdini with photon mapping global illumination and full recursive reflections and refractions
Stars: ✭ 55 (-48.11%)
Mutual labels:  point-cloud, geometry
Tinyply
🌍 C++11 ply 3d mesh format importer & exporter
Stars: ✭ 358 (+237.74%)
Mutual labels:  mesh, geometry
Sharpmath
A small .NET math library.
Stars: ✭ 36 (-66.04%)
Mutual labels:  polygon, geometry
Phidl
Python GDS layout and CAD geometry creation
Stars: ✭ 56 (-47.17%)
Mutual labels:  polygon, geometry
Earcut.hpp
Fast, header-only polygon triangulation
Stars: ✭ 447 (+321.7%)
Mutual labels:  polygon, geometry
Draco
Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.
Stars: ✭ 4,611 (+4250%)
Mutual labels:  point-cloud, mesh
3d Machine Learning
A resource repository for 3D machine learning
Stars: ✭ 7,405 (+6885.85%)
Mutual labels:  point-cloud, mesh
Easy3d
A lightweight, easy-to-use, and efficient C++ library for processing and rendering 3D data
Stars: ✭ 383 (+261.32%)
Mutual labels:  point-cloud, mesh
Geometry2d
Unity3D: A set of helper classes for 2D geometric calculations.
Stars: ✭ 40 (-62.26%)
Mutual labels:  polygon, geometry
Polyclip Go
Go library for Boolean operations on 2D polygons.
Stars: ✭ 70 (-33.96%)
Mutual labels:  polygon, geometry
Kinectfusionapp
Sample implementation of an application using KinectFusionLib
Stars: ✭ 69 (-34.91%)
Mutual labels:  point-cloud, mesh
Graphical Debugging
GraphicalDebugging extension for Visual Studio
Stars: ✭ 88 (-16.98%)
Mutual labels:  polygon, geometry
Three Mesh Bvh
A BVH implementation to speed up raycasting against three.js meshes.
Stars: ✭ 302 (+184.91%)
Mutual labels:  mesh, geometry

Polylidar3D

Polygon Extraction from 2D Point Sets, Unorganized/Organized 3D Point Clouds, and Triangular Meshes

Key FeaturesDocumentationUse CasesCreditsRelatedCitationsLicense

Docs Cite 2D Cite 3D

Key Features

  • Fast (Multi)Polygon Extraction from multiple sources of 2D and 3D Data
    • Written in C++ for portability
    • Extremely fast single-threaded but includes CPU multi-threading using data and task-based parallelism
    • Polygons with holes may be returned
  • Python3 bindings using PyBind11
    • Low overhead for calling python/cpp interface (no copying of point cloud data)
  • Python and C++ Examples
    • Examples from 2D Point Sets, Unorganized 3D point clouds, Organized 3D point clouds (i.e., range images), and user provided meshes
  • Cross platform
    • Windows and Linux ready.

Polylidar3D 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 outputs planar triangular 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 about Polylidar3D.

Documentation and Branches

Please see documentation for installation, api, and examples. Note that Polylidar went though major changes in July 2020 for 3D work, now called Polylidar3D. The old repository for 2D work (and some basic 3D) is found in the branch polylidar2D and is connected to this paper. Polylidar3D can still handle 2D point sets but the API is different and not the focus of this repo. For papers referencing Polylidar2D and Polylidar3D please see Citations.

Eventually I 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 of Polylidar3D.

Polylidar Use Cases

  • Polylidar-RealSense - Live ground floor detection with Intel RealSense camera using Polylidar
  • Polylidar-KITTI - Street surface and obstacle detection from autonomous driving platform.
  • PolylidarWeb. An very old Typescript (javascript) version with live demos of Polylidar2D.
  • Concave-Evaluation - Evaluates and benchmarks several competing concavehull algorithms.

Credits

This software is only possible because of the great work from the following open source packages:

Related Methods

2D ConcaveHull Extraction

Contributing

Any help or suggestions would be appreciated!

Citation

2D

If 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}
}

3D

If 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/s20174819 Link 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}
}

License

MIT


GitHub @jeremybyu

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].