法线估计实例详解~
1、法线估计类NormalEstimation的实际计算调用程序内部执行以下操作。
对点云P中的每个点p:
(1)得到p点的最近邻元素。
(2)计算p点的表面法线n。
(3)检查n的方向是否一致指向视点,如果不是则翻转。
#pragma warning(disable:4996)
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL);
VTK_MODULE_INIT(vtkInteractionStyle);
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/features/integral_image_normal.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/point_types.h>
#include <pcl/features/normal_3d.h>
int main()
{
//加载点云
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile("table_scene_lms400.pcd", *cloud);
//估计法线
pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne;
ne.setInputCloud(cloud);
//创建一个空的kdtree对象,并把它传递给法