首页 > 解决方案 > 曲面重建中如何避免填孔?

问题描述

我正在使用泊松曲面重建算法从点重建三角网格表面。但是,Poisson 将始终生成一个不漏水的曲面,该曲面使用插值填充所有孔。

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

演示

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

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

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

标签: algorithmgraphicsgeometrymesh

解决方案


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

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

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

下面是该程序在演示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

推荐阅读