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
You can install the development version of CloudGeometry from GitHub with:
# install.packages("devtools")
devtools::install_github("fpirotti/CloudGeometry")
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)
More feature descriptors such as Fast Point Feature Histograms (FPFH) as implemented in point cloud library will be coming up.
[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