gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options > Struct Template Reference

Processing functor for the computation of the 4PCS algorithm. More...

#include <FunctorBrute4pcs.h>

+ Collaboration diagram for gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >:

Public Types

using BaseCoordinates = typename Traits4pcs< PointType >::Coordinates
 
using OptionType = Options
 
using PairsVector = std::vector< std::pair< int, int > >
 
using Scalar = typename PointType::Scalar
 
using VectorType = typename PointType::VectorType
 

Public Member Functions

void ExtractPairs (Scalar pair_distance, Scalar pair_normals_angle, Scalar pair_distance_epsilon, int base_point1, int base_point2, PairsVector *pairs) const
 Constructs pairs of points in Q, corresponding to a single pair in the in basein P. More...
 
bool FindCongruentQuadrilaterals (Scalar invariant1, Scalar invariant2, Scalar, Scalar distance_threshold2, const std::vector< std::pair< int, int >> &First_pairs, const std::vector< std::pair< int, int >> &Second_pairs, typename Traits4pcs< PointType >::Set *quadrilaterals) const
 Finds congruent candidates in the set Q, given the invariants and threshold distances. Returns true if a non empty set can be found, false otherwise. More...
 
 FunctorBrute4PCS (std::vector< PointType > &sampled_Q_3D_, BaseCoordinates &base_3D_, const OptionType &options)
 
void Initialize ()
 Initializes the data structures and needed values before the match computation. More...
 

Detailed Description

template<typename PointType, typename PairFilterFunctor, typename Options>
struct gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >

Processing functor for the computation of the 4PCS algorithm.

See also
Match4pcsBase
Template Parameters
PairFilterFunctorfilters pairs of points during the exploration. Must implement PairFilterConcept

Member Typedef Documentation

template<typename PointType , typename PairFilterFunctor , typename Options >
using gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >::BaseCoordinates = typename Traits4pcs<PointType>::Coordinates
template<typename PointType , typename PairFilterFunctor , typename Options >
using gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >::OptionType = Options
template<typename PointType , typename PairFilterFunctor , typename Options >
using gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >::PairsVector = std::vector< std::pair<int, int> >
template<typename PointType , typename PairFilterFunctor , typename Options >
using gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >::Scalar = typename PointType::Scalar
template<typename PointType , typename PairFilterFunctor , typename Options >
using gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >::VectorType = typename PointType::VectorType

Constructor & Destructor Documentation

template<typename PointType , typename PairFilterFunctor , typename Options >
gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >::FunctorBrute4PCS ( std::vector< PointType > &  sampled_Q_3D_,
BaseCoordinates base_3D_,
const OptionType options 
)
inline

+ Here is the call graph for this function:

Member Function Documentation

template<typename PointType , typename PairFilterFunctor , typename Options >
void gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >::ExtractPairs ( Scalar  pair_distance,
Scalar  pair_normals_angle,
Scalar  pair_distance_epsilon,
int  base_point1,
int  base_point2,
PairsVector pairs 
) const
inline

Constructs pairs of points in Q, corresponding to a single pair in the in basein P.

Parameters
[in]pair_distanceThe distance between the pairs in P that we have to match in the pairs we select from Q.
[in]pair_normal_distanceThe angle between the normals of the pair in P.
[in]pair_distance_epsilonTolerance on the pair distance. We allow candidate pair in Q to have distance of pair_distance+-pair_distance_epsilon.
[in]base_point1The index of the first point in P.
[in]base_point2The index of the second point in P.
[out]pairsA set of pairs in Q that match the pair in P with respect to distance and normals, up to the given tolerance.
template<typename PointType , typename PairFilterFunctor , typename Options >
bool gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >::FindCongruentQuadrilaterals ( Scalar  invariant1,
Scalar  invariant2,
Scalar  ,
Scalar  distance_threshold2,
const std::vector< std::pair< int, int >> &  First_pairs,
const std::vector< std::pair< int, int >> &  Second_pairs,
typename Traits4pcs< PointType >::Set *  quadrilaterals 
) const
inline

Finds congruent candidates in the set Q, given the invariants and threshold distances. Returns true if a non empty set can be found, false otherwise.

Parameters
invariant1[in] The first invariant corresponding to the set P_pairs of pairs, previously extracted from Q.
invariant2[in] The second invariant corresponding to the set Q_pairs of pairs, previously extracted from Q.
[in]distance_threshold1The distance for verification.
[in]distance_threshold2The distance for matching middle points due to the invariants (See the paper for e1, e2).
[in]First_pairsThe first set of pairs found in Q.
[in]Second_pairsThe second set of pairs found in Q.
[out]quadrilateralsThe set of congruent quadrilateral. In fact, it's a super set from which we extract the real congruent set.
template<typename PointType , typename PairFilterFunctor , typename Options >
void gr::FunctorBrute4PCS< PointType, PairFilterFunctor, Options >::Initialize ( )
inline

Initializes the data structures and needed values before the match computation.


The documentation for this struct was generated from the following file: