Metadata-Version: 2.1
Name: jakteristics
Version: 0.6.0
Summary: Point cloud geometric properties from python.
Home-page: https://github.com/jakarto3d/jakteristics
Author: David Caron
Author-email: david.caron@jakarto.com
License: BSD
Keywords: jakteristics
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Natural Language :: English
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.7


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 <https://www.danielgm.net/cc/>`_.

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 <https://jakteristics.readthedocs.io/en/latest/usage.html>`_ 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




History
-------

Unreleased
----------


0.6.0 (2023-04-20)
------------------

* add: number_of_neighbors feature
* add: eigenvalues and eigenvectors features


0.5.1 (2023-04-11)
------------------

* fix: computing features when kdtree is not built from the same points for which we want to compute the features
* drop python 3.6, add wheels for python 3.7-3.11 on linux and windows

0.5.0 (2022-01-26)
------------------

* fix: compatibility with latest laspy version (>= 2.1.1, (2.1.0 has a bug))


0.4.3 (2020-09-24)
------------------

* the default value when features can't be computed should be NaN


0.4.2 (2020-04-20)
------------------

* fix extension import statement


0.4.1 (2020-04-17)
------------------

* fix: create parent directories for output file
* fix: rename --num_threads to --num-threads
* fix: require laspy 1.7 for upper case names in extra dimensions


0.4.0 (2020-04-16)
------------------

* first pypi release
* add github actions


0.3.0 (2020-04-14)
------------------

* add feature-names parameter to compute specific features


0.2.0 (2020-04-10)
------------------

* fix windows compilation with openmp
* add example cloudcompare script
* add num_threads cli parameter and help documentation
* write extra dimensions in the correct order


0.1.2 (2020-04-10)
------------------

* Fix tests


0.1.1 (2020-04-10)
------------------

* Fix bug where single precision was used for intermediate variables


0.1.0 (2020-04-10)
------------------

* First release
