车载点云道路部件——路灯提取尝试1

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-03 03:43:44

1.渐进形态学滤波

#include <pcl/segmentation/progressive_morphological_filter.h>

重要参数:

 // 创建形态学滤波器对象
    pcl::ProgressiveMorphologicalFilter<pcl::PointXYZ> pmf;
    pmf.setInputCloud(cloud);

    // 设置过滤点最大的窗口尺寸
    pmf.setMaxWindowSize(20);

    // 设置计算高度阈值的斜率值
    pmf.setSlope(1.0f);

    // 设置初始高度参数被认为是地面点
    pmf.setInitialDistance(0.5f);

    // 设置被认为是地面点的最大高度
    pmf.setMaxDistance(3.0f);
    pmf.extract(ground->indices);

 

2.体素滤波

#include <pcl/filters/voxel_grid.h>  //体素滤波相关

体素栅格滤波

    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filter(new pcl::PointCloud<pcl::PointXYZ>);

    pcl::VoxelGrid<pcl::PointXYZ> sor;

    sor.setInputCloud(cloud);

    sor.setLeafSize(0.3f, 0.3f, 0.3f);//体素大小设置为30*30*30cm

    sor.filter(*cloud_filter);

 

 

3.提取点云中的柱状物体

寻找最大最小的xy   根据网格大小 划分  投影   根据落在同一网格内的点云数量判断是否为潜在柱状物

计算z的最大最小高度    周围八个栅格  使用ransac算法 提取圆柱    但只能提取出两根  而且数据不连续  代码报错vector超限

 

4.欧式聚类

效率太低 不采取

 

5.目前的路灯提取方法:

渐进形态学滤波滤除地面;

目前分段处理,取出一部分车载点云,提取出非地面点object;

 

 

体素滤波,对非地面点作一次抽稀;

 

根据道路中心线和道路宽度,对非地面点作一次平面方向的直通滤波,滤除建筑物,只留下间断的行道树、路灯等交通设施;

沿Z方向将非地面点进行切分,我选择三等分,这里有最大的问题,实验数据路灯高于树木,因此在高处,路灯最为明晰,但是若路灯完全夹杂在树木中,则可能无法正确提取出路灯,选择高处的另一个原因是行道树在路灯高度主树干基本已经分叉,此时提取出的圆柱体大概率为路灯设施。若在切分的低处,提取出的圆柱既有路灯又有树干,效果不佳;

自动循环提取圆柱体,但是在提取出两个后,又出现vector超限问题;改用非循环提取,可以继续提取,不报错,理论上提取出4个路灯,实际提取出三个柱体,应该是参数的原因,导致第四个柱体未能提取,愁啊;

提取出各圆柱xy的范围,再去原始数据中提取出所有xy在该范围内的点,可以得到完整的路灯柱体,但路灯头是需要后续处理的;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 

 

 

 

 

    

 


 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!