3

我需要使用基于径向基函数的行进立方体,所以我查找了在 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++

4

1 回答 1

0

我有同样的问题,我修复了它设置网格分辨率:

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

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

于 2020-03-05T14:55:02.010 回答