CGAL 6.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 and storing 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 computation of CGAL::Classification::Local_eigen_analysis objects. 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: in that case, an overload using Eigen_diagonalize_traits is provided. |
Public Types | |
using | Iso_cuboid_3 = typename GeomTraits::Iso_cuboid_3 |
using | Planimetric_grid = Classification::Planimetric_grid< GeomTraits, PointRange, PointMap > |
using | Neighborhood = Classification::Point_set_neighborhood< GeomTraits, PointRange, PointMap > |
using | Local_eigen_analysis = Classification::Local_eigen_analysis |
Constructor | |
Point_set_feature_generator (const PointRange &input, PointMap point_map, std::size_t nb_scales, float voxel_size=-1.f) | |
initializes a feature generator from an input range. | |
Feature Generation | |
void | generate_point_based_features (Feature_set &features) |
generates geometric features based on point position information. | |
void | generate_eigen_features (Feature_set &features) |
generates geometric eigen features. | |
void | generate_dispersion_features (Feature_set &features) |
generates geometric features based on local dispersion information. | |
void | generate_elevation_features (Feature_set &features) |
generates geometric features based on elevation information. | |
void | generate_normal_based_features (Feature_set &features) |
generates geometric features based on normal analysis information. | |
template<typename VectorMap > | |
void | generate_normal_based_features (Feature_set &features, const VectorMap &normal_map) |
generates geometric features based on normal vector information. | |
template<typename ColorMap > | |
void | generate_color_based_features (Feature_set &features, const ColorMap &color_map) |
generates geometric features based on point color information. | |
template<typename EchoMap > | |
void | generate_echo_based_features (Feature_set &features, const EchoMap &echo_map) |
generates geometric features based on echo information. | |
Data Structures Access | |
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 . | |
Parameters | |
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 . | |
float | radius_neighbors (std::size_t scale=0) const |
returns the radius used for neighborhood queries at scale scale . | |
float | radius_dtm (std::size_t scale=0) const |
returns the radius used for digital terrain modeling at scale scale . | |
CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::Point_set_feature_generator | ( | const PointRange & | input, |
PointMap | point_map, | ||
std::size_t | nb_scales, | ||
float | voxel_size = -1.f |
||
) |
initializes a feature generator from an input range.
If not provided by the user, 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.
input | point range. |
point_map | property map to access the input points. |
nb_scales | number of scales to compute. |
voxel_size | smallest scale used as a voxel size for the planimetric grid (if the default value -1 is used, its value is automatically estimated). |
void CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::generate_color_based_features | ( | Feature_set & | features, |
const ColorMap & | color_map | ||
) |
generates geometric features based on point color information.
Generates CGAL::Classification::Feature::Color_channel
with channels HUE
, SATURATION
and VALUE
.
ColorMap | model of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is CGAL::IO::Color . |
features | the feature set where the features are instantiated. |
color_map | property map to access the colors of the input points (if any). |
void CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::generate_dispersion_features | ( | Feature_set & | features | ) |
generates geometric features based on local dispersion information.
At each scale, the following features are generated:
features | the feature set where the features are instantiated. |
void CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::generate_echo_based_features | ( | Feature_set & | features, |
const EchoMap & | echo_map | ||
) |
generates geometric features based on echo information.
At each scale, generates CGAL::Classification::Feature::Echo_scatter
.
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. |
echo_map | property map to access the echo values of the input points (if any). |
void CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::generate_eigen_features | ( | Feature_set & | features | ) |
generates geometric eigen features.
At each scale, features CGAL::Classification::Feature::Eigenvalue
with indices 0, 1 and 2 are generated.
features | the feature set where the features are instantiated. |
void CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::generate_elevation_features | ( | Feature_set & | features | ) |
generates geometric features based on elevation information.
At each scale, the following features are generated:
CGAL::Classification::Feature::Elevation
CGAL::Classification::Feature::Height_above
CGAL::Classification::Feature::Height_below
CGAL::Classification::Feature::Vertical_range
features | the feature set where the features are instantiated. |
void CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::generate_normal_based_features | ( | Feature_set & | features | ) |
generates geometric features based on normal analysis information.
At each scale, the version of CGAL::Classification::Feature::Verticality
based on eigenvalue is generated.
features | the feature set where the features are instantiated. |
void CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::generate_normal_based_features | ( | Feature_set & | features, |
const VectorMap & | normal_map | ||
) |
generates geometric features based on normal vector information.
Generates the version of CGAL::Classification::Feature::Verticality
based on normal vectors.
VectorMap | model of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is GeomTraits::Vector_3 . |
features | the feature set where the features are instantiated. |
normal_map | property map to access the normal vectors of the input points (if any). |
void CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits >::generate_point_based_features | ( | Feature_set & | features | ) |
generates geometric features based on point position information.
This is a meta-function that calls the following functions:
generate_eigen_features()
generate_dispersion_features()
generate_elevation_features()
generate_normal_based_features()
without a normal mapfeatures | the feature set where the features are instantiated. |
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
).