40 #ifndef PCL_SEGMENTATION_SAC_SEGMENTATION_H_ 41 #define PCL_SEGMENTATION_SAC_SEGMENTATION_H_ 43 #include <pcl/pcl_base.h> 44 #include <pcl/PointIndices.h> 45 #include <pcl/ModelCoefficients.h> 48 #include <pcl/sample_consensus/method_types.h> 49 #include <pcl/sample_consensus/sac.h> 51 #include <pcl/sample_consensus/model_types.h> 52 #include <pcl/sample_consensus/sac_model.h> 54 #include <pcl/search/search.h> 64 template <
typename Po
intT>
118 inline SampleConsensusPtr
122 inline SampleConsensusModelPtr
226 inline Eigen::Vector3f
257 initSAC (
const int method_type);
310 template <
typename Po
intT,
typename Po
intNT>
343 , distance_weight_ (0.1)
344 , distance_from_origin_ (0)
357 inline PointCloudNConstPtr
379 min_angle_ = min_angle;
380 max_angle_ = max_angle;
387 min_angle = min_angle_;
388 max_angle = max_angle_;
429 #ifdef PCL_NO_PRECOMPILE 430 #include <pcl/segmentation/impl/sac_segmentation.hpp> 433 #endif //#ifndef PCL_SEGMENTATION_SAC_SEGMENTATION_H_ double getNormalDistanceWeight() const
Get the relative weight (between 0 and 1) to give to the angular distance (0 to pi/2) between point n...
void setOptimizeCoefficients(bool optimize)
Set to true if a coefficient refinement is required.
double min_angle_
The minimum and maximum allowed opening angle of valid cone model.
int max_iterations_
Maximum number of iterations before giving up (user given parameter).
bool random_
Set to true if we need a random seed.
void setSamplesMaxDist(const double &radius, SearchPtr search)
Set the maximum distance allowed when drawing random samples.
void setEpsAngle(double ea)
Set the angle epsilon (delta) threshold.
SACSegmentation represents the Nodelet segmentation class for Sample Consensus methods and models...
void setInputNormals(const PointCloudNConstPtr &normals)
Provide a pointer to the input dataset that contains the point normals of the XYZ dataset...
virtual std::string getClassName() const
Class get name method.
SampleConsensusPtr getMethod() const
Get a pointer to the SAC method used.
PointCloud::ConstPtr PointCloudConstPtr
double probability_
Desired probability of choosing at least one sample free from outliers (user given parameter)...
SampleConsensusModelPtr getModel() const
Get a pointer to the SAC model used.
void setMethodType(int method)
The type of sample consensus method to use (user given parameter).
SampleConsensus< PointT >::Ptr SampleConsensusPtr
SampleConsensusModel< PointT >::Ptr SampleConsensusModelPtr
void setProbability(double probability)
Set the probability of choosing at least one sample free from outliers.
pcl::PointCloud< PointT > PointCloud
double getDistanceFromOrigin() const
Get the distance of a plane model from the origin.
double samples_radius_
The maximum distance of subsequent samples from the first (radius search)
virtual bool initSACModel(const int model_type)
Initialize the Sample Consensus model and set its parameters.
double threshold_
Distance to the model threshold (user given parameter).
boost::shared_ptr< PointCloud< PointT > > Ptr
PointCloudN::ConstPtr PointCloudNConstPtr
double radius_min_
The minimum and maximum radius limits for the model.
double distance_from_origin_
The distance from the template plane to the origin.
void getSamplesMaxDist(double &radius)
Get maximum distance allowed when drawing random samples.
Eigen::Vector3f getAxis() const
Get the axis along which we need to search for a model perpendicular to.
pcl::search::Search< PointT >::Ptr SearchPtr
double getProbability() const
Get the probability of choosing at least one sample free from outliers.
int getModelType() const
Get the type of SAC model used.
void getMinMaxOpeningAngle(double &min_angle, double &max_angle)
Get the opening angle which we need minumum to validate a cone model.
PointCloud::Ptr PointCloudPtr
int model_type_
The type of model to use (user given parameter).
boost::shared_ptr< pcl::search::Search< PointT > > Ptr
pcl::PointCloud< PointNT > PointCloudN
SampleConsensusModelPtr model_
The model that needs to be segmented.
double eps_angle_
The maximum allowed difference between the model normal and the given axis.
SACSegmentationFromNormals(bool random=false)
Empty constructor.
double distance_weight_
The relative weight (between 0 and 1) to give to the angular distance (0 to pi/2) between point norma...
SearchPtr samples_radius_search_
The search object for picking subsequent samples using radius search.
PointCloud::ConstPtr PointCloudConstPtr
Eigen::Vector3f axis_
The axis along which we need to search for a model perpendicular to.
void setAxis(const Eigen::Vector3f &ax)
Set the axis along which we need to search for a model perpendicular to.
SampleConsensus< PointT >::Ptr SampleConsensusPtr
void setRadiusLimits(const double &min_radius, const double &max_radius)
Set the minimum and maximum allowable radius limits for the model (applicable to models that estimate...
boost::shared_ptr< const PointCloud< PointT > > ConstPtr
int getMaxIterations() const
Get maximum number of iterations before giving up.
int getMethodType() const
Get the type of sample consensus method used.
PointCloudNConstPtr getInputNormals() const
Get a pointer to the normals of the input XYZ point cloud dataset.
SACSegmentationFromNormals represents the PCL nodelet segmentation class for Sample Consensus methods...
bool optimize_coefficients_
Set to true if a coefficient refinement is required.
PointCloud represents the base class in PCL for storing collections of 3D points. ...
PointCloudN::Ptr PointCloudNPtr
void setModelType(int model)
The type of model to use (user given parameter).
SampleConsensusModel< PointT >::Ptr SampleConsensusModelPtr
virtual std::string getClassName() const
Class get name method.
SampleConsensusPtr sac_
The sample consensus segmentation method.
virtual void segment(PointIndices &inliers, ModelCoefficients &model_coefficients)
Base method for segmentation of a model in a PointCloud given by <setInputCloud (), setIndices ()>
boost::shared_ptr< SampleConsensusModel > Ptr
SampleConsensusModelFromNormals< PointT, PointNT >::Ptr SampleConsensusModelFromNormalsPtr
virtual ~SACSegmentation()
Empty destructor.
void setMaxIterations(int max_iterations)
Set the maximum number of iterations before giving up.
boost::shared_ptr< SampleConsensusModelFromNormals > Ptr
void setDistanceFromOrigin(const double d)
Set the distance we expect a plane model to be from the origin.
void getRadiusLimits(double &min_radius, double &max_radius)
Get the minimum and maximum allowable radius limits for the model as set by the user.
SACSegmentation(bool random=false)
Empty constructor.
void setMinMaxOpeningAngle(const double &min_angle, const double &max_angle)
Set the minimum opning angle for a cone model.
A point structure representing Euclidean xyz coordinates, and the RGB color.
void setDistanceThreshold(double threshold)
Distance to the model threshold (user given parameter).
virtual void initSAC(const int method_type)
Initialize the Sample Consensus method and set its parameters.
double getEpsAngle() const
Get the epsilon (delta) model angle threshold in radians.
bool getOptimizeCoefficients() const
Get the coefficient refinement internal flag.
PointCloudNConstPtr normals_
A pointer to the input dataset that contains the point normals of the XYZ dataset.
SACSegmentation< PointT >::PointCloud PointCloud
PointCloud::Ptr PointCloudPtr
double getDistanceThreshold() const
Get the distance to the model threshold.
SampleConsensus represents the base class.
void setNormalDistanceWeight(double distance_weight)
Set the relative weight (between 0 and 1) to give to the angular distance (0 to pi/2) between point n...
int method_type_
The type of sample consensus method to use (user given parameter).