Point Cloud Library (PCL)  1.14.0-dev
List of all members | Public Types | Public Member Functions | Protected Attributes
pcl::cuda::SampleConsensusModel< Storage > Class Template Referenceabstract

SampleConsensusModel represents the base model class. More...

#include </__w/1/s/cuda/sample_consensus/include/pcl/cuda/sample_consensus/sac_model.h>

+ Inheritance diagram for pcl::cuda::SampleConsensusModel< Storage >:
+ Collaboration diagram for pcl::cuda::SampleConsensusModel< Storage >:

Public Types

using PointCloud = PointCloudAOS< Storage >
 
using PointCloudPtr = typename PointCloud::Ptr
 
using PointCloudConstPtr = typename PointCloud::ConstPtr
 
using Ptr = shared_ptr< SampleConsensusModel >
 
using ConstPtr = shared_ptr< const SampleConsensusModel >
 
using Indices = typename Storage< int >::type
 
using IndicesPtr = shared_ptr< typename Storage< int >::type >
 
using IndicesConstPtr = shared_ptr< const typename Storage< int >::type >
 
using Coefficients = typename Storage< float >::type
 
using CoefficientsPtr = shared_ptr< Coefficients >
 
using CoefficientsConstPtr = shared_ptr< const Coefficients >
 
using Hypotheses = typename Storage< float4 >::type
 
using Samples = typename Storage< int >::type
 

Public Member Functions

 SampleConsensusModel (const PointCloudConstPtr &cloud)
 Constructor for base SampleConsensusModel. More...
 
virtual ~SampleConsensusModel ()=default
 Destructor for base SampleConsensusModel. More...
 
virtual void getSamples (int &iterations, Indices &samples)=0
 Get a set of random data samples and return them as point indices. More...
 
virtual bool computeModelCoefficients (const Indices &samples, Coefficients &model_coefficients)=0
 Check whether the given index samples can form a valid model, compute the model coefficients from these samples and store them in model_coefficients. More...
 
virtual bool generateModelHypotheses (Hypotheses &h, int max_iterations)=0
 
virtual bool generateModelHypotheses (Hypotheses &h, Samples &s, int max_iterations)=0
 
virtual bool isSampleInlier (IndicesPtr &inliers_stencil, Samples &samples, unsigned int &i)
 
virtual int selectWithinDistance (const Coefficients &model_coefficients, float threshold, IndicesPtr &inliers, IndicesPtr &inliers_stencil)=0
 Select all the points which respect the given model coefficients as inliers. More...
 
virtual int selectWithinDistance (const Hypotheses &h, int idx, float threshold, IndicesPtr &inliers, IndicesPtr &inliers_stencil)=0
 
virtual int selectWithinDistance (Hypotheses &h, int idx, float threshold, IndicesPtr &inliers_stencil, float3 &centroid)=0
 
virtual int countWithinDistance (const Coefficients &model_coefficients, float threshold)=0
 
virtual int countWithinDistance (const Hypotheses &h, int idx, float threshold)=0
 
int deleteIndices (const IndicesPtr &indices_stencil)
 
int deleteIndices (const Hypotheses &h, int idx, IndicesPtr &inliers, const IndicesPtr &inliers_delete)
 
virtual void setInputCloud (const PointCloudConstPtr &cloud)
 Provide a pointer to the input dataset. More...
 
PointCloudConstPtr getInputCloud () const
 Get a pointer to the input point cloud dataset. More...
 
IndicesPtr getIndices () const
 Get a pointer to the vector of indices used. More...
 
void setRadiusLimits (float min_radius, float max_radius)
 Set the minimum and maximum allowable radius limits for the model (applicable to models that estimate a radius) More...
 
void getRadiusLimits (float &min_radius, float &max_radius)
 Get the minimum and maximum allowable radius limits for the model as set by the user. More...
 
shared_ptr< typename Storage< float4 >::type > getNormals ()
 
void setNormals (shared_ptr< typename Storage< float4 >::type > normals)
 

Protected Attributes

PointCloudConstPtr input_
 A boost shared pointer to the point cloud data array. More...
 
shared_ptr< typename Storage< float4 >::type > normals_
 
IndicesPtr indices_
 A pointer to the vector of point indices to use. More...
 
