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

前言:對pcl點雲處理方法進行整理,方便後續查找使用

一、點雲庫的濾波算法

直通濾波器:對xy軸進行限定,粗暴去噪

pcl::PassThrough<pcl::PointXYZ> pass;
pass.setInputCloud (cloud);
pass.setFilterFieldName ("z");
pass.setFilterLimits (0.0, 1.0);
//pass.setFilterLimitsNegative (true);
pass.filter (*cloud_filtered);

統計濾波器:考慮到噪聲常是離羣點。計算每個點到其最近的k個點平均距離。則點雲中所有點的距離應構成高斯分佈。給定均值與方差,可剔除分佈之外的點

  pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
  sor.setInputCloud (cloud);
  sor.setMeanK (50);
  sor.setStddevMulThresh (1.0);
  sor.filter (*cloud_filtered);

體素柵格濾波器:把點雲分成若干立體空間,以空間中心的點代表體素的所有點。不破壞點雲整體結構。

  pcl::VoxelGrid<pcl::PCLPointCloud2> sor;
  sor.setInputCloud (cloud);
  sor.setLeafSize (0.01f, 0.01f, 0.01f);
  sor.filter (*cloud_filtered);

 半徑濾波器:以某點爲中心畫一個圓計算落在該圓中點的數量,當數量大於給定值時,則保留該點,數量小於給定值則剔除該點。此算法運行速度快,依序迭代留下的點一定是最密集的,但是圓的半徑和圓內點的數目都需要人工指定。

    pcl::RadiusOutlierRemoval<pcl::PointXYZ> outrem;
    outrem.setInputCloud(cloud);
    outrem.setRadiusSearch(0.8);
    outrem.setMinNeighborsInRadius (2);
    // apply filter
    outrem.filter (*cloud_filtered);

 

 

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