PCL入門《五》使用VOXEL稀疏點雲

2021-08-14 05:45:23 字數 1291 閱讀 2900

在使用pcl的處理點雲時,很多時候我們不需要有太過高的解析度,因為點雲過多會造成計算變慢,並且更加消耗計算資源,所以我們需要把點雲變稀,voxel就是乙個很好的方法。

voxel就是三維的pixel,也就是把點雲畫出網格,然後每個網格內保留乙個點就可以了。網格的大小可以自己定義,這就相當於乙個downsample(下取樣)

大概的樣子就是這樣,我顯示出了所有的點,如果某乙個格仔內沒有點就可以不顯示了,你也可以把格仔調的很密,顏色也可以保留。

話不多說,直接上**:

首先必要的引用的是

#include #include #include
其中特殊的也就是第三個了,前兩個要用pcl專案的話基本上都會引用了。第三個引用了就可以使用pcl自帶的voxel的功能了,不過如果不太信任pcl的篩選方法也可以自己寫乙個,voxel的原理很簡單,就是遍歷塞進不同的格仔裡,實現起來也就不怎麼難了,我們這裡只講怎麼使用pcl的方法,畢竟這樣實現起來最快。

接下來的核心**:

pcl::voxelgridsor;

sor.setinputcloud (cloud);

sor.setleafsize (0.01f, 0.01f, 0.01f);

sor.filter (*cloud_filtered);

pcl的一貫規則,你要使用voxel功能,首先需要建立乙個voxel類的乙個物件,也就是sor

然後輸入需要過濾的點雲,也就是cloud

然後設定一下葉子大小,也就是resolution(解析度),也就是這個格仔的最小間距,設定的越小則越密集,保留的點越多。三個引數分別是xyz

然後給乙個輸出的點雲用來接收過濾的結果,最後那個cloud_filtered就是變稀疏後的cloud了,你可以看看,很有可能點數減少了十倍,但是形狀還保留,基本上沒什麼太大的影響,不過如果你要做精確的體積估計的話這個肯定是不可以的,因為邊緣肯定會變短,但是不那麼精確,知道大致形狀,知道中心就可以的需求就可以放心大膽的使用這個功能了。

這個是官方給出的效果圖,左右是過濾前後的對比,可以看到右邊的圖我們依然能夠清晰的看出來是一張桌子上面放了個杯子,但是點明顯變稀疏了,如果你覺得這種效果能夠滿足你的要求且不會破壞你的結果那麼就可以嘗試讀入點雲就用這個過濾一遍,點雲少了後續的處理速度會快的很多。

PCL 學習筆記 使用 PCL 來顯示點雲

pcl 裡面使用的一些小技巧,可惜我現在才知道。記下來 方便以後檢視吧。當你得到了一些點雲之後怎麼去快速直觀的看到 點雲的效果呢?有一些比較好的小的技巧。1.顯示乙個點雲的方法 pcl viewer cloud cluster 0.pcd 2.多個點雲在一起顯示的方法 pcl viewer mult...

PCL 使用MLS對點雲上取樣

二 實現 三 結果展示 上取樣 上取樣是一種表面重建方法,當你有比你想象的要少的點雲資料時,上取樣可以幫你恢復原有的表面 s 通過內 目前擁有的點雲資料,這是乙個複雜的猜想假設的過程。所以構建的結果不會百分之一百準確,但有時它是一種可選擇的方案。所以,在你的點云云進行下取樣時,一定要儲存乙份原始資料...

ROS入門 PCL雷射雷達點雲處理(2)待更新

直通濾波器 對xy軸進行限定,粗暴去噪 pcl passthroughpass pass.setinputcloud cloud pass.setfilterfieldname z pass.setfilterlimits 0.0,1.0 true pass.filter cloud filtere...