1. 程式人生 > >PCL—雙邊濾波

PCL—雙邊濾波

PCL—雙邊濾波

序:本節介紹PCL裡的雙邊濾波,雙邊濾波主要作用是具有保邊的功能,即在濾波的過程中不會連帶邊界一起都平滑掉,這樣有利於計算準確的法線。這裡我們主要介紹其實現過程,演算法會在後續補充上。

1. 程式碼如下:

複製程式碼

void Filters::bilateralFilter(pcl::PCLPointCloud2::ConstPtr input, pcl::PCLPointCloud2& output,
    float sigma_s, float sigma_r)
{
    // Convert data to PointCloud<T>
    pcl::PointCloud<pcl::PointXYZ>::Ptr xyz (new
pcl::PointCloud<pcl::PointXYZ>); fromPCLPointCloud2 (*input, *xyz); // Apply the filter pcl::FastBilateralFilter<pcl::PointXYZ> fbf; fbf.setInputCloud (xyz); fbf.setSigmaS (sigma_s); fbf.setSigmaR (sigma_r); pcl::PointCloud<pcl::PointXYZ> xyz_filtered; fbf.filter (xyz_filtered);
// Convert data back pcl::PCLPointCloud2 output_xyz; toPCLPointCloud2 (xyz_filtered, output_xyz); pcl::concatenateFields (*input, output_xyz, output); }

複製程式碼

2. 執行結果

直接觀察執行的結果是很難區分出有什麼差別的,所以這裡我們分別計算了執行前後點雲的法線,可以通過法線的分佈清楚的分出效果來。

(1)採用預設引數濾波

(2)濾波前的法線分佈

(3)濾波後的法線分佈

 

轉載請註明:

http://www.cnblogs.com/pcl-lab/articles/3975879.html

標籤: bilateral filter, 雙邊濾波, normals 法線