我需要使用基于径向基函数的Marching Cubes,因此我查找了在PCL中实现的算法。
实际上,我正在使用PCL v1.6,因此该功能是:

    pcl::MarchingCubesRBF

问题是它不起作用,即不创建任何三角形:有时输出为“已创建0个三角形”,有时运行会阻塞我的机器。
无论如何,我的实现是:
    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++

最佳答案

我遇到了同样的问题,并通过设置网格分辨率对其进行了修复:

mc.setGridResolution (100, 100, 100);
mc.reconstruct (*triangles);

网格分辨率是在x,y和z方向上使用的体素的数量。因此,如果将其设置为1, 1, 1,将只有一个体素-因此不能很好地表示点云。分辨率越高,将越昂贵,但同时也提高了所得网格的质量。

关于c++ - pcl::MarchingCubesRBF不输出网格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24999991/

10-12 20:52