IndicesPtr indices_stencil_
 A pointer to the vector of point indices (stencil) to use. More...
 
unsigned int nr_indices_in_stencil_
 number of indices left in indices_stencil_ More...
 
float radius_min_
 The minimum and maximum radius limits for the model. More...
 
float radius_max_
 
thrust::minstd_rand rngl_
 Linear-Congruent random number generator engine. More...
 

Detailed Description

template<template< typename > class Storage>
class pcl::cuda::SampleConsensusModel< Storage >

SampleConsensusModel represents the base model class.

All sample consensus models must inherit from this class.

Definition at line 87 of file sac_model.h.

Member Typedef Documentation

◆ Coefficients

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::Coefficients = typename Storage<float>::type

Definition at line 101 of file sac_model.h.

◆ CoefficientsConstPtr

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::CoefficientsConstPtr = shared_ptr <const Coefficients>

Definition at line 103 of file sac_model.h.

◆ CoefficientsPtr

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::CoefficientsPtr = shared_ptr <Coefficients>

Definition at line 102 of file sac_model.h.

◆ ConstPtr

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::ConstPtr = shared_ptr<const SampleConsensusModel>

Definition at line 95 of file sac_model.h.

◆ Hypotheses

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::Hypotheses = typename Storage<float4>::type

Definition at line 105 of file sac_model.h.

◆ Indices

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::Indices = typename Storage<int>::type

Definition at line 97 of file sac_model.h.

◆ IndicesConstPtr

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::IndicesConstPtr = shared_ptr<const typename Storage<int>::type>

Definition at line 99 of file sac_model.h.

◆ IndicesPtr

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::IndicesPtr = shared_ptr<typename Storage<int>::type>

Definition at line 98 of file sac_model.h.

◆ PointCloud

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::PointCloud = PointCloudAOS<Storage>

Definition at line 90 of file sac_model.h.

◆ PointCloudConstPtr

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::PointCloudConstPtr = typename PointCloud::ConstPtr

Definition at line 92 of file sac_model.h.

◆ PointCloudPtr

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::PointCloudPtr = typename PointCloud::Ptr

Definition at line 91 of file sac_model.h.

◆ Ptr

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::Ptr = shared_ptr<SampleConsensusModel>

Definition at line 94 of file sac_model.h.

◆ Samples

template<template< typename > class Storage>
using pcl::cuda::SampleConsensusModel< Storage >::Samples = typename Storage<int>::type

Definition at line 107 of file sac_model.h.

Constructor & Destructor Documentation

◆ SampleConsensusModel()

template<template< typename > class Storage>
pcl::cuda::SampleConsensusModel< Storage >::SampleConsensusModel ( const PointCloudConstPtr cloud)
inline

Constructor for base SampleConsensusModel.

Parameters
cloudthe input point cloud dataset

Definition at line 120 of file sac_model.h.

References pcl::cuda::SampleConsensusModel< Storage >::setInputCloud().

◆ ~SampleConsensusModel()

template<template< typename > class Storage>
virtual pcl::cuda::SampleConsensusModel< Storage >::~SampleConsensusModel ( )
virtualdefault

Destructor for base SampleConsensusModel.

Member Function Documentation

◆ computeModelCoefficients()

template<template< typename > class Storage>
virtual bool pcl::cuda::SampleConsensusModel< Storage >::computeModelCoefficients ( const Indices samples,
Coefficients model_coefficients 
)
pure virtual

Check whether the given index samples can form a valid model, compute the model coefficients from these samples and store them in model_coefficients.

Pure virtual.

Parameters
samplesthe point indices found as possible good candidates for creating a valid model, stored on the device
model_coefficientsthe computed model coefficients

Implemented in pcl::cuda::SampleConsensusModelPlane< Storage >, and pcl::cuda::SampleConsensusModel1PointPlane< Storage >.

◆ countWithinDistance() [1/2]

template<template< typename > class Storage>
virtual int pcl::cuda::SampleConsensusModel< Storage >::countWithinDistance ( const Coefficients model_coefficients,
float  threshold 
)
pure virtual

◆ countWithinDistance() [2/2]

