Оценка нормалей точек в облаке точек с помощью PCL работает хорошо, но я получаю странное изменение ориентации в определенной части облака (см. Снимок экрана, нормали - желтые линии). Конечно, я могу перебирать массив нормалей и исправлять его, но, может быть, есть лучший способ сделать это напрямую с помощью PCL, на лету? Использование нормалей, ориентированных на точку обзора, не вариант, потому что поверхность цилиндрическая, поэтому ожидается, что нормали будут указывать во всех направлениях вокруг этой оси в конце.
Вот код для нормальной оценки. В основном фрагмент из официального руководства:
pcl::NormalEstimationOMP<pcl::PointXYZ, pcl::Normal> n;
pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);
tree->setInputCloud(cloud_);
n.setInputCloud(cloud_);
n.setSearchMethod(tree);
n.setKSearch(10);
n.compute(*normals);