CGAL 5.6.1 - Shape Detection
CGAL::Shape_detection::Segment_set::Least_squares_line_fit_region< GeomTraits, Item_, SegmentMap > Class Template Reference

#include <CGAL/Shape_detection/Region_growing/Segment_set/Least_squares_line_fit_region.h>

Definition

Region type based on the quality of the least squares line fit applied to a segment set.

This class fits a line, using PCA, to chunks of 2D or 3D segments and controls the quality of this fit. If all quality conditions are satisfied, the chunk is accepted as a valid region, otherwise rejected.

Template Parameters
GeomTraitsa model of Kernel
Item_a descriptor representing a given segment. Must be a model of Hashable.
SegmentMapa model of ReadablePropertyMap whose key type is Item and value type is Kernel::Segment_2 or Kernel::Segment_3
Is Model Of:
RegionType
Examples:
Shape_detection/region_growing_lines_on_segment_set.cpp.

Types

typedef GeomTraits::FT FT
 Number type.
 
using Item = Item_
 Item type.
 
using Region = std::vector< Item >
 
using Primitive = typename GeomTraits::Line_2 or typename GeomTraits::Line_3 using Region_unordered_map=std::unordered_map< Item, std::size_t, internal::hash_item< Item > >
 Primitive type depends on the dimension of the input data.
 
using Region_index_map = boost::associative_property_map< Region_unordered_map >
 

Initialization

template<typename NamedParameters = parameters::Default_named_parameters>
 Least_squares_line_fit_region (const NamedParameters &np=parameters::default_values())
 initializes all internal data structures. More...
 

Access

Region_index_map region_index_map ()
 implements RegionType::region_index_map(). More...
 
Primitive primitive () const
 implements RegionType::primitive(). More...
 
bool is_part_of_region (const Item query, const Region &) const
 implements RegionType::is_part_of_region(). More...
 
bool is_valid_region (const Region &region) const
 implements RegionType::is_valid_region(). More...
 
bool update (const Region &region)
 implements RegionType::update(). More...
 

Constructor & Destructor Documentation

◆ Least_squares_line_fit_region()

template<typename GeomTraits , typename Item_ , typename SegmentMap >
template<typename NamedParameters = parameters::Default_named_parameters>
CGAL::Shape_detection::Segment_set::Least_squares_line_fit_region< GeomTraits, Item_, SegmentMap >::Least_squares_line_fit_region ( const NamedParameters &  np = parameters::default_values())

initializes all internal data structures.

Template Parameters
NamedParametersa sequence of Named Parameters
Parameters
npa sequence of Named Parameters among the ones listed below
Template Parameters
InputRangea model of ConstRange whose iterator type is RandomAccessIterator
Optional Named Parameters
  • the maximum distance from the furthest vertex of a segment to a line
  • Type: GeomTraits::FT
  • Default: 1
  • the maximum angle in degrees between the direction of a segment and the direction of a line
  • Type: GeomTraits::FT
  • Default: 25 degrees
  • the cosine value cos(maximum_angle * PI / 180) to be used instead of the parameter maximum_angle()
  • Type: GeomTraits::FT
  • Default: cos(25 * PI / 180)
  • the minimum number of segments a region must have
  • Type: std::size_t
  • Default: 1
  • an instance of GeomTraits
  • Default: GeomTraits()
Precondition
maximum_distance >= 0
maximum_angle >= 0 && maximum_angle <= 90
cosine_of_maximum_angle >= 0 && cosine_of_maximum_angle <= 1
minimum_region_size > 0

Member Function Documentation

◆ is_part_of_region()

template<typename GeomTraits , typename Item_ , typename SegmentMap >
bool CGAL::Shape_detection::Segment_set::Least_squares_line_fit_region< GeomTraits, Item_, SegmentMap >::is_part_of_region ( const Item  query,
const Region &   
) const

implements RegionType::is_part_of_region().

This function controls if a segment with the index query is within the maximum_distance from the corresponding line and if the angle between the direction of this segment and the line's direction is within the maximum_angle. If both conditions are satisfied, it returns true, otherwise false.

Parameters
queryItem of the query segment

The last parameter is not used in this implementation.

Returns
Boolean true or false

◆ is_valid_region()

template<typename GeomTraits , typename Item_ , typename SegmentMap >
bool CGAL::Shape_detection::Segment_set::Least_squares_line_fit_region< GeomTraits, Item_, SegmentMap >::is_valid_region ( const Region &  region) const

implements RegionType::is_valid_region().

This function controls if the region contains at least minimum_region_size segments.

Parameters
regionSegments of the region represented as Items.
Returns
Boolean true or false

◆ primitive()

template<typename GeomTraits , typename Item_ , typename SegmentMap >
Primitive CGAL::Shape_detection::Segment_set::Least_squares_line_fit_region< GeomTraits, Item_, SegmentMap >::primitive ( ) const

implements RegionType::primitive().

This function provides the last primitive that has been fitted with the region.

Returns
Primitive parameters that fits the region
Precondition
successful fitted primitive via successful call of update(region) with a sufficient large region

◆ region_index_map()

template<typename GeomTraits , typename Item_ , typename SegmentMap >
Region_index_map CGAL::Shape_detection::Segment_set::Least_squares_line_fit_region< GeomTraits, Item_, SegmentMap >::region_index_map ( )

implements RegionType::region_index_map().

This function creates an empty property map that maps iterators on the input range Item to std::size_t.

◆ update()

template<typename GeomTraits , typename Item_ , typename SegmentMap >
bool CGAL::Shape_detection::Segment_set::Least_squares_line_fit_region< GeomTraits, Item_, SegmentMap >::update ( const Region &  region)

implements RegionType::update().

This function fits the least squares line to all segments from the region.

Parameters
regionSegments of the region represented as Items.
Returns
Boolean true if the line fitting succeeded and false otherwise
Precondition
region.size() > 0