我正在使用PCL计算点云的法线。在Meshlab中,法线如右图所示,尽管所有法线都是从外到内的,但在反转它们之后就会变得正确。
但是当我使用PCL时,一些法线的方向是错误的,如左图所示。 为了更好地理解,下面是使用Meshlab和PCL重构的表面,其法线由PCL估计,但我无法得到正确的结果。 {{link1:
}}
我的代码如下,我的样本.ply数据在{{link2:此处}},我的模型可以在此处找到。我已经尝试更改半径、邻居数和质心位置,但无法解决这个问题。
也许我应该调整一些其他参数?或者换用更好的方法?谢谢您的关注!
但是当我使用PCL时,一些法线的方向是错误的,如左图所示。 为了更好地理解,下面是使用Meshlab和PCL重构的表面,其法线由PCL估计,但我无法得到正确的结果。 {{link1:
![enter image description here](https://istack.dev59.com/Hrgt3.webp)
我的代码如下,我的样本.ply数据在{{link2:此处}},我的模型可以在此处找到。我已经尝试更改半径、邻居数和质心位置,但无法解决这个问题。
cout << "begin normal estimation" << endl;
NormalEstimationOMP<PointXYZ, Normal> ne;
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>());
ne.setSearchMethod(tree);
ne.setNumberOfThreads(8);
ne.setInputCloud(filtered);
ne.setKSearch(15);
ne.setRadiusSearch(5);
Eigen::Vector4f centroid;
compute3DCentroid(*filtered, centroid);
ne.setViewPoint(centroid[0], centroid[1], centroid[2]);
PointCloud<Normal>::Ptr cloud_normals (new PointCloud<Normal>());
ne.compute(*cloud_normals);
cout << "normal estimation complete" << endl;
也许我应该调整一些其他参数?或者换用更好的方法?谢谢您的关注!