Skip to main content

Polylidar3D

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

Key Features • Documentation • Use Cases • Credits • Related • Citations • License

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:

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

Metadata

Release files for polylidar 1.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for polylidar 1.0.9
File Size Uploaded
polylidar-1.0.9.tar.gz 134.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for polylidar 1.0.9
File
polylidar-1.0.9-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
polylidar-1.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
polylidar-1.0.9-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
polylidar-1.0.9-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
polylidar-1.0.9-cp310-cp310-macosx_10_9_universal2.whl CPython 3.10 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) Details
polylidar-1.0.9-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
polylidar-1.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
polylidar-1.0.9-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
polylidar-1.0.9-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details
polylidar-1.0.9-cp39-cp39-macosx_10_9_universal2.whl CPython 3.9 CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64) Details
polylidar-1.0.9-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
polylidar-1.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
polylidar-1.0.9-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
polylidar-1.0.9-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details
polylidar-1.0.9-cp38-cp38-macosx_10_9_universal2.whl CPython 3.8 CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64) Details
polylidar-1.0.9-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
polylidar-1.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 Details
polylidar-1.0.9-cp37-cp37m-macosx_10_9_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64 Details

Total release size: 6.1 MB

Release files / polylidar-1.0.9.tar.gz

Download URL polylidar-1.0.9.tar.gz
Size 134.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e66538ba5a59d29c1cb0dab56759b72d25886a10ad38496a4960af5b13a4abeb
BLAKE2b-256 checksum
How to use checksums
51aad7241d6b1068661d10e89b7bfd1b9fc2dfa0545c48fa17ccca93b9194eed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp310-cp310-win_amd64.whl

Download URL polylidar-1.0.9-cp310-cp310-win_amd64.whl
Size 260.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
3b17313f95081d583da029cda0497d8d95dc2c11295d72bac08db0242f622170
BLAKE2b-256 checksum
How to use checksums
bb6e8dd6391b706629ec4173194c84e06fbb241788106a9e1c7e22afebdf8b02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL polylidar-1.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 442.6 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
8fb54f6388d5643cf5abceb14ca144ea1f5608e5e419bc58a38fe3c173707e92
BLAKE2b-256 checksum
How to use checksums
6c9855e3eae41a43d70122152fc24b67ec69f57f53227576ecd40e435967e250
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp310-cp310-macosx_11_0_arm64.whl

Download URL polylidar-1.0.9-cp310-cp310-macosx_11_0_arm64.whl
Size 314.6 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bc3cdfc23b22b4544685dfa6b7bd044e8437d3be73809858c19816ad65d90e41
BLAKE2b-256 checksum
How to use checksums
5581f25ad5409e342ef6653c50dfdd9bf9bd8703dce69baaef565218b8a6694d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp310-cp310-macosx_10_9_x86_64.whl

Download URL polylidar-1.0.9-cp310-cp310-macosx_10_9_x86_64.whl
Size 315.1 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
24fb3250440fcfbc5a3b698d8c0f2841452eb2434b8b42c0774fa39d6163730c
BLAKE2b-256 checksum
How to use checksums
937b95eff136e63c35b12a19bed9372d77147dfb4b5ca37c092c5196efb2b2a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp310-cp310-macosx_10_9_universal2.whl

Download URL polylidar-1.0.9-cp310-cp310-macosx_10_9_universal2.whl
Size 315.2 kB
Tags CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
0f4c7359410822127713900bdbeeb97dab82d0e3d4ade0ad5ccb2c79d8c2935a
BLAKE2b-256 checksum
How to use checksums
26a69c0767d6ebde9c3ce66ffbf19700ac8f22f6733166c12b03e2d85b470526
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp39-cp39-win_amd64.whl

Download URL polylidar-1.0.9-cp39-cp39-win_amd64.whl
Size 260.6 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
e796c7cdf5b829de7bafce3ce587c7dd5c7af38ffea783a64602615eae3c6331
BLAKE2b-256 checksum
How to use checksums
839f14f3dd737966ff75c26a5b888e93eb9d950540961f51b674a64fb95aafc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL polylidar-1.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 442.8 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
9507d20707aefe2fdd9a0f24ed529f18d57a137ad0b8a6eac870b788585eec21
BLAKE2b-256 checksum
How to use checksums
f3747cfc553c42843e5b0b113a7f74a33a59eeff5569a764b6be9625f043fb76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp39-cp39-macosx_11_0_arm64.whl

