Giter VIP home page Giter VIP logo

cloudgeometry's Introduction

CloudGeometry

R-CMD-check Lifecycle: experimental CRAN status

The goal of CloudGeometry is fast and parallel computation of geometric features for each point in a point cloud using an auto-adaptive or fixed radius.

Geometric features (GF) catch geometrical patterns around a certain position in 3D space based on information available from the neighboring points (local neighborhood). A feature-rich set of observations support training AI (machine learning and deep learning) models for segmentation and classification (Pirotti & Tonion, 2019).

Geometric features can be characterized using the eigenvalues of the 3D structure tensor represented by the 3D covariance matrix derived from the 3D coordinates of all points within the local neighborhood (Weinmann et al. 2014, Weinmann et al. 2015).

Eigenvalues partitions for the local neighborhood PCA. Source: Brodu&Lague 2012

Due to the the expected large volume of points in point clouds that are surveyed with laser scanners or created by photogrammetric procedures, this package uses a fast implementation using Armadillo C++ library for linear algebra & scientific computing to implement an optimized kdtree structure and implicit nearest neighbour search-by-radius. OpenMP is used for parallelization to take advantage of multiple processors or cores, leading to 4x to 100x increased speed depending on the architecture of the machine and the characteristics of the 3D point cloud.

The following geometric features are currently implemented:

  • point Density (number of neighbours in 3d space of sphere of radius)
  • 1st eigenvalue
  • 2nd eigenvalue
  • 3rd eigenvalue
  • Eigenentropy
  • Sum of eigenvalues
  • Linearity
  • Planarity
  • Sphericity
  • Anisotropy
  • Omnivariance
  • PCA 1
  • PCA 2
  • Surface variation

Installation

You can install the development version of CloudGeometry from GitHub with:

# install.packages("devtools")
devtools::install_github("fpirotti/CloudGeometry")

Example

This is a basic example which shows you how to process a lidar point cloud:

## basic example code

library(CloudGeometry)
gf <- calcGF(lidar, 2, TRUE)

Future developments

More feature descriptors such as Fast Point Feature Histograms (FPFH) as implemented in point cloud library will be coming up.

References

[1] Weinmann, M., Jutzi, B., Hinz, S., Mallet, C., 2015. Semantic point cloud interpretation based on optimal neighborhoods, relevant features and efficient classifiers. ISPRS J. Photogramm. Remote Sens. 105, 286–304. https://doi.org/10.1016/j.isprsjprs.2015.01.016

[2] Weinmann, M., Jutzi, B., Mallet, C., 2014. Semantic 3D scene interpretation: A framework combining optimal neighborhood size selection with relevant features. ISPRS Annals of the Photogrammetry, Remote Sensing and Spatial Information Sciences II–3, 181–188. https://doi.org/10.5194/isprsannals-II-3-181-2014

[3] Brodu, N., Lague, D., 2012. 3D terrestrial lidar data classification of complex natural scenes using a multi-scale dimensionality criterion: Applications in geomorphology. ISPRS Journal of Photogrammetry and Remote Sensing 68, 121–134. https://doi.org/10.1016/j.isprsjprs.2012.01.006

[4]Pirotti, F., Tonion, F., 2019. Classification of aerial laser scanning point clouds using machine learning: a comparison between random forest and tensorflow. ISPRS - International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences XLII-2/W13, 1105–1111. https://doi.org/10.5194/isprs-archives-XLII-2-W13-1105-2019

cloudgeometry's People

Contributors

fpirotti avatar

Stargazers

Francesco Ioli avatar

Watchers

 avatar Francesco Ioli avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.