車載點雲道路部件——路燈提取嘗試1

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在該範圍內的點,可以得到完整的路燈柱體,但路燈頭是需要後續處理的;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 

 

 

 

 

    

 


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章