點雲 PCL點雲濾波與實現

2021-10-25 09:36:01 字數 2391 閱讀 3500

目錄

1.直通濾波器(passthrough)

2.條件濾波(conditional_removal)

3.球半徑濾波器(radiusoutlinerremoval)

4.統計濾波器(statisticaloutlierremoval)

5.體素降取樣(voxelgrid)

6.均勻取樣(uniform_sampling)

#include #include #include #include #include pcl::passthroughpass;//建立濾波物件

pass.setinputcloud(cloud_ptr);//輸入點雲

pass.setfilterfieldname("z");//設定濾波欄位的名字為z軸方向

pass.setfilterlimits(0.0,1.0);//設定濾波範圍

pass.setfilterlimitsnegative(true);//設定濾波範圍是否保留

pass.filter(*cloud_filtered_ptr);//執行濾波

如果使用高解析度相機等裝置對點雲進行採集,往往點雲會較為密集。過多的點雲數量會對後續分割工作帶來困難。體素格濾波器可以達到向下取樣同時不破壞點雲本身幾何結構的功能。點雲幾何結構不僅是巨集觀的幾何外形,也包括其微觀的排列方式,比如橫向相似的尺寸,縱向相同的距離。隨機下取樣雖然效率比體素濾波器高,但會破壞點雲微觀結構.

使用體素化網格方法實現下取樣,即減少點的數量並同時儲存點雲的形狀特徵,在提高配準,曲面重建,形狀識別等演算法速度中非常實用,pcl是實現的voxelgrid類通過輸入的點雲資料建立乙個三維體素柵格,容納後每個體素內用體素中所有點的重心來近似顯示體素中其他點,這樣該體素內所有點都用乙個重心點最終表示,對於所有體素處理後得到的過濾後的點雲,這種方法比用體素中心(注意中心和重心)逼近的方法更慢,但是對於取樣點對應曲面的表示更為準確

// 建立濾波器物件 create the filtering object

pcl::voxelgridvg;

vg.setinputcloud (cloud2_ptr);//設定輸入點雲

vg.setleafsize(0.01f, 0.01f, 0.01f);// 體素塊大小 1cm

均勻取樣:這個類基本上是相同的,但它輸出的點雲索引是選擇的關鍵點,是在計算描述子的常見方式。原理同體素格 (正方體立體空間內 保留乙個點(重心點))而 均勻取樣:半徑求體內 保留乙個點(重心點)

PCL點雲直通濾波

對於在空間分布有一定空間特徵的點雲資料,比如使用線結構光掃瞄的方式採集點雲,沿z向分布較廣,但x,y向的分布處於有限範圍內。此時可使用直通濾波器,確定點雲在x或y方向上的範圍,可較快剪除離群點,達到第一步粗處理的目的。include include include int main int argc...

PCL點雲濾波函式

如果使用線結構光掃瞄的方式採集點雲,必然物體沿z向分布較廣,但x,y向的分布處於有限範圍內。此時可使用直通濾波器,確定點雲在x或y方向上的範圍,可較快剪除離群點,達到第一步粗處理的目的。pcl passthroughpass pass.setinputcloud cloud pass.setfilt...

PCL庫的點雲濾波小結

create the filtering object pcl passthroughpass pass.setinputcloud cloud pass.setfilterfieldname z pass.setfilterlimits 0.0,1.0 pass.filter cloud filt...