pcl :: MarchingCubesRBF不输出网格

时间:2014-07-28 16:39:42

标签: c++ point-cloud-library geometry-surface 3d-reconstruction marching-cubes

我需要使用基于径向基函数的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 ++

1 个答案:

答案 0 :(得分:0)

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

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

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