PCL函数库摘要——点云曲面重建

PCL库种surface模块是用来对三维扫描获取的原始点云进行曲面重建的,该模块包含实现点云重建的基础算法与数据结构。

1.Class pcl::ConcaveHull< PointInT >

类ConcaveHull实现了创建凹多边形的算法,该类的实现其实是Hull库实现的接口封装,ConcaveHull支持二维和三维点集。

#include <pcl/surface/concave_hull.h>
ConcaveHull () 
//  空构造函数
virtual  ~ConcaveHull () 
//  空析构函数
void  setSearchMethod (const KdTreePtr &tree) 
//  设置搜索时所用的搜索机制,参数tree指向搜索时所用的搜索对象,例如kd-tree、octree等对象。 
virtual void  setInputCloud (const PointCloudConstPtr &cloud) 
//  设置输入点云,参数cloud 为输入点云的共享指针引用。
virtual void  setIndices (const IndicesPtr &indices) 
//  为输入点云提供点云索引向量的指针。
virtual void  setIndices (const IndicesConstPtr &indices) 
//  为输入点云提供点云索引向量的指针,该索引为常数,不能更改。
virtual void  setIndices (const PointIndicesConstPtr &indices) 
//  为输入点云提供点云不变索引向量指针的指针。
virtual void  setIndices (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols) 
//  为输入点云中要用到的部分提供索引,该方法只能用于有序点云。参数row_start为行偏移、col_start为列偏移、nb_rows表示 row_start进行的行偏移数,nb_cols表示进行的列偏移数。
void  reconstruct (PointCloud &points, std::vector< pcl::Vertices > &polygons) 
//  计算所有输入点的凹多边形,参数 points存储最终产生的凹多边形上的顶点,参数 polygons存储一系列顶点集,每个顶点集构成的一个多边形,Vertices数据结构包含一组点的索引,索引是point中的点对应的索引。
void  reconstruct (PointCloud &output) 
//  计算所有输入点的凹多边形﹐输出的维数取决于输入的维数是二维或三维,输出结果为多边形顶点并存储在参数output中。
void  setAlpha (double alpha) 
//  设置alpha值,参数alpha限制voronoi图中多边形边长的长短(边长越短多边形越细分),alpha值是一个非零的正值,定义了voronoi图中多边形顶点到中心点的最大距离。
double  getAlpha () 
//  获取alpha值
void  setVoronoiCenters (PointCloudPtr voronoi_centers) 
//  设置参数voronoi_centers,如果设置,最终产生的凹多边形对应的voronoi图中的多边形的中心将被存储在参数voronoi_centers中。
void  setKeepInformation (bool value) 
//  设置参数keep_information,如果keep_information为真,凹多边形中的顶点就保留其他信息,如 RGB值、法线等。
int  getDim () const 
//  返回计算得到多边形的维数(二维或三维)。
int  getDimension () const 
//  返回计算得到多边形的维数(二维或三维)。
void  setDimension (int dimension) 
//  设置输入数据的维数(二维或三维),参数dimension为设置输入数据的维度﹐如果没有设置,输入数据的维度将自动根据输入点云设置。
void  getHullPointIndices (pcl::PointIndices &hull_point_indices) const 
//  检索凸包的输入点云的索引。

2.Class pcl::ConvexHull< PointInT >

类ConvexHull实现了创建凸多边形的算法,该类的实现其实是Hull库实现的接口封装,ConcvexHull支持二维和三维点集。

#include <pcl/surface/convex_hull.h>
ConvexHull () 
//  空构造函数
virtual  ~ConvexHull () 
//  空析构函数
void  reconstruct (PointCloud &points, std::vector< pcl::Vertices > &polygons) 
//  计算所有输入点的凹多边形,参数 points存储最终产生的凹多边形上的顶点,参数 polygons存储一系列顶点集,每个顶点集构成的一个多边形,Vertices数据结构包含一组点的索引,索引是point中的点对应的索引。
void  reconstruct (PointCloud &points) 
//  计算所有输入点的凹多边形﹐输出的维数取决于输入的维数是二维或三维,输出结果为多边形顶点并存储在参数output中。
void  setComputeAreaVolume (bool value) 
//  是否计算凸多边形的面积和体积,如果参数value为真,调用qhull库计算凸多边形的总面积和总体积。为节省计算资源,参数value缺省值为false。
double  getTotalArea () const 
//  获取凸包的总面积,如果 setComputeAreaVolume设置为真时,才会有有效输出。
double  getTotalVolume () const 
//  获取凸包的总体积,如果 setComputeAreaVolume设置为真时,才会有有效输出。
void  setDimension (int dimension) 
//  设置输入数据的维数(二维或三维),参数dimension为设置输入数据的维度﹐如果没有设置,输入数据的维度将自动根据输入点云设置。
int  getDimension () const 
//  返回计算得到多边形的维数(二维或三维)。
void  getHullPointIndices (pcl::PointIndices &hull_point_indices) const 
//  检索凸包的输入点云的索引。

3.Class pcl::EarClipping

类EarClipping实现了对多边形进行三角化的EarClipping算法,其输入为多边形网格模型数据,输出为三角化后的精细网格模型。

#include <pcl/surface/ear_clipping.h>
EarClipping () 
//  空构造函数
void  setInputMesh (const pcl::PolygonMeshConstPtr &input) 
//  设置输入网格模型数据,input指向多边形网格的指针引用。
pcl::PolygonMeshConstPtr  getInputMesh () const 
//  获取输入网格模型数据
void  process (pcl::PolygonMesh &output) 
//  三角化处理输入的多边形网格数据并将处理得到的精细曲面模型存储到out-

4.Class pcl::GreedyProjectionTriangulation< PointInT >

类GreedyProjectionTriangulation实现了将三维点投影到某一局部二维坐标平面的贪婪三角化算法,该算法需要点云平滑,并且密度变化连续。

#include <pcl/surface/gp3.h>
GreedyProjectionTriangulation () 
//  空构造函数
void  setMu (double mu) 
//  设置样本点到最近邻域距离的乘积系数mu来获得每个样本点的最大搜索距离,这样使得算法自适应点云密度的变化。
double  getMu () const 
//  获取样本点到最近邻域距离的乘积系数mu
void  setMaximumNearestNeighbors (int nnn) 
//  设置样本点最多可以搜索的邻域数目nnn。
int  getMaximumNearestNeighbors () const 
//  获取样本点最多可以搜索的邻域数目。
void  setSearchRadius (double radius) 
//  设置搜索半径radius,来确定三角化时k-邻近的球半径。
d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值