An open API service indexing awesome lists of open source software.

https://github.com/jakarto3d/jakteristics

Compute point cloud geometric features from python
https://github.com/jakarto3d/jakteristics

3d feature geometric lidar lidar-point-cloud normals pointcloud processing python

Last synced: about 1 year ago
JSON representation

Compute point cloud geometric features from python

Awesome Lists containing this project

README

          

Jakteristics
~~~~~~~~~~~~

* **Documentation**: https://jakteristics.readthedocs.io
* **Github**: https://github.com/jakarto3d/jakteristics

Jakteristics is a python package to compute point cloud geometric features.

A **geometric feature** is a description of the geometric shape around a point based on its
neighborhood. For example, a point located on a wall will have a high *planarity*.

The features used in this package are described in the paper
`Contour detection in unstructured 3D point clouds`_.
They are computed based on the eigenvalues and eigenvectors:

* Eigenvalue sum
* Omnivariance
* Eigenentropy
* Anisotropy
* Planarity
* Linearity
* PCA1
* PCA2
* Surface Variation
* Sphericity
* Verticality
* Nx, Ny, Nz (The normal vector)

It's inspired from a similar tool in `CloudCompare `_.

It's implemented in cython using the BLAS and LAPACK scipy wrappers. It can use multiple cpus,
and the performance is quite good (at least twice as fast as CloudCompare).

.. _`Contour detection in unstructured 3D point clouds`: https://ethz.ch/content/dam/ethz/special-interest/baug/igp/photogrammetry-remote-sensing-dam/documents/pdf/timo-jan-cvpr2016.pdf

Installation
============

.. code:: bash

python -m pip install jakteristics

Usage
=====

Refer to the `documentation `_ for more details.

From python
-----------

.. code:: python

from jakteristics import compute_features

features = compute_features(xyz, search_radius=0.15, feature_names=['planarity', 'linearity'])

CLI
---

Once the package is installed, you can use the `jakteristics` command:

.. code:: bash

jakteristics input/las/file.las output/file.las --search-radius 0.15 --num-threads 4

Run tests
=========

.. code:: bash

python -m pip install -r requirements-dev.txt
python setup.py pytest