CGAL 4.12 - 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::Anisotropy
CGAL::Classification::Feature::Distance_to_plane
CGAL::Classification::Feature::Eigentropy
CGAL::Classification::Feature::Elevation
CGAL::Classification::Feature::Linearity
CGAL::Classification::Feature::Omnivariance
CGAL::Classification::Feature::Planarity
CGAL::Classification::Feature::Sphericity
CGAL::Classification::Feature::Sum_eigenvalues
CGAL::Classification::Feature::Surface_variation
CGAL::Classification::Feature::Vertical_dispersion
CGAL::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
).