[pdal-commits] [PDAL/PDAL] 2f3f19: Add OptimalNeighborhoodFilter and refactor Covaria...

chambbj noreply at github.com
Tue Jul 28 09:39:20 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/PDAL/PDAL
  Commit: 2f3f198c5a814edf4b81c414be5b9416e869e602
      https://github.com/PDAL/PDAL/commit/2f3f198c5a814edf4b81c414be5b9416e869e602
  Author: chambbj <brad.chambers at gmail.com>
  Date:   2020-07-28 (Tue, 28 Jul 2020)

  Changed paths:
    M doc/stages/filters.covariancefeatures.rst
    A doc/stages/filters.optimalneighborhood.rst
    M doc/stages/filters.rst
    M filters/CovarianceFeaturesFilter.cpp
    M filters/CovarianceFeaturesFilter.hpp
    A filters/OptimalNeighborhoodFilter.cpp
    A filters/OptimalNeighborhoodFilter.hpp
    M pdal/Dimension.json
    M test/unit/filters/CovarianceFeaturesTest.cpp

  Log Message:
  -----------
  Add OptimalNeighborhoodFilter and refactor CovarianceFeaturesFilter (#3180)

* Add OptimalNeighborhoodFilter and refactor CovarianceFeaturesFilter

OptimalNeighborhoodFilter reports the pointwise optimal number of
neighbors (OptimalKNN) and corresponding radius (OptimalRadius), based
on Weinmann, et al. The optimal neighborhood size is found by minimizing
the Shannon entropy of normalized eigenvalues (the eigenentropy) while
sweeping a range a candidate k-nearest neighbors.

    Weinmann, Martin, et al. "Semantic point cloud interpretation based
    on optimal neighborhoods, relevant features and efficient
    classifiers." ISPRS Journal of Photogrammetry and Remote Sensing 105
    (2015): 286-304.

Augment the original CovarianceFeaturesFilter to add optional
specifiation of additional features derived from covariance matrix.

- Omnivariance
- Sum
- Eigenentropy
- Anisotropy
- Surface variation
- DemantkeVerticality
- Density (requires precomputed OptimalKNN and OptimalRadius)

Any feature_set other than "Dimensionality" will output ALL covariance
features. Alternately, covariance features can be passed as a
comma-separated list to the features argument, allowing explicity
definition of the desired features.

Add flexibility to normalize eigenvalues or to compute the standard
deviation along each dimension by taking the square root of the
eigenvalues. The default behavior (a CHANGE!) is to compute features
using the raw eigenvalues.

Update tests to compute all features, setting mode to "SQRT" in keeping
with original defaults.

* Change CovarianceFeaturesFilter mode from string to enum

* Enums/classes for feature types and feature_sets, error checking

* lint

* Remove cerr

* Doc clarifications

* Fix windows errors

* Response to PR comments

* Missed rename location Sum -> EigenvalueSum

* Update docs and tests

* Clean up behavior of features and feature_set and update docs

* Just hardcode pi

* Update tests to actually compute the features being tested




More information about the pdal-commits mailing list