|
CGAL 4.12.1 - Classification
|
#include <CGAL/Classification/Point_set_feature_generator.h>
Generates a set of generic features for point set classification.
This class takes care of computing all necessary data structures and of generating a set of generic features at multiple scales to increase the reliability of the classification.
| GeomTraits | model of CGAL Kernel. |
| PointRange | model of ConstRange. Its iterator type is RandomAccessIterator and its value type is the key type of PointMap. |
| PointMap | model of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is GeomTraits::Point_3. |
| ConcurrencyTag | enables sequential versus parallel algorithm. Possible values are Parallel_tag (default value is CGAL is linked with TBB) or Sequential_tag (default value otherwise). |
| DiagonalizeTraits | model of DiagonalizeTraits used for matrix diagonalization. It can be omitted: if Eigen 3 (or greater) is available and CGAL_EIGEN3_ENABLED is defined then an overload using Eigen_diagonalize_traits is provided. Otherwise, the internal implementation Diagonalize_traits is used. |
Public Types | |
| typedef GeomTraits::Iso_cuboid_3 | Iso_cuboid_3 |
| typedef Classification::Planimetric_grid< GeomTraits, PointRange, PointMap > | Planimetric_grid |
| typedef Classification::Point_set_neighborhood< GeomTraits, PointRange, PointMap > | Neighborhood |
| typedef Classification::Local_eigen_analysis | Local_eigen_analysis |
Public Member Functions | |
| template<typename VectorMap = Default, typename ColorMap = Default, typename EchoMap = Default> | |
| Point_set_feature_generator (Feature_set &features, const PointRange &input, PointMap point_map, std::size_t nb_scales, VectorMap normal_map=VectorMap(), ColorMap color_map=ColorMap(), EchoMap echo_map=EchoMap()) | |
| Generates all possible features from an input range. More... | |
| const Iso_cuboid_3 & | bbox () const |
| Returns the bounding box of the input point set. | |
| const Neighborhood & | neighborhood (std::size_t scale=0) const |
Returns the neighborhood structure at scale scale. | |
| const Planimetric_grid & | grid (std::size_t scale=0) const |
Returns the planimetric grid structure at scale scale. | |
| const Local_eigen_analysis & | eigen (std::size_t scale=0) const |
Returns the local eigen analysis structure at scale scale. | |
| std::size_t | number_of_scales () const |
| Returns the number of scales that were computed. | |
| float | grid_resolution (std::size_t scale=0) const |
Returns the grid resolution at scale scale. More... | |
| float | radius_neighbors (std::size_t scale=0) const |
Returns the radius used for neighborhood queries at scale scale. More... | |
| float | radius_dtm (std::size_t scale=0) const |
Returns the radius used for digital terrain modeling at scale scale. More... | |
| CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::Point_set_feature_generator | ( | Feature_set & | features, |
| const PointRange & | input, | ||
| PointMap | point_map, | ||
| std::size_t | nb_scales, | ||
| VectorMap | normal_map = VectorMap(), |
||
| ColorMap | color_map = ColorMap(), |
||
| EchoMap | echo_map = EchoMap() |
||
| ) |
Generates all possible features from an input range.
The size of the smallest scale is automatically estimated using a method equivalent to CGAL::compute_average_spacing() using 6 neighbors. The data structures needed (Neighborhood, Planimetric_grid and Local_eigen_analysis) are computed at nb_scales recursively larger scales. At each scale, the following features are generated:
CGAL::Classification::Feature::AnisotropyCGAL::Classification::Feature::Distance_to_planeCGAL::Classification::Feature::EigentropyCGAL::Classification::Feature::ElevationCGAL::Classification::Feature::LinearityCGAL::Classification::Feature::OmnivarianceCGAL::Classification::Feature::PlanarityCGAL::Classification::Feature::SphericityCGAL::Classification::Feature::Sum_eigenvaluesCGAL::Classification::Feature::Surface_variationCGAL::Classification::Feature::Vertical_dispersionCGAL::Classification::Feature::Verticality based on eigenvaluesIf normal vectors are provided (if VectorMap is different from CGAL::Default), the following feature is generated at each scale:
CGAL::Classification::Feature::Verticality based on normal vectorsIf colors are provided (if ColorMap is different from CGAL::Default), the following features are generated at each scale:
CGAL::Classification::Feature::Hsv on channel 0 (hue) with mean ranging from 0° to 360° and standard deviation of 22.5.CGAL::Classification::Feature::Hsv on channel 1 (saturation) with mean ranging from 0 to 100 and standard deviation of 12.5.CGAL::Classification::Feature::Hsv on channel 2 (value) with mean ranging from 0 to 100 and standard deviation of 12.5.If echo numbers are provided (if EchoMap is different from CGAL::Default), the following feature is computed at each scale:
| VectorMap | model of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is GeomTraits::Vector_3. |
| ColorMap | model of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is CGAL::Classification::RGB_Color. |
| EchoMap | model of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is std::size_t. |
| features | the feature set where the features are instantiated. |
| input | point range. |
| point_map | property map to access the input points. |
| nb_scales | number of scales to compute. |
| normal_map | property map to access the normal vectors of the input points (if any). |
| color_map | property map to access the colors of the input points (if any). |
| echo_map | property map to access the echo values of the input points (if any). |
| float CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::grid_resolution | ( | std::size_t | scale = 0 | ) | const |
Returns the grid resolution at scale scale.
This resolution is the length and width of a cell of the Planimetric_grid defined at this scale.
| float CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::radius_dtm | ( | std::size_t | scale = 0 | ) | const |
Returns the radius used for digital terrain modeling at scale scale.
This radius represents the minimum size of a building at this scale.
| float CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::radius_neighbors | ( | std::size_t | scale = 0 | ) | const |
Returns the radius used for neighborhood queries at scale scale.
This radius is the smallest radius that is relevant from a geometric point of view at this scale (that is to say that encloses a few cells of Planimetric_grid).