使用积分图(integral image)进行法线估计,这种方法仅适用于有序点云图,无序点云图需用其他方法。
#include<iostream>
#include<pcl/io/pcd_io.h>
#include<pcl/visualization/cloud_viewer.h>
#include<pcl/features/integral_image_normal.h>
int main()
{//该方法只适用于有序点云
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile("table_scene_mug_stereo_textured.pcd", *cloud);
pcl::visualization::CloudViewer viewer_cloud("pcl viewer");
viewer_cloud.showCloud(cloud);
system("pause");
// estimate normals
pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
pcl::IntegralImageNormalEstimation<pcl::PointXYZ, pcl::Normal> ne;
ne.setNormalEstimationMethod(ne.AVERAGE_3D_GRADIENT);//设置估计方法
//法线估计方法
//COVARIANCE_MATRIX模式从具体某个点的局部邻域的协方差矩阵创建9个积分图,来计算这个点的法线
//AVERAGE_3D_GRADIENT模式创建了6个积分图来计算水平和垂直方向的平滑后的三维梯度,并使