如何在 pcl 泊松曲面重建中将边界条件指定为 DIRICHLET?

问题描述 投票:0回答:2

我正在做表面重建的工作。但我遇到了一个问题:

我想在泊松中使用DIRICHLET边界条件,但pcl的泊松似乎不支持指定边界条件,它总是使用NEUMANN边界条件。

所以我想知道如何在 pcl poisson 中使用 DIRICHLET 边界条件。

BTW:我的目标是计算容器的体积。但我的点云不是无懈可击的,所以我需要算法来“成像”孔的表面。 CloudCompare支持指定边界条件,并且效果很好。但在pcl中,NEUMANN边界条件的效果很糟糕。

  • pcl poisson(NEUMANN 条件)生成的网格如下:

  • cloudcompare生成的网格(指定DIRICHLET条件)如下:

point-cloud-library poisson
2个回答
1
投票

原始的 PoissonRecon 代码位于 此 github 存储库。您还可以找到窗口命令行的预构建可执行文件(

--bType
设置条件)。从版本 9.0 开始,这在命令行可执行文件中可用。

[--bType ] 该整数指定边界类型 有限元。有效值为: 1:自由边界约束 2: Dirichlet边界约束3:Neumann边界约束 该参数的默认值为 3 (Neumann)。

CloudCompare 使用版本 7

PCL(在本文发布时为 1.12.0)使用 PoissonRecon版本 4。

Open3D(在本文发布时为 0.14.1)包含版本 12 包装器,它支持两种边界条件。然而,使用 NEUMANN硬编码的。您应该能够轻松更改枚举并编译使用 DIRICHLET 条件的 Open3D 版本(我自己从未尝试过)。


或者(如果您无法使用原始控制台应用程序或重新编译 Open3D),您可以尝试使用已有的内容。

  1. 您可以尝试根据人脸的面积(较小的密度 - 较大的三角形面积)来识别“假想的人脸”并将其删除。 原始存储库提供了一个SurfaceTrimmer工具(另一个控制台项目),它可以做到这一点(基于密度值)。
  2. 使用某种孔闭合方法或凸包来闭合剩余的开放网格。

0
投票

你能告诉我如何在 python 中使用它,也许与 pymeshlab 一起使用,因为它们也有一个效果很好的 PSR 过滤器,但我想将其限制在边界内,因为衬衫和袖子的整体也被填满了 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.