PCL函数库摘要——点云滤波

1.Class pcl::ApproximateVoxelGrid< PointT >

类ApproximateVoxelGrid根据给定的点云形成三维体素栅格,并利用所有体素的中心点近似体素中包含的点集,这样完成下采样得到滤波结果。该类比较适合对海量点云数据在处理前进行数据压缩,特别是在特征提取等处理中选择合适的体素大小等尺度相关参数,可以很好地提高算法的效率。

#include <pcl/filters/approximate_voxel_grid.h>

ApproximateVoxelGrid () 
//  空构造函数
ApproximateVoxelGrid (const ApproximateVoxelGrid &src) 
//  复制构造函数
~ApproximateVoxelGrid () 
//  析构函数
ApproximateVoxelGrid &  operator= (const ApproximateVoxelGrid &src) 
//  定义运算发重载函数
void  setLeafSize (const Eigen::Vector3f &leaf_size) 
//  设置体素栅格叶大小,向量参数leaf_size是体素栅格叶大小参数,每个元素分别表示体素在XYZ方向上的尺寸。
void  setLeafSize (float lx, float ly, float lz) 
//  同上,lx、ly,lz分别设置体素在XYZ方向上的尺寸。
Eigen::Vector3f  getLeafSize () const 
//  获得设置体素栅格叶大小参数。
void  setDownsampleAllData (bool downsample) 
//  设置是否对全部字段进行下采样,不同点类型包含的字段数量不同,在进行下采样时,大多是对空间XYZ进行下采样,有些字段在下采样时也有意义,例如颜色、强度等,若需要对全部字段进行下采样则设置为True,仅对XYZ字段下采样则设置为False。
bool  getDownsampleAllData () const 
//  获取内部下采样参数的状态(如果需要对所有字段进行下采样,则为true;如果仅为XYZ,则为false)。更多.。

2.Class pcl::BilateralFilter< PointT >

类 BilateralFilter是对双边滤波算法在点云上的实现,该类的实现利用的并非XYZ字段的数据进行,而是利用强度数据字段进行双边滤波算法的实现,所以在使用该类时点云的类型中字段必须有强度字段,否则无法进行双边滤波处理,详细算法信息请参考C. Tomasi and R. Manduchi的文章Bilateral Filtering for Gray andColor Images 。

#include <pcl/filters/bilateral.h>
BilateralFilter () 
//  构造函数
void  applyFilter (PointCloud &output) 
//  对输入数据进行滤波并储存结果到输出output。
double  computePointWeight (const int pid, const std::vector< int > &indices, const std::vector< float > &distances) 
//  对一个指定单点计算平均强度:输人要计算的点的索引 pid,最近邻近点索引集合indices 和到最近邻近点距离集合distances,输出对该点计算出的平均强度。
void  setHalfSize (const double sigma_s) 
//  设置高斯双边滤波的窗口的一半大小,其中,sigma_s设为Gaussian双边滤波窗口大小的一半。
double  getHalfSize () const 
//   获得高斯双边滤波的窗口的一半大小参数。
void  setStdDev (const double sigma_r) 
//  设置标准差参数为sigma_r。
double  getStdDev () const 
//  获得标准差参数为sigma_r。
void  setSearchMethod (const KdTreePtr &tree) 
//  提供指向搜索对象的指针。

3.Class pcl::BoxClipper3D< PointT >

类BoxClipper3D实现用一个以原点为中心、XYZ各个方向尺寸为2、经过用户指定仿射变换的立方体进行空间裁剪,通过设置一个仿射变换矩阵先对立方体进行变换处理,之后输出仿射变换后落在该立方体内的点集。

#include <pcl/filters/box_clipper3D.h>
BoxClipper3D (const Eigen::Affine3f &transformation) 
//  利用仿射变换的矩阵transformation来构造滤波对象,最终输出点云为落在通过仿射变换矩阵变换后的立方体内的点集,立方体默认为以原点为中心.XYZ方向.尺度为2的立方体。
  BoxClipper3D (const Eigen::Vector3f &rodrigues, const Eigen::Vector3f &translation, const Eigen::Vector3f &box_size) 
//  功能同上,利用三个向量构造滤波对象,其中rodrigues用来指定变换的立方体的姿态,translation用来指定变换立方体的位置,box_size用来指定变换立方体各个方向的缩放系数,最终由三个向量指定-一个完整的放射变换矩阵。
void  setTransformation (const Eigen::Affine3f &transformation) 
//  设置仿射变换矩阵transformation。
void  setTransformation (const Eigen::Vector3f &rodrigues, const Eigen::Vector3f &translation, const Eigen::Vector3f &box_size) 
//  通过三个向量设置仿射变换,参数同上。
virtual  ~BoxClipper3D () throw () 
//  析构函数
virtual bool  clipPoint3D (const PointT &point) const 
//  裁剪掉一个单点point的接口:如果点被裁剪掉则返回true,点不在裁剪空间则返回false.
virtual bool  clipLineSegment3D (PointT &from, PointT &to) const 
//  通过输入线段起始点from和终点to,裁剪掉一.条线段的接口:若线段被裁剪掉则返回true,若线段在剪贴空间外则返回false.
virtual void  clipPlanarPolygon3D (std::vector< PointT, Eigen::aligned_allocator< PointT > > &polygon) const 
//  通过一个有序点列表,提供裁剪一个平面多边形的接口。其中,polygon是指定的任何方向(ccw or cw).上的多边形,注意有序点,才能保证两个相邻的点定义多边形的边界。  
virtual void  clipPlanarPolygon3D (const std::vector< PointT, Eigen::aligned_allocator< PointT > > &polygon, std::vector< PointT, Eigen::aligned_allocator< PointT > > &clipped_polygon) const 
//  通过一个有序点列表,提供裁剪一个平面多边形的接口:输入多边形polygon,输出裁剪后多边形clipped_ polygon。  
virtual void  clipPointCloud3D (const pcl::PointCloud< PointT > &cloud_in, std::vector< int > &clipped, const std::vector< int > &indices=std::vector< int >()) const 
//  裁剪点云的接口
virtual Clipper3D< PointT > *  clone () const 
//  使用其参数克隆基础剪贴器的多态方法。

4.Class pcl::Clipper3D< PointT >

类Clipper3D是3D空间裁剪对象的基类。

#include <pcl/filters/clipper3D.h>
virtual  ~Clipper3D () throw () 
//  虚拟析构函数  
virtual bool  clipPoint3D (const PointT &point) const =0 
//  裁剪掉一个单点point的接口:如果点被裁剪掉则返回true,点不在裁剪空间则返回false.
virtual bool  clipLineSegment3D (PointT &pt1, PointT &pt2) const =0 
//  通过输入线段起始点pt1和终点pt2,裁剪掉一.条线段的接口:若线段被裁剪掉则返回true,若线段在剪贴空间外则返回false.
virtual void  clipPlanarPolygon3D (std::vector< PointT, Eigen::aligned_
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值