algorithm - 曲面重建中如何避免填孔?
问题描述
我正在使用泊松曲面重建算法从点重建三角网格表面。但是,Poisson 将始终生成一个不漏水的曲面,该曲面使用插值填充所有孔。
对于一些数据丢失导致的小空洞,这种空洞填充是可取的。但是对于一些大洞,我不想填洞,只想让表面保持开放。
上图是我的想法,左边是法线点集,右边是重构曲面。我希望这个表面的顶部保持开放,而不是当前的防水结果。
谁能给我一些建议,我怎样才能在泊松表面重建中保留这些大洞?或者有没有其他算法可以解决这个问题?
PS 根据这个问题的公认答案,我理解表面重建算法可以分为显式算法和隐式算法。Poisson 是隐式的,显式的自然可以处理大洞问题。但由于我拥有的点数据大多稀疏且嘈杂,我更喜欢像泊松这样的隐含数据。
解决方案
您的屏幕截图看起来可能正在使用基于旧实现的 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
推荐阅读
- android - 根据条件隐藏 Listview 行中的 textview
- python - Python Pandas 查找数据框中存在的多个列标题
- linux - makefile:在每个接收者中重新分配变量以存储步骤名称
- android - 如何在 Android Oreo + 中以编程方式获取 WiFi 热点状态
- c++ - QtCreator 调试器:进入 std::function
- sql - 更大的主表甚至更大的权限表的有效连接技术
- ios - 如何在堆栈中将超过 1 个视图控制器委托给视图控制器?
- ios - Apple Pay In App Provisioning:LinkAndProvisionResponse API
- ms-access - 如何从多行中查找帖子的分手日期
- python - 在列表列表中出现错误:TypeError:'int' object is not iterable