CGAL 5.2.3 - Classification
CGAL::Classification::Point_set_feature_generator< GeomTraits, PointRange, PointMap, ConcurrencyTag, DiagonalizeTraits > Class Template Reference

#include <CGAL/Classification/Point_set_feature_generator.h>

Definition

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.

Warning
The generated features use data structures that are stored inside the generator. For this reason, the generator should be instantiated within the same scope as the feature set and should not be deleted before the feature set.
Template Parameters
GeomTraitsmodel of CGAL Kernel.
PointRangemodel of ConstRange. Its iterator type is RandomAccessIterator and its value type is the key type of PointMap.
PointMapmodel of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is GeomTraits::Point_3.
ConcurrencyTagenables 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).
DiagonalizeTraitsmodel 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. More...
 

Feature Generation

void generate_point_based_features (Feature_set &features)
 generates geometric features based on point position information. More...
 
void generate_eigen_features (Feature_set &features)
 generates geometric eigen features. More...
 
void generate_dispersion_features (Feature_set &features)
 generates geometric features based on local dispersion information. More...
 
void generate_elevation_features (Feature_set &features)
 generates geometric features based on elevation information. More...
 
void generate_normal_based_features (Feature_set &features)
 generates geometric features based on normal analysis information. More...
 
template<typename VectorMap >
void generate_normal_based_features (Feature_set &features, const VectorMap &normal_map)
 generates geometric features based on normal vector information. More...
 
template<typename ColorMap >
void generate_color_based_features (Feature_set &features, const ColorMap &color_map)
 generates geometric features based on point color information. More...
 
template<typename EchoMap >
void generate_echo_based_features (Feature_set &features, const EchoMap &echo_map)
 generates geometric features based on echo information. More...
 

Data Structures Access

const Iso_cuboid_3bbox () const
 returns the bounding box of the input point set.
 
const Neighborhoodneighborhood (std::size_t scale=0) const
 returns the neighborhood structure at scale scale.
 
const Planimetric_gridgrid (std::size_t scale=0) const
 returns the planimetric grid structure at scale scale.
 
const Local_eigen_analysiseigen (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. 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...
 

Constructor & Destructor Documentation

◆ Point_set_feature_generator()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
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.

Parameters
inputpoint range.
point_mapproperty map to access the input points.
nb_scalesnumber of scales to compute.
voxel_sizesmallest scale used as a voxel size for the planimetric grid (if the default value -1 is used, its value is automatically estimated).

Member Function Documentation

◆ generate_color_based_features()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
template<typename ColorMap >
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.

Template Parameters
ColorMapmodel of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is CGAL::Color.
Parameters
featuresthe feature set where the features are instantiated.
color_mapproperty map to access the colors of the input points (if any).

◆ generate_dispersion_features()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
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:

Parameters
featuresthe feature set where the features are instantiated.

◆ generate_echo_based_features()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
template<typename EchoMap >
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.

Template Parameters
EchoMapmodel of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is std::size_t.
Parameters
featuresthe feature set where the features are instantiated.
echo_mapproperty map to access the echo values of the input points (if any).

◆ generate_eigen_features()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
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.

Parameters
featuresthe feature set where the features are instantiated.

◆ generate_elevation_features()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
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:

Parameters
featuresthe feature set where the features are instantiated.

◆ generate_normal_based_features() [1/2]

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
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.

Parameters
featuresthe feature set where the features are instantiated.

◆ generate_normal_based_features() [2/2]

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
template<typename VectorMap >
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.

Template Parameters
VectorMapmodel of ReadablePropertyMap whose key type is the value type of the iterator of PointRange and value type is GeomTraits::Vector_3.
Parameters
featuresthe feature set where the features are instantiated.
normal_mapproperty map to access the normal vectors of the input points (if any).

◆ generate_point_based_features()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
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:

Parameters
featuresthe feature set where the features are instantiated.

◆ grid_resolution()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
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.

◆ radius_dtm()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
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.

◆ radius_neighbors()

template<typename GeomTraits , typename PointRange , typename PointMap , typename ConcurrencyTag , typename DiagonalizeTraits >
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).