利用PCL處理Realsense點雲數據-使用VoxelGrid濾波器對點雲進行下采樣

在上一篇我們利用realsense_grabber採集了點雲數據,但是運行一下就會發現,直接使用的話根本達不到實時的要求,也就是個1HZ的刷新率,所以我們需要對它進行下采樣,減少點雲個數,從而提高處理速度。這裏我們使用的是VoxelGrid類。

   使用體素化網格方法實現下采樣,即減少點的數量,減少點雲數據,並同時保持點雲的形狀特徵,在提高配準、曲面重建、形狀識別等算法速度中非常實用。PCL實現的VoxelGrid類通過輸入的點雲數據創建一個三維體素柵格(可把體素柵格想象爲微小的空間三維立方體的集合),然後在每個體素(即,三維立方體)內,用體素中所有點的重心來近似顯示體素中其他點,這樣該體素就內所有點就用一個重心點最終表示,對於所有體素處理後得到過濾後的點雲。這種方法比用體素中心來逼近的方法更慢,但它對於採樣點對應曲面的表示更爲準確。通過使用這種方法可以保留原始點雲的形狀等邊界信息。

/ 創建濾波器對象  
    pcl::VoxelGrid<pcl::PointXYZI> sor;  
    sor.setInputCloud(cloud);  
    sor.setLeafSize(0.01f, 0.01f, 0.01f);  
    sor.filter(*cloud_filtered);  
    std::cerr << "PointCloud after filtering: " << cloud_filtered->width * cloud_filtered->height  
        << " data points (" << pcl::getFieldsList(*cloud_filtered) << ").";  

顯示之後點雲數據至少下降了十倍,然而邊緣信息還是很好的。

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