如何避免曲面重建中的空洞填充?

How to avoid hole filling in surface reconstruction?

我正在使用泊松曲面重建算法从点重建三角网格曲面。然而,泊松将始终生成一个水密表面,它用插值填充所有孔。

对于一些由于数据缺失导致的小孔洞,这种孔洞填充是可取的。但是对于一些大洞,我不想填洞,只希望表面保持开放。

上图是我的想法,左图是带法线的点集,右图是重构曲面。我希望这个表面的顶部保持开放而不是当前的水密结果。

任何人都可以给我一些建议,我怎样才能在泊松曲面重建中保留这些大洞?或者有没有其他算法可以解决这个问题?

P.S. 根据对此 question 的公认答案,我理解表面重建算法可以分为显式算法和隐式算法。泊松是隐式的,显式的自然可以解决大洞问题。但由于我拥有的点数据大多稀疏且嘈杂,我更喜欢像泊松这样的隐式数据。

您的屏幕截图看起来可能正在使用基于 old implementation 的 MeshLab 实现。此实现无法 trim 表面。

然而,latest implementation 包含完全符合您要求的 SurfaceTrimmer。查看页面底部的示例,了解如何使用它。

要使用 SurfaceTrimmer 程序,您必须首先使用 SSDRecon 程序用 --density 重建网格表面,然后设置 trim 值将精确删除特定阈值以下的面。

下面是该程序在演示中的示例用法 eagle 数据

./SSDRecon --in eagle.points.ply --out eagle.screened.color.ply --depth 10 --density
./SurfaceTrimmer --in eagle.screened.color.ply --out eagle.screened.color.trimmed.ply --trim 7