我正在使用泊松曲面重建算法从点重建三角网格表面。但是,泊松将始终生成水密表面,并用插值法填充所有孔。
对于一些由于数据丢失而导致的小孔,这种孔填充是可取的。但是对于一些大孔,我不希望填充孔,而只是希望表面保持开放。
上图显示了我的想法,左边一个是具有法线的点集,右边一个是重建的表面。我希望此表面的顶部保持开放,而不是当前的水密结果。
谁能给我一些建议,我该如何在泊松曲面重建中保留这些大漏洞?还是有其他算法可以解决这个问题?
PS 基于对此question的公认答案,我了解表面重构算法可以分为显式算法和隐式算法。泊松是隐性的,而显性的自然可以解决大孔问题。但是,由于我拥有的点数据大部分都是稀疏且嘈杂的,因此我更喜欢像泊松这样的隐式数据。
答案 0 :(得分:2)
您的屏幕截图看起来像您正在使用基于old implementation的MeshLab的实现。此实现无法修剪表面。
但是latest implementation包含的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