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;
他のパラメータを調整する必要がありますか?またはより良い方法に切り替える?ご清聴ありがとうございました!
はい、視点が問題ですが、私のクラウドに正しい視点を見つけることができません。あなたの2番目の提案は私が思うように動作するはずですが、これを行うにはあまりにも多くの作業があるので、最終的に法線を自分で計算することにしました。提案ありがとう! –