template<template< typename > class Storage>
virtual int pcl::cuda::SampleConsensusModel< Storage >::countWithinDistance ( const Hypotheses h,
int  idx,
float  threshold 
)
pure virtual

◆ deleteIndices() [1/2]

template<template< typename > class Storage>
int pcl::cuda::SampleConsensusModel< Storage >::deleteIndices ( const Hypotheses h,
int  idx,
IndicesPtr inliers,
const IndicesPtr inliers_delete 
)

◆ deleteIndices() [2/2]

template<template< typename > class Storage>
int pcl::cuda::SampleConsensusModel< Storage >::deleteIndices ( const IndicesPtr indices_stencil)

◆ generateModelHypotheses() [1/2]

template<template< typename > class Storage>
virtual bool pcl::cuda::SampleConsensusModel< Storage >::generateModelHypotheses ( Hypotheses h,
int  max_iterations 
)
pure virtual

◆ generateModelHypotheses() [2/2]

template<template< typename > class Storage>
virtual bool pcl::cuda::SampleConsensusModel< Storage >::generateModelHypotheses ( Hypotheses h,
Samples s,
int  max_iterations 
)
pure virtual

◆ getIndices()

template<template< typename > class Storage>
IndicesPtr pcl::cuda::SampleConsensusModel< Storage >::getIndices ( ) const
inline

◆ getInputCloud()

template<template< typename > class Storage>
PointCloudConstPtr pcl::cuda::SampleConsensusModel< Storage >::getInputCloud ( ) const
inline

Get a pointer to the input point cloud dataset.

Definition at line 272 of file sac_model.h.

References pcl::cuda::SampleConsensusModel< Storage >::input_.

◆ getNormals()

template<template< typename > class Storage>
shared_ptr<typename Storage<float4>::type> pcl::cuda::SampleConsensusModel< Storage >::getNormals ( )
inline

Definition at line 339 of file sac_model.h.

References pcl::cuda::SampleConsensusModel< Storage >::normals_.

◆ getRadiusLimits()

template<template< typename > class Storage>
void pcl::cuda::SampleConsensusModel< Storage >::getRadiusLimits ( float &  min_radius,
float &  max_radius 
)
inline

Get the minimum and maximum allowable radius limits for the model as set by the user.

Parameters
min_radiusthe resultant minimum radius model
max_radiusthe resultant maximum radius model

Definition at line 330 of file sac_model.h.

References pcl::cuda::SampleConsensusModel< Storage >::radius_max_, and pcl::cuda::SampleConsensusModel< Storage >::radius_min_.

◆ getSamples()

template<template< typename > class Storage>
virtual void pcl::cuda::SampleConsensusModel< Storage >::getSamples ( int &  iterations,
Indices samples 
)
pure virtual

Get a set of random data samples and return them as point indices.

Pure virtual.

Parameters
iterationsthe internal number of iterations used by SAC methods
samplesthe resultant model samples, stored on the device

Implemented in pcl::cuda::SampleConsensusModelPlane< Storage >, and pcl::cuda::SampleConsensusModel1PointPlane< Storage >.

◆ isSampleInlier()

template<template< typename > class Storage>
virtual bool pcl::cuda::SampleConsensusModel< Storage >::isSampleInlier ( IndicesPtr inliers_stencil,
Samples samples,
unsigned int &  i 
)
inlinevirtual

Definition at line 174 of file sac_model.h.

◆ selectWithinDistance() [1/3]

template<template< typename > class Storage>
virtual int pcl::cuda::SampleConsensusModel< Storage >::selectWithinDistance ( const Coefficients model_coefficients,
float  threshold,
IndicesPtr inliers,
IndicesPtr inliers_stencil 
)
pure virtual

Select all the points which respect the given model coefficients as inliers.

Pure virtual.

Parameters
model_coefficientsthe coefficients of a model that we need to compute distances to
thresholda maximum admissible distance threshold for determining the inliers from the outliers
inliersthe resultant model inliers
inliers_stencil

Implemented in pcl::cuda::SampleConsensusModelPlane< Storage >, and pcl::cuda::SampleConsensusModel1PointPlane< Storage >.

◆ selectWithinDistance() [2/3]

