Skip to main content

Polygon extracton from 3D Data

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

polylidar-1.0.9.tar.gz (134.9 kB view details)

Uploaded Source

Built Distributions

polylidar-1.0.9-cp310-cp310-win_amd64.whl (260.7 kB view details)

Uploaded CPython 3.10 Windows x86-64

polylidar-1.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (442.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

polylidar-1.0.9-cp310-cp310-macosx_11_0_arm64.whl (314.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

polylidar-1.0.9-cp310-cp310-macosx_10_9_x86_64.whl (315.1 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

polylidar-1.0.9-cp310-cp310-macosx_10_9_universal2.whl (315.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

polylidar-1.0.9-cp39-cp39-win_amd64.whl (260.6 kB view details)

Uploaded CPython 3.9 Windows x86-64

polylidar-1.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (442.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

polylidar-1.0.9-cp39-cp39-macosx_11_0_arm64.whl (314.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

polylidar-1.0.9-cp39-cp39-macosx_10_9_x86_64.whl (315.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

polylidar-1.0.9-cp39-cp39-macosx_10_9_universal2.whl (315.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

polylidar-1.0.9-cp38-cp38-win_amd64.whl (260.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

polylidar-1.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (442.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

polylidar-1.0.9-cp38-cp38-macosx_11_0_arm64.whl (314.6 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

polylidar-1.0.9-cp38-cp38-macosx_10_9_x86_64.whl (315.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

polylidar-1.0.9-cp38-cp38-macosx_10_9_universal2.whl (315.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

polylidar-1.0.9-cp37-cp37m-win_amd64.whl (260.1 kB view details)

Uploaded CPython 3.7m Windows x86-64

polylidar-1.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (450.8 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

polylidar-1.0.9-cp37-cp37m-macosx_10_9_x86_64.whl (309.4 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file polylidar-1.0.9.tar.gz.

File metadata

  • Download URL: polylidar-1.0.9.tar.gz
  • Upload date:
  • Size: 134.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for polylidar-1.0.9.tar.gz
Algorithm Hash digest
SHA256 e66538ba5a59d29c1cb0dab56759b72d25886a10ad38496a4960af5b13a4abeb
MD5 b336798cc8925c349b73b22ff151f016
BLAKE2b-256 51aad7241d6b1068661d10e89b7bfd1b9fc2dfa0545c48fa17ccca93b9194eed

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3b17313f95081d583da029cda0497d8d95dc2c11295d72bac08db0242f622170
MD5 465f3a470237304e29c0b36aed173c7d
BLAKE2b-256 bb6e8dd6391b706629ec4173194c84e06fbb241788106a9e1c7e22afebdf8b02

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8fb54f6388d5643cf5abceb14ca144ea1f5608e5e419bc58a38fe3c173707e92
MD5 1a93ee75d2b30e6b0759abb2ea57b28d
BLAKE2b-256 6c9855e3eae41a43d70122152fc24b67ec69f57f53227576ecd40e435967e250

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc3cdfc23b22b4544685dfa6b7bd044e8437d3be73809858c19816ad65d90e41
MD5 3d402f4b7099740e25e7ef07ae535014
BLAKE2b-256 5581f25ad5409e342ef6653c50dfdd9bf9bd8703dce69baaef565218b8a6694d

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 24fb3250440fcfbc5a3b698d8c0f2841452eb2434b8b42c0774fa39d6163730c
MD5 d5766d6cd38aa3fe07f27b3da3269367
BLAKE2b-256 937b95eff136e63c35b12a19bed9372d77147dfb4b5ca37c092c5196efb2b2a7

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0f4c7359410822127713900bdbeeb97dab82d0e3d4ade0ad5ccb2c79d8c2935a
MD5 26cc6c388ae3562cb5fb2fabb2724e77
BLAKE2b-256 26a69c0767d6ebde9c3ce66ffbf19700ac8f22f6733166c12b03e2d85b470526

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: polylidar-1.0.9-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 260.6 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for polylidar-1.0.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e796c7cdf5b829de7bafce3ce587c7dd5c7af38ffea783a64602615eae3c6331
MD5 5816341f5fb6bacd0b6934886eaa0c7d
BLAKE2b-256 839f14f3dd737966ff75c26a5b888e93eb9d950540961f51b674a64fb95aafc6

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9507d20707aefe2fdd9a0f24ed529f18d57a137ad0b8a6eac870b788585eec21
MD5 b90a77325a292340089e80d6faaa1392
BLAKE2b-256 f3747cfc553c42843e5b0b113a7f74a33a59eeff5569a764b6be9625f043fb76

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2fad54463fdccc75f10f5b1d05a4843b05754f5cc19adc1adbd6fdee0b3f8583
MD5 f1c3f3aacd7164c6a1c0f7c9ca1e1a9e
BLAKE2b-256 2e34808ad075410d2e3b0a7a4d49443fe146919abf51c52d5c14e0fafd782973

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 42277823b5c44b924e1a97fb6a31801737e368b787f8e6eb720c33285aac1cbb
MD5 8581a6447e7c208eb7ac6ab3398c8834
BLAKE2b-256 0b9b66f18496bb25cffa2b4d1618908ce889f0651a37191157a249bb554d935e

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a611f140c109aeda7ca20c2341fabd6b1d7ab6f7303a58ddb601850fee128820
MD5 5d3400f98bac88287270c59e1c26964a
BLAKE2b-256 ce635b35061581265e73ebda7b191826d36d2fe89c5eed404fa5fb811d4b2dcb

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: polylidar-1.0.9-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 260.7 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for polylidar-1.0.9-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d7485eec03415813a97f766ba2a8cb532c0437364b68c0d535602a952f39f7ad
MD5 0419ca17a02095e163c8a135cc23f1f3
BLAKE2b-256 8ebd5cb1790672b8d5f9ccdff50d084ea5d72898a0865117fda396905cf6de62

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a6321afbac223bf664b1167f7bc354aecd2fb31aab4aeea08009797de935473c
MD5 21c9804733834f2f8c0a3d75e7b1981d
BLAKE2b-256 013764a6bdc47156e10ad15ebefb78da5a0100e8db7c6203181248cd3f717ecc

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 84a5ba7d8b66baf056a91074734265d66ec4f38dbebbc14936c96d9898ef2f2f
MD5 1b8b6567f2b95ba36729c6006892f6d6
BLAKE2b-256 67fd9adb13073435984a9fdee6be98aa690f87204c8fb979a8137c1267668042

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a64f8a8ece7c8723efe5eeb89f970c56ea7c2bac5bd9adf3389dfb77a780e937
MD5 49ca527e65c60f78eac221b0b7b4e0d7
BLAKE2b-256 eef20b387e62d4164a5f716ec2e58c8b146d68655235d04eb12de657178da789

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7decb1310cf331182da91469a1bd9c2da73dcbfa98837564bc5b53d0ab979b2e
MD5 367379f4ff6dac8ec1961eaae4248551
BLAKE2b-256 efc4f502eb9fc478c1a3a3d059c438e0bf4b3c66dad43a86f041bddb080a3ac3

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: polylidar-1.0.9-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 260.1 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for polylidar-1.0.9-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7ccc9bd5a47462cd274095cff200119b31af04cb49c7767eb05d410fad2b2398
MD5 71e3dd5868d8ed1ec932f9d8de5416e3
BLAKE2b-256 a4d5f5fb755b1014b00fc7cce3f1a5ee67fc5cb1cca068a0190e70d474239541

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f174c3c475e7d4c397733bac09f3332f572ca917e5454937859c503f2676fa4
MD5 d0ae79f6b710b05a2e46bb790d76e018
BLAKE2b-256 b9e5ab72f97e2673bf781a36a37c20dbda1ec094fdc4c1decaea1218fc1910f5

See more details on using hashes here.

File details

Details for the file polylidar-1.0.9-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for polylidar-1.0.9-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 46c939cf25ef1bf656ab388bf04b2be5dd326a6e4ee5e254df456cfda013ef38
MD5 fd38cb98ffcf63f8a0d7d949940ddd76
BLAKE2b-256 f72b44ff89ca148510aa34e2ece48d4410a9856386ceba34534dd4e07bb70aa9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page