贪婪投影三角化算法
主要方法:先将有向点云投影到某一局部二维坐标平面内,再在坐标平面内进行平面内的三角化,再根据平面内三位点的拓扑连接关系获得一个三角网格曲面模型。
主要原理:处理一系列可以使网格“生长扩大”的点(边缘点),延伸这些点直到所有符合几何正确性和拓扑正确性的点都被连上。该算法的优点是可以处理来自一个或者多个扫描仪扫描得到并且有多个连接处的散乱点云。但该算法也有一定的局限性,它更适用于采样点云来自于表面连续光滑的曲面并且点云密度变化比较均匀的情况。
主要代码:
pcl::PolygonMesh triangles;//创建多变形网格,用于存储结果
//设置GreedyProjectionTriangulation对象的参数
//第一个参数影响很大
gp3.setSearchRadius(15.0f); //设置连接点之间的最大距离(最大边长)用于确定k近邻的球半径【默认值 0】
gp3.setMu(5.0f); //设置最近邻距离的乘子,以得到每个点的最终搜索半径【默认值 0】
gp3.setMaximumNearestNeighbors(100); //设置搜索的最近邻点的最大数量
gp3.setMaximumSurfaceAngle(M_PI / 4); // 45 degrees(pi)最大平面角
gp3.setMinimumAngle(M_PI / 18); // 10 degrees 每个三角的最小角度
gp3.setMaximumAngle(2 * M_PI / 3); // 120 degrees 每个三角的最大角度
gp3.setNormalConsistency(false); //如果法向量一致,设置为true
//设置搜索方法和输入点云
gp3.setInputCloud(cloud_with_normals);
gp3.setSea