40 #ifndef PCL_CUDA_SAMPLE_CONSENSUS_MODEL_1POINT_PLANE_H_ 41 #define PCL_CUDA_SAMPLE_CONSENSUS_MODEL_1POINT_PLANE_H_ 43 #include <pcl/cuda/sample_consensus/sac_model.h> 44 #include <thrust/random.h> 57 coefficients(coeff), threshold(thresh)
60 template <
typename Tuple> __inline__ __host__ __device__
bool 65 template <
template <
typename>
class Storage>
70 const typename Storage<PointXYZRGB>::type &
input_;
73 coefficients(coeff), threshold(thresh), input_(input)
76 __inline__ __host__ __device__
int 87 coefficients(coeff), threshold(thresh)
90 template <
typename Tuple> __inline__ __host__ __device__
int 101 coefficients(coeff), threshold(thresh)
104 __inline__ __host__ __device__
int 116 coefficients(coeff), threshold(thresh), angle_threshold (angle_thresh)
119 template <
typename Tuple> __inline__ __host__ __device__
int 131 coefficients(coeff), threshold(thresh), angle_threshold (angle_thresh)
134 __inline__ __host__ __device__
int 146 coefficients(coeff), threshold(thresh), angle_threshold (angle_thresh)
149 template <
typename Tuple>
150 __inline__ __host__ __device__
int 157 template <
template <
typename>
class Storage>
180 typedef boost::shared_ptr<SampleConsensusModel1PointPlane>
Ptr;
193 getSamples (
int &iterations, Indices &samples);
202 computeModelCoefficients (
const Indices &samples, Coefficients &model_coefficients);
205 generateModelHypotheses (Hypotheses &h,
int max_iterations);
208 generateModelHypotheses (Hypotheses &h, Samples &s,
int max_iterations);
219 selectWithinDistance (
const Coefficients &model_coefficients,
220 float threshold, IndicesPtr &inliers, IndicesPtr &inliers_stencil);
222 selectWithinDistance (
const Hypotheses &h,
int idx,
224 IndicesPtr &inliers, IndicesPtr &inliers_stencil);
226 selectWithinDistance (Hypotheses &h,
int idx,
228 IndicesPtr &inliers_stencil,
231 countWithinDistance (
const Coefficients &model_coefficients,
float threshold);
234 countWithinDistance (
const Hypotheses &h,
int idx,
float threshold);
238 const static int MAX_ITERATIONS_COLLINEAR = 1000;
242 template <
template <
typename>
class Storage>
256 input(_input), indices(_indices), nr_indices(_nr_indices), bad_value(bad)
260 __inline__ __host__ __device__ float4
266 template <
template <
typename>
class Storage>
281 thrust::default_random_engine
rng;
284 input(_input), normals_(normals), indices(_indices), width_(width), height_(height), nr_indices(_nr_indices), bad_value(bad)
289 __inline__ __host__ __device__ thrust::tuple<int,float4>
297 __inline__ __host__ __device__
303 __inline__ __host__ __device__
306 thrust::default_random_engine rng(m_seed);
318 #endif //#ifndef PCL_CUDA_SAMPLE_CONSENSUS_MODEL_PLANE_H_ SampleConsensusModel< Storage >::Indices Indices
Check if a certain tuple is a point inlier.
SampleConsensusModel< Storage >::Coefficients Coefficients
SampleConsensusModel< Storage >::Hypotheses Hypotheses
CheckPlanarInlier(float4 coeff, float thresh)
SampleConsensusModel< Storage >::Indices Indices
SampleConsensusModel represents the base model class.
const PointXYZRGB * input
boost::shared_ptr< typename Storage< int >::type > IndicesPtr
PointCloudAOS represents an AOS (Array of Structs) PointCloud implementation for CUDA processing...
Storage< int >::type Samples
PointCloud::ConstPtr PointCloudConstPtr
boost::shared_ptr< const typename Storage< int >::type > IndicesConstPtr
Storage< float >::type Coefficients
SampleConsensusModel< Storage >::IndicesConstPtr IndicesConstPtr
Create1PointPlaneSampleHypothesis(const PointXYZRGB *_input, const float4 *normals, const int *_indices, int width, int height, int _nr_indices, float bad)
SampleConsensusModel1PointPlane defines a model for 3D plane segmentation.
SampleConsensusModel< Storage >::PointCloud PointCloud
Storage< int >::type Indices
SampleConsensusModel< Storage >::IndicesPtr IndicesPtr
Check if a certain tuple is a point inlier.
CheckPlanarInlierNormalIndices(float4 coeff, float thresh, float angle_thresh)
SampleConsensusModel< Storage >::PointCloud PointCloud
CheckPlanarInlierIndices(float4 coeff, float thresh)
Storage< float4 >::type Hypotheses
Check if a certain tuple is a point inlier.
Check if a certain tuple is a point inlier.
SampleConsensusModel< Storage >::Samples Samples
SampleConsensusModel< Storage >::IndicesConstPtr IndicesConstPtr
SampleConsensusModel< Storage >::PointCloud PointCloud
boost::shared_ptr< PointCloudAOS< Storage > > Ptr
Check if a certain tuple is a point inlier.
SampleConsensusModel< Storage >::IndicesConstPtr IndicesConstPtr
const PointXYZRGB * input
thrust::default_random_engine rng
__inline__ __host__ __device__ parallel_random_generator(unsigned int seed)
boost::shared_ptr< SampleConsensusModel1PointPlane > Ptr
SampleConsensusModel< Storage >::Indices Indices
CheckPlanarInlierKinectNormalIndices(float4 coeff, float thresh, float angle_thresh)
CheckPlanarInlierKinectIndices(float4 coeff, float thresh, float angle_thresh)
__inline__ __host__ __device__ bool operator()(const Tuple &t)
NewCheckPlanarInlier(float4 coeff, float thresh, const typename Storage< PointXYZRGB >::type &input)
boost::shared_ptr< const PointCloudAOS< Storage > > ConstPtr
Create1PointPlaneHypothesis(const PointXYZRGB *_input, const int *_indices, int _nr_indices, float bad)
Default point xyz-rgb structure.
PointCloud::Ptr PointCloudPtr
Check if a certain tuple is a point inlier.
__inline__ __host__ __device__ unsigned int operator()(const unsigned int n) const
PointCloud::ConstPtr PointCloudConstPtr
PointCloud::ConstPtr PointCloudConstPtr
CountPlanarInlier(float4 coeff, float thresh)
Check if a certain tuple is a point inlier.
Check if a certain tuple is a point inlier.
Check if a certain tuple is a point inlier.
const Storage< PointXYZRGB >::type & input_