- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
29基基于于PCL的的点点云云平平⾯⾯分分割割拟拟合合算算法法技技术术路路线线 ((针针对对有有噪噪声声的的点点
云云数数据据))
0 引⾔
最近项 中⽤到了基于PCL开发的基于平⾯的点云和CA D模型的配准算法,点云平⾯提取采⽤的算法如下。
1 基于PCL的点云平⾯分割拟合算法
2 参数及其意义介绍
(1)点云下采样
1. 参数:leafsize
2. 意义:Voxel Grid的leafsize参数,物理意义是下采样⽹格的⼤⼩,直接影响处理后点云密集程度,并对后期各种算法的处理速度产⽣
直接影响。
3. 值越⼤,点云密度越低,处理速度越快;值越⼩,点云密度越⾼,处理速度越慢。通常保持这个值,使得其他的与点数有关的参数可
以⽐较稳定⽽不作⼤的改动。
4. 对应的代码:
PointCloudPtr cloud(new ointCloud);
ParameterReader d(ParameterFilePath);
double leafsize = stod( d.get Data(leafsize));
cl::VoxelGridPointT sor;
sor.set In utCloud(CRTP::cloud_org);
sor.set LeafSize(leafsize, leafsize, leafsize);
sor.filter(*cloud);
(2)点云法线估计
1. 参数:Ksearch
2. 意义:估计法线时邻域内点的个数
3. 值越⼩,对点云的轮廓描述越精细;值越⼤,对点云的轮廓描述越粗糙。
4. 对应的代码:
ParameterReader d(ParameterFilePath);
cl::NormalEstimationPointT, cl::Normal ne;
cl::PointCloud cl::Normal ::Ptr my normals(new cl::PointCloud cl::Normal);
cl::search::KdTreePointT ::Ptr tree(new cl::search::KdTreePointT);
tree-set In utCloud(cloud_filter);
ne.set In utCloud(cloud_filter);
ne.setSearchMethod(tree);
ne.set KSearch(stoi( d.get Data(Ksearch)));
ute(*my normals);
(3)RegionGrowing⽣长聚类算法对可能是平⾯的点云进⾏分割
算法步骤:
1. 算法⾸先计算所有点的曲率值,并将曲率最⼩的点作为种⼦ (seeds),开始进⾏⽣长
2. 以法线夹⾓阈值 (Angle threshold)作为判断标准,对邻域内的点进⾏遍历判断 ,符合条件则加⼊当前点集,不符合则reject,并加
⼊reject点集
3. 以曲率阈值 (Curvature threshold)作为判断标准,将邻域内符合条件的点加⼊到种⼦队列中
4. 移除当前种⼦
5. 如果当前种⼦队列空了,表明当前⼦区域分割停⽌,遍历其他种⼦区域,直到停⽌整个点云均被遍历完为⽌⽣长
参数分析:
1. 参数:MinClusterSize (最⼩聚类点云数 ),MaxClusterSize (最⼤聚类点云数据)
NumberOfNeighbours (寻找种⼦seed点最近的点判断是否为同类),SmoothnessThreshold (聚类的法线夹⾓阈值)
CurvatureThreshold (聚类的曲率阈值,可以直观地将圆柱⾯等区别开)
2. 对应的代码
ParameterReader d(ParameterFilePath);
cl::RegionGrowingPointT, cl::Normal reg;
cl::search::KdTreePointT ::Ptr tree(new cl::search::KdTreePointT);
reg.set MinClusterSize(stoi
文档评论(0)