在 PCL 中 运行 泊松重建后移除错误的表面

Removing the wrong surface after running Poisson Reconstruction in PCL

我遇到了类似 的问题。但是我在PCL中使用了Poisson Reconstruction算法而不是MeshLab来重建一个盒子。我得到了一个带有一些扩展表面的网格,如图所示 image.I 现在想删除扩展表面。

我不明白上面问题的答案,也不想修改PCL的源代码。 还有其他方法可以解决这个问题吗? PCL我电脑的版本是1.10.

如有任何建议,我们将不胜感激。

正如您在 link 中提到的那样,这个伪影是 Neumann 边界条件的结果。 PCL 但是不允许您指定边界条件。

原始 PossionRecon library(PCL 实现基于此)确实允许您指定边界条件 - 并且有可用的二进制可执行文件。上面link还包含了所有命令行参数的详细说明。

但是请注意,Dirichlet 边界条件会创建一个水密表面,因此您仍然会在缺少数据的地方拥有“想象中”的面。

“想象的”表面的特点是顶点密度低 - 可用于移除这些面。 PossionRecon 还提供了一个 SurfaceTrimmer 可执行文件(参见上面的 link),它可以做到这一点。它要求 PLY 具有密度 属性,您可以使用带有 --density 选项的 PossionRecon 工具获得。

或者,您可以用面的面积来近似顶点的密度 - 并编写自己的代码来删除面积较大的面。