PCL平面分割给出非常奇怪的系数

时间:2018-09-28 14:05:05

标签: c++ point-cloud-library point-clouds

我正在经历来自SAC平面分割的非常奇怪的输出 以前为我工作。

我有一个几乎完全是平面的地形点云,想要 平面系数。 尽管非常规则,所得的系数还是非常随机的 点云的结构。更令人费解的是,我接下来要做的是 另一个点云上的相同分割(激光扫描),更多 稀疏,效果很好,反复。

在图像上,您可以看到有问题的PC(暗红色,以矩形裁剪) ,其检测到的像素(亮红色条)和稀疏的激光雷达扫描 灰色的点云。每次灰点云的平面系数都能很好地检测到,几乎是水平的。

我看过这个问题: SACSegmentation detecting odd plane model

但是没有一个建设性的答案,并且正如您所看到的,就我而言,稀疏的激光雷达点云表现得很好,尽管它的起源也很远(点云在同一参考系中)。 我尝试将这个问题发送到PCL用户的邮件列表中,但是他们目前在注册时遇到了一些麻烦。

打印到控制台的平面系数为: 地图平面:0.129365、0.988998,-0.0717494,-46.6275, 扫描平面:-0.00558903,-0.131864、0.991252,-469.395,

An example image

生成此代码的代码如下,不进行服务转换:

pcl::SACSegmentationFromNormals<pcl::PointNormal,pcl::PointNormal> seg;

 seg.setModelType (pcl::SACMODEL_NORMAL_PLANE);
 seg.setNormalDistanceWeight (0.1);
 seg.setMethodType (pcl::SAC_RANSAC);
 seg.setMaxIterations (200);
 seg.setDistanceThreshold (max_dist_plane); // equal to 0.2
 seg.setOptimizeCoefficients (true);

seg.setInputCloud(map_norm_near);
 seg.setInputNormals(map_norm_near);
seg.segment(*inliers_plane, *coeff_plane_map);

std::cout « "Map plane: " « ap « "," « bp « "," « cp « "," « dp « "," «
std::endl;

seg.setInputCloud(scan_norm_near);
 seg.setInputNormals(scan_norm_near);
 seg.segment(*inliers_plane, *coeff_plane_scan);

 std::cout « "Scan plane: " « ap2 « "," « bp2 « "," « cp2 « "," « dp2 « ","
« std::endl;

我正在循环中在ROS节点内运行代码。细分对象 在每次迭代时都会重新初始化。我在Ubuntu 16.04下使用PCL 1.7.2。 我试过从法线和常规分割中使用SAC分割, 设置优化系数的开和关,设置轴和epsangle,无 明显的差异。激光雷达扫描很好地分割了,地图平面 是疯子。

有人可以解释这是什么原因吗?

0 个答案:

没有答案