Download URL polylidar-1.0.9-cp39-cp39-macosx_11_0_arm64.whl
Size 314.9 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2fad54463fdccc75f10f5b1d05a4843b05754f5cc19adc1adbd6fdee0b3f8583
BLAKE2b-256 checksum
How to use checksums
2e34808ad075410d2e3b0a7a4d49443fe146919abf51c52d5c14e0fafd782973
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp39-cp39-macosx_10_9_x86_64.whl

Download URL polylidar-1.0.9-cp39-cp39-macosx_10_9_x86_64.whl
Size 315.4 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
42277823b5c44b924e1a97fb6a31801737e368b787f8e6eb720c33285aac1cbb
BLAKE2b-256 checksum
How to use checksums
0b9b66f18496bb25cffa2b4d1618908ce889f0651a37191157a249bb554d935e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp39-cp39-macosx_10_9_universal2.whl

Download URL polylidar-1.0.9-cp39-cp39-macosx_10_9_universal2.whl
Size 315.4 kB
Tags CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
a611f140c109aeda7ca20c2341fabd6b1d7ab6f7303a58ddb601850fee128820
BLAKE2b-256 checksum
How to use checksums
ce635b35061581265e73ebda7b191826d36d2fe89c5eed404fa5fb811d4b2dcb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp38-cp38-win_amd64.whl

Download URL polylidar-1.0.9-cp38-cp38-win_amd64.whl
Size 260.7 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
d7485eec03415813a97f766ba2a8cb532c0437364b68c0d535602a952f39f7ad
BLAKE2b-256 checksum
How to use checksums
8ebd5cb1790672b8d5f9ccdff50d084ea5d72898a0865117fda396905cf6de62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL polylidar-1.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 442.4 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a6321afbac223bf664b1167f7bc354aecd2fb31aab4aeea08009797de935473c
BLAKE2b-256 checksum
How to use checksums
013764a6bdc47156e10ad15ebefb78da5a0100e8db7c6203181248cd3f717ecc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp38-cp38-macosx_11_0_arm64.whl

Download URL polylidar-1.0.9-cp38-cp38-macosx_11_0_arm64.whl
Size 314.6 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
84a5ba7d8b66baf056a91074734265d66ec4f38dbebbc14936c96d9898ef2f2f
BLAKE2b-256 checksum
How to use checksums
67fd9adb13073435984a9fdee6be98aa690f87204c8fb979a8137c1267668042
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp38-cp38-macosx_10_9_x86_64.whl

Download URL polylidar-1.0.9-cp38-cp38-macosx_10_9_x86_64.whl
Size 315.1 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
a64f8a8ece7c8723efe5eeb89f970c56ea7c2bac5bd9adf3389dfb77a780e937
BLAKE2b-256 checksum
How to use checksums
eef20b387e62d4164a5f716ec2e58c8b146d68655235d04eb12de657178da789
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp38-cp38-macosx_10_9_universal2.whl

Download URL polylidar-1.0.9-cp38-cp38-macosx_10_9_universal2.whl
Size 315.1 kB
Tags CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
7decb1310cf331182da91469a1bd9c2da73dcbfa98837564bc5b53d0ab979b2e
BLAKE2b-256 checksum
How to use checksums
efc4f502eb9fc478c1a3a3d059c438e0bf4b3c66dad43a86f041bddb080a3ac3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp37-cp37m-win_amd64.whl

Download URL polylidar-1.0.9-cp37-cp37m-win_amd64.whl
Size 260.1 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
7ccc9bd5a47462cd274095cff200119b31af04cb49c7767eb05d410fad2b2398
BLAKE2b-256 checksum
How to use checksums
a4d5f5fb755b1014b00fc7cce3f1a5ee67fc5cb1cca068a0190e70d474239541
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL polylidar-1.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 450.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2f174c3c475e7d4c397733bac09f3332f572ca917e5454937859c503f2676fa4
BLAKE2b-256 checksum
How to use checksums
b9e5ab72f97e2673bf781a36a37c20dbda1ec094fdc4c1decaea1218fc1910f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / polylidar-1.0.9-cp37-cp37m-macosx_10_9_x86_64.whl

Download URL polylidar-1.0.9-cp37-cp37m-macosx_10_9_x86_64.whl
Size 309.4 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
46c939cf25ef1bf656ab388bf04b2be5dd326a6e4ee5e254df456cfda013ef38
BLAKE2b-256 checksum
How to use checksums
f72b44ff89ca148510aa34e2ece48d4410a9856386ceba34534dd4e07bb70aa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release history Release notifications | RSS feed

This release

1.0.9 This release

19 release files

1.0.8

22 release files

1.0.5

15 release files

0.0.8

4 release files

0.0.7

3 release files

0.0.6

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page