首页 > 解决方案 > 在 PCL 中运行泊松重建后去除错误的表面

问题描述

我有类似的问题link。但是我使用 PCL 中的泊松重建算法而不是 MeshLab 来重建一个盒子。我得到了一个带有一些扩展表面的网格,如图所示。我现在想移除扩展表面。 在此处输入图像描述

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

任何建议将不胜感激。

标签: c++windowspoint-cloud-library3d-reconstruction

解决方案


正如您链接中的答案所提到的,这个工件是 Neumann 边界条件的结果。但是,PCL 不允许您指定边界条件。

原始的PossionRecon 库(PCL 实现所基于)确实允许您指定边界条件 - 并且具有可用的二进制可执行文件。上面的链接还包括所有命令行参数的详细描述。

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

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

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


推荐阅读