doc improvements

This commit is contained in:
Sébastien Loriot 2023-02-06 19:25:10 +01:00
parent dbccebf7df
commit e50dcb76bf
14 changed files with 78 additions and 37 deletions

View File

@ -14,6 +14,9 @@ Concepts used for the parameters of the `CGAL::Shape_detection::Region_growing`.
\defgroup PkgShapeDetectionRGOnPoints Point Set
\ingroup PkgShapeDetectionRG
\defgroup PkgShapeDetectionRGOnPointSet3 Convenience Aliases and Functions for Point_Set_3
\ingroup PkgShapeDetectionRG
Models that can be used with the `CGAL::Shape_detection::Region_growing`
for shape detection in a point set.
@ -78,7 +81,7 @@ and the Region Growing approach for detecting shapes in a set of arbitrary items
\cgalClassifedRefPages
## Efficient RANSAC ##
## (I) Efficient RANSAC ##
### Concepts ###
- `EfficientRANSACTraits`
@ -101,7 +104,7 @@ and the Region Growing approach for detecting shapes in a set of arbitrary items
- `CGAL::Shape_detection::Plane_map<Traits>`
- `CGAL::Shape_detection::Point_to_shape_index_map<Traits>`
## Region Growing ##
## (II) Region Growing ##
### Concepts ###
- `NeighborQuery`
@ -111,21 +114,58 @@ and the Region Growing approach for detecting shapes in a set of arbitrary items
- `CGAL::Shape_detection::Region_growing<%NeighborQuery, %RegionType>`
### Point Set ###
#### Neighbord Query Classes ####
- `CGAL::Shape_detection::Point_set::K_neighbor_query<GeomTraits, Item, PointMap>`
- `CGAL::Shape_detection::Point_set::Sphere_neighbor_query<GeomTraits, Item, PointMap>`
#### Sorting and Fitting Classes ####
- `CGAL::Shape_detection::Point_set::Least_squares_line_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_circle_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_sphere_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_cylinder_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_line_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_circle_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_circle_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_plane_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_sphere_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_sphere_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_cylinder_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_cylinder_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap, NormalMap>`
#### Convenience Aliases and Functions for `CGAL::Point_set_3` ####
- `CGAL::Shape_detection::Point_set::K_neighbor_query_for_point_set`
- `CGAL::Shape_detection::Point_set::make_k_neighbor_query()`
- `CGAL::Shape_detection::Point_set::Sphere_neighbor_query_for_point_set`
- `CGAL::Shape_detection::Point_set::make_sphere_neighbor_query()`
- `CGAL::Shape_detection::Point_set::Least_squares_circle_fit_region_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_circle_fit_region()`
- `CGAL::Shape_detection::Point_set::Least_squares_circle_fit_sorting_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_circle_fit_sorting()`
- `CGAL::Shape_detection::Point_set::Least_squares_cylinder_fit_region_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_cylinder_fit_region()`
- `CGAL::Shape_detection::Point_set::Least_squares_cylinder_fit_sorting_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_cylinder_fit_sorting()`
- `CGAL::Shape_detection::Point_set::Least_squares_line_fit_region_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_line_fit_region()`
- `CGAL::Shape_detection::Point_set::Least_squares_line_fit_sorting_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_line_fit_sorting()`
- `CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_plane_fit_region()`
- `CGAL::Shape_detection::Point_set::Least_squares_plane_fit_sorting_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_plane_fit_sorting()`
- `CGAL::Shape_detection::Point_set::Least_squares_sphere_fit_region_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_sphere_fit_region()`
- `CGAL::Shape_detection::Point_set::Least_squares_sphere_fit_sorting_for_point_set`
- `CGAL::Shape_detection::Point_set::make_least_squares_sphere_fit_sorting()`
### Segment Set ###
- `CGAL::Shape_detection::Segment_set::Least_squares_line_fit_region<GeomTraits, Item, SegmentMap>`
- `CGAL::Shape_detection::Segment_set::Least_squares_line_fit_sorting<GeomTraits, Item, %NeighborQuery, SegmentMap>`

View File