template<template< typename > class Storage>
virtual int pcl::cuda::SampleConsensusModel< Storage >::selectWithinDistance ( const Hypotheses h,
int  idx,
float  threshold,
IndicesPtr inliers,
IndicesPtr inliers_stencil 
)
pure virtual

◆ selectWithinDistance() [3/3]

template<template< typename > class Storage>
virtual int pcl::cuda::SampleConsensusModel< Storage >::selectWithinDistance ( Hypotheses h,
int  idx,
float  threshold,
IndicesPtr inliers_stencil,
float3 &  centroid 
)
pure virtual

◆ setInputCloud()

template<template< typename > class Storage>
virtual void pcl::cuda::SampleConsensusModel< Storage >::setInputCloud ( const PointCloudConstPtr cloud)
virtual

Provide a pointer to the input dataset.

Parameters
cloudthe const boost shared pointer to a PointCloud message

Referenced by pcl::cuda::SampleConsensusModel< Storage >::SampleConsensusModel().

◆ setNormals()

template<template< typename > class Storage>
void pcl::cuda::SampleConsensusModel< Storage >::setNormals ( shared_ptr< typename Storage< float4 >::type >  normals)
inline

Definition at line 342 of file sac_model.h.

References pcl::cuda::SampleConsensusModel< Storage >::normals_.

◆ setRadiusLimits()

template<template< typename > class Storage>
void pcl::cuda::SampleConsensusModel< Storage >::setRadiusLimits ( float  min_radius,
float  max_radius 
)
inline

Set the minimum and maximum allowable radius limits for the model (applicable to models that estimate a radius)

Parameters
min_radiusthe minimum radius model
max_radiusthe maximum radius model
Todo:
change this to set limits on the entire model

Definition at line 317 of file sac_model.h.

References pcl::cuda::SampleConsensusModel< Storage >::radius_max_, and pcl::cuda::SampleConsensusModel< Storage >::radius_min_.

Member Data Documentation

◆ indices_

template<template< typename > class Storage>
IndicesPtr pcl::cuda::SampleConsensusModel< Storage >::indices_
protected

A pointer to the vector of point indices to use.

Definition at line 357 of file sac_model.h.

Referenced by pcl::cuda::SampleConsensusModel< Storage >::getIndices().

◆ indices_stencil_

template<template< typename > class Storage>
IndicesPtr pcl::cuda::SampleConsensusModel< Storage >::indices_stencil_
protected

A pointer to the vector of point indices (stencil) to use.

Definition at line 359 of file sac_model.h.

Referenced by pcl::cuda::SampleConsensusModel< Storage >::getIndices().

◆ input_

template<template< typename > class Storage>
PointCloudConstPtr pcl::cuda::SampleConsensusModel< Storage >::input_
protected

A boost shared pointer to the point cloud data array.

Definition at line 353 of file sac_model.h.

Referenced by pcl::cuda::SampleConsensusModel< Storage >::getInputCloud().

◆ normals_

template<template< typename > class Storage>
shared_ptr<typename Storage<float4>::type> pcl::cuda::SampleConsensusModel< Storage >::normals_
protected

◆ nr_indices_in_stencil_

template<template< typename > class Storage>
unsigned int pcl::cuda::SampleConsensusModel< Storage >::nr_indices_in_stencil_
protected

number of indices left in indices_stencil_

Definition at line 361 of file sac_model.h.

Referenced by pcl::cuda::SampleConsensusModel< Storage >::getIndices().

◆ radius_max_

template<template< typename > class Storage>
float pcl::cuda::SampleConsensusModel< Storage >::radius_max_
protected

◆ radius_min_

template<template< typename > class Storage>
float pcl::cuda::SampleConsensusModel< Storage >::radius_min_
protected

The minimum and maximum radius limits for the model.

Applicable to all models that estimate a radius.

Definition at line 366 of file sac_model.h.

Referenced by pcl::cuda::SampleConsensusModel< Storage >::getRadiusLimits(), and pcl::cuda::SampleConsensusModel< Storage >::setRadiusLimits().

◆ rngl_

template<template< typename > class Storage>
thrust::minstd_rand pcl::cuda::SampleConsensusModel< Storage >::rngl_
protected

Linear-Congruent random number generator engine.

Definition at line 369 of file sac_model.h.


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