PCL을 사용하여 점 구름의 법선을 계산합니다. Meshlab을 사용하면 모든 법선이 외부에서 내부까지 있지만 법선이 올바른 것입니다. 모두 반전하면 법칙이 올바른 것입니다.PCL은 일부 부품에서 잘못된 법선 방향을 추정합니다.
그러나 PCL을 사용하면 왼쪽 그림과 같이 일부 법선의 방향이 잘못됩니다.
은 PCL에 의해 추정 된 정상으로, 내가 올바른 결과를 얻을 수 없다, 더 의미, meshlab 및 PCL를 사용하여 아래의 재구성 표면을 확인하십시오.내 코드에 따라 내 샘플 .ply 데이터가 here, 그리고 내 모델은 여기에서 볼 수 있습니다, 내가 반경, 이웃과 중심 위치의 수를 변경하는 시도로하지만,이 문제를 해결 coundn't.
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;
아마도 다른 매개 변수를 조정해야합니까? 또는 더 나은 방법으로 전환 하시겠습니까? 관심을 가져 주셔서 감사합니다!
예, 관측점이 문제이지만 내 클라우드에 대한 올바른 시점을 찾을 수 없습니다. 두 번째 제안은 내 생각에는 효과가 있지만 너무 많은 작업이 필요하므로 마침내 법선을 직접 계산하기로 결정했습니다. 귀하의 제안에 감사드립니다! –