@ -229,7 +229,7 @@ The running time increases significantly as many more candidates are generated d
This shape detection component is based on the region growing algorithm applied to a set of user-specified items.
Shapes are detected by growing regions from seed items, where each region is created as follows:
-# Pick the next available seed item;
-# Pick the next available item;
-# Find its neighbors in the data set;
-# Include those neighbors, which satisfy the region requirements;
-# Repeat the procedure for all included neighbors;
@ -244,10 +244,11 @@ Together with the generic algorithm's implementation `CGAL::Shape_detection::Reg
Other instances can be easily added by the user, as explained below.
\subsection Shape_detection_RegionGrowingFramework Framework
A `CGAL::Shape_detection::Region_growing` algorithm is defined by several classes that are models of the following concepts:
The class `CGAL::Shape_detection::Region_growing` provides an implementation of the region growing algorithm. This algorithm can detect geometric primitives among a set of input geometric objects. Each such geometric object is identified using an <i>item</i>. The item is, in general but not necessarily, a lightweight class that uniquely identify a geometric object like an iterator over a container of geometric object, an integer pointing to the cell of a vector, a `face_descriptor` representing a face in a model of `FaceGraph`,... The geometric object is retrieved using a property map with the item as key type and the geometric object as value type. The class `CGAL::Shape_detection::Region_growing` is constructed by providing an input range with each element being converted to an item thanks to another property map passed to the constructor. For most cases default are fine and conveniences alias and functions are provided for the `CGAL::Point_set_3` class (see \ref PkgShapeDetectionRGOnPointSet3).
The algorithm provided by `CGAL::Shape_detection::Region_growing` works using two classes that are respectively models of the following concepts:
- `NeighborQuery`: responsible for providing the neighbors of an item;
- `RegionType`: responsible for the definition of a region from a list of items as well as for validating the addition of an item to an already defined region;
@ -271,7 +272,7 @@ The `Region_type` class defines the necessary types and functions:
- `Region_type::Primitive` This type represents the parameters of the primitive, e.g., in case of a sphere it could be a struct containing a `Point_3` for the center and a floating point number for the radius.
- `Region_type::Item` - a `const_iterator` of `std::vector<Object>`
- `Region_type::Region_index_map` - an unordered map from `Region_type::Item` to `std::size_t` encapsulated in a `boost::associative_property_map`.
- `Region_type::Region_index_map` - an unordered map from `Region_type::Item` to `std::size_t` encapsuled in a `boost::associative_property_map`.
- `Region_type::Primitive` - a `std::size_t`
- `Region_type::is_part_of_region()` - `true` if the first and second objects are neighbors,
- `Region_type::is_valid_region()` - always `true` after the first call to the function `update()`,
@ -409,7 +410,7 @@ A point set with normals is stored in `std::vector`.
\paragraph Shape_detection_RegionGrowingPoints_example_2D_circles Detecting 2D Circles
The following example shows a similar example, this time detecting circles instead of lines. In that case, we also preprocess points so that they are sorted according to their likelihood of belonging to a circle:
The following example shows a similar example, this time detecting circles instead of lines. In that case, we also preprocess points so that they are sorted according to their likelyhood of belonging to a circle:
\cgalExample{Shape_detection/region_growing_circles_on_point_set_2.cpp}

View File

@ -214,7 +214,7 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_k_neighbor_query()`.
*/
@ -225,7 +225,7 @@ namespace Point_set {
typename PointSet3::Point_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -380,9 +380,9 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_sphere_fit_sorting_for_point_set()`.
To be used together with `make_least_squares_sphere_fit_sorting()`.
*/
template <class PointSet3>
using Least_squares_circle_fit_region_for_point_set =
@ -392,7 +392,7 @@ namespace Point_set {
typename PointSet3::Vector_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -211,7 +211,7 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_circle_fit_sorting()`.
*/
@ -223,7 +223,7 @@ namespace Point_set {
typename PointSet3::Point_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, class NeighborQuery,typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -387,7 +387,7 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_cylinder_fit_region()`.
*/
@ -399,7 +399,7 @@ namespace Point_set {
typename PointSet3::Vector_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -220,7 +220,7 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_cylinder_fit_sorting()`.
*/
@ -233,7 +233,7 @@ namespace Point_set {
typename PointSet3::Vector_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, class NeighborQuery, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -362,7 +362,7 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_line_fit_region()`.
*/
@ -374,7 +374,7 @@ namespace Point_set {
typename PointSet3::Vector_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -199,7 +199,7 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_line_fit_sorting()`.
*/
@ -211,7 +211,7 @@ namespace Point_set {
typename PointSet3::Point_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, class NeighborQuery, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -363,7 +363,7 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_plane_fit_region()`.
*/
@ -375,7 +375,7 @@ using Least_squares_plane_fit_region_for_point_set =
typename PointSet3::Vector_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -200,7 +200,7 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_plane_fit_sorting()`.
*/
@ -212,7 +212,7 @@ using Least_squares_plane_fit_sorting_for_point_set =
typename PointSet3::Point_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, class NeighborQuery, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -369,7 +369,7 @@ namespace Point_set {
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_sphere_fit_region()`.
*/
@ -381,7 +381,7 @@ using Least_squares_sphere_fit_region_for_point_set =
typename PointSet3::Vector_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -210,7 +210,7 @@ namespace Point_set {
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_least_squares_sphere_fit_sorting()`.
*/
@ -222,7 +222,7 @@ using Least_squares_sphere_fit_sorting_for_point_set =
typename PointSet3::Point_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, class NeighborQuery, typename CGAL_NP_TEMPLATE_PARAMETERS>

View File

@ -212,7 +212,7 @@ private:
};
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
shortcut to ease the definition of the class when using `CGAL::Point_set_3`.
To be used together with `make_sphere_neighbor_query()`.
*/
@ -223,7 +223,7 @@ using Sphere_neighbor_query_for_point_set =
typename PointSet3::Point_map>;
/*!
\ingroup PkgShapeDetectionRGOnPoints
\ingroup PkgShapeDetectionRGOnPointSet3
returns a instance of the sorting class to be used with `CGAL::Point_set_3`, with point and normal maps added to `np`.
*/
template <class PointSet3, typename CGAL_NP_TEMPLATE_PARAMETERS>