前言
高斯平滑是点云滤波中常见的方法之一,这里将pcl高斯滤波的源码分析一下,加深对原理和代码的理解。
一、调用实例
#include <pcl/filters/convolution_3d.h>
if (cloud == nullptr) return false;
if (cloud->points.size() < 10) return false;
//Set up the Gaussian Kernel
pcl::filters::GaussianKernel<pcl::PointXYZ, pcl::PointXYZ>::Ptr kernel(new pcl::filters::GaussianKernel<pcl::PointXYZ, pcl::PointXYZ>);
(*kernel).setSigma(cigma);
(*kernel).setThresholdRelativeToSigma(4);
//Set up the KDTree
pcl::search::KdTree<pcl::PointXYZ>::Ptr kdtree(new pcl::search::KdTree<pcl::PointXYZ>);
(*kdtree).setInputCloud(cloud);
//Set up the Convolution Filter
pcl::filters::Convolution3D <pcl::PointXYZ, pcl::PointXYZ, pcl::filters::GaussianKernel<pcl::PointXYZ, pcl::PointXYZ> > convolution;
convolution.setKernel(*kernel);
convolution.setInputCloud(cloud);
convolution.setSearchMethod(kdtree);
convolution.setRadiusSearch(radius);
convolution.setNumberOfThreads(10);//important! Set Thread number for openMP
convolution