我需要使用基于径向基函数的Marching Cubes,所以我查找了在PCL中实现的算法。 其实我使用PCL v1.6所以功能是:
pcl::MarchingCubesRBF
问题在于它不起作用,也就是说它不会创建任何三角形:有时输出是“#3”三角形创建的,有时会运行阻止我的机器。 无论如何,我的实现是:
pcl::MarchingCubesRBF<pcl::PointNormal> mc;
pcl::PolygonMesh::Ptr triangles(new pcl::PolygonMesh);
mc.setInputCloud (cloud_with_normals);
mc.setSearchMethod (tree);
mc.reconstruct (*triangles);
我尝试使用不同的文件,例如输入,但它们都不起作用。其中之一是https://github.com/FabiApfelkern/cloudfinish/blob/master/cat.pcd
我发现在pcl中有一个关于实现的错误:http://dev.pointclouds.org/issues/768 但是,我不明白它是否在pcl v1.6中得到解决。让我知道如果有可能我该如何解决。
我在VS2010中使用C ++
答案 0 :(得分:0)
我遇到了同样的问题,并通过设置网格分辨率对其进行了修复:
mc.setGridResolution (100, 100, 100);
mc.reconstruct (*triangles);
网格分辨率是在x,y和z方向上使用的体素的数量。因此,如果将其设置为1, 1, 1
,将只有一个体素-因此不能很好地表示点云。分辨率越高,成本越高,但也会提高最终网格的质量。