首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于区域生长的表面检测如何去除PCL中的孤立点

基于区域生长的表面检测如何去除PCL中的孤立点
EN

Stack Overflow用户
提问于 2019-05-17 21:00:15
回答 1查看 572关注 0票数 1

我使用PCL检测我的激光雷达点云中的表面,我的配置如下:

代码语言:javascript
复制
pcl::RegionGrowing<pcl::PointXYZ, pcl::Normal> reg;
reg.setMinClusterSize(static_cast<int>(100));
reg.setMaxClusterSize(static_cast<int>(1000));
reg.setSearchMethod(new pcl::search::KdTree<pcl::PointXYZ>);
reg.setNumberOfNeighbours(30);
reg.setInputCloud(point_cloud);
reg.setInputNormals(normals);
reg.setSmoothnessThreshold(6_deg);
reg.setCurvatureThreshold(1.0);

它工作得很好,但我发现它提取了一些离群点,如下图所示。

我试图探测到一架带有腿的飞机,而这种方法似乎能在腿上找到一些点。是否有办法避免在PCL区域生长方法中使用例如密度阈值?在花了一些时间在文档和调整区域增长设置的值之后,我仍然想不出如何去做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-19 07:50:57

RegionGrowing没有考虑到“候选点”的距离。包含决策是基于正常的数据,而实际的候选结果是K最近邻查询。

因此,您可以选择减少NumberOfNeighbours参数。这是最简单的,它只能部分工作,因为它没有直接解决问题(点距离)。在您发布的示例中,您可能需要将其减少到大约6,这可能会导致分割的总体结果更糟,而且您可能在其他地方仍然存在异常值。

一个更好的解决方案是使用radius离群值删除作为后处理步骤来过滤从RegionGrowing获得的每个区域。

outliers.php

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56193516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档