Analyze large datasets of point clouds recorded over time in an efficient way
Project description
Analyze large datasets of point clouds recorded over time in an efficient way.
Features
Handles point clouds over time
Building complex pipelines with a clean and maintainable code
newpointcloud = pointcloud.limit("x",-5,5).filter("quantile","reflectivity", ">",0.5)
Apply arbitrary functions to datasets of point clouds
def isolate_target(frame: PointCloud) -> PointCloud:
return frame.limit("x",0,1).limit("y",0,1)
def diff_to_pointcloud(pointcloud: PointCloud, to_compare: PointCloud) -> PointCloud:
return pointcloud.diff("pointcloud", to_compare)
result = dataset.apply(isolate_target).apply(diff_to_pointcloud, to_compare=dataset[0])
Includes powerful aggregation method agg similar to pandas
dataset.agg(["min","max","mean","std"])
Support for large files with lazy evaluation and parallel processing
Support for numerical data per point (intensity, range, noise …)
Interactive 3D visualisation
High level processing based on dask, pandas, open3D and pyntcloud
Docker image is available
Optimised - but not limited to - automotive lidar
Directly read ROS files and many pointcloud file formats
A command line tool to convert ROS 1 & 2 files
Use case examples
Post processing and analytics of a lidar dataset recorded by ROS
A collection of multiple lidar scans from a terrestrial laser scanner
Comparison of multiple point clouds to a ground truth
Analytics of point clouds over time
Developing algorithms on a single frame and then applying them to huge datasets
Installation with pip
Install python package with pip:
pip install pointcloudset
Installation with Docker
The easiest way to get started is to use the pre-build docker tgoelles/pointcloudset or use tgoelles/pointcloudset_base to get a container with all dependencies and install pointcloudset there.
Quickstart
from pointcloudset import Dataset, PointCloud
from pathlib import Path
import urllib.request
urllib.request.urlretrieve("https://github.com/virtual-vehicle/pointcloudset/raw/master/tests/testdata/test.bag", "test.bag")
urllib.request.urlretrieve("https://github.com/virtual-vehicle/pointcloudset/raw/master/tests/testdata/las_files/test_tree.las", "test_tree.las")
dataset = Dataset.from_file(Path("test.bag"), topic="/os1_cloud_node/points", keep_zeros=False)
pointcloud = dataset[1]
tree = PointCloud.from_file(Path("test_tree.las"))
tree.plot("x", hover_data=True)
This produces the plot from the animation above.
Read the html documentation.
Have a look at the tutorial notebooks in the documentation folder
For even more usage examples you can have a look at the tests
CLI to convert ROS1 and ROS2 files: pointcloudset convert
The package includes a powerful CLI to convert pointclouds in ROS1 & 2 files into many formats like pointcloudset, csv, las and many more. It is capable of handling both mcap and db3 ROS files.
pointcloudset convert --output-format csv --output-dir converted_csv test.bag
You can view PointCloud2 messages with
pointcloudset topics test.bag
Citation and contact
Thomas Gölles email: thomas.goelles@v2c2.at
Please cite our JOSS paper if you use pointcloudset.
@article{Goelles2021,
doi = {10.21105/joss.03471},
url = {https://doi.org/10.21105/joss.03471},
year = {2021},
publisher = {The Open Journal},
volume = {6},
number = {65},
pages = {3471},
author = {Thomas Goelles and Birgit Schlager and Stefan Muckenhuber and Sarah Haas and Tobias Hammer},
title = {`pointcloudset`: Efficient Analysis of Large Datasets of Point Clouds Recorded Over Time},
journal = {Journal of Open Source Software}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pointcloudset-0.10.0.tar.gz
.
File metadata
- Download URL: pointcloudset-0.10.0.tar.gz
- Upload date:
- Size: 33.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | be8c2732e478654607c30e36fa30d67717fe82068fa470f7ef16288a27497695 |
|
MD5 | 7ed1b46218506b515cda41791d0bc226 |
|
BLAKE2b-256 | b2f5c80a299418ad4fc1141a29f8e1fe0b0ee88b00872f6d403158bcdb16a661 |
File details
Details for the file pointcloudset-0.10.0-py3-none-any.whl
.
File metadata
- Download URL: pointcloudset-0.10.0-py3-none-any.whl
- Upload date:
- Size: 42.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00db5d26a0dec454435ac5667c341bc7f2c9b49a647b898b8e2540de355b0ca7 |
|
MD5 | 38703f1f82b686304d265ae4ff53e1ab |
|
BLAKE2b-256 | 28eee23a10d7b10eac5ea649c9551ea46c261ecf86a41a7da7ac272290d5d3ab |