pcl泊松曲面重建中如何指定边界条件为DIRICHLET?
How to specify boundary condition as DIRICHLET in pcl poisson surface reconstruction?
我正在做表面重建的工作。但是我遇到了一个问题:
我想在泊松中使用DIRICHLET边界条件,但是pcl的泊松似乎不支持指定边界条件,它总是使用NEUMANN边界条件。
所以我想知道如何在 pcl 泊松中使用 DIRICHLET 边界条件。
BTW:我的目标是计算容器的体积。但是我的点云不是无懈可击的,所以我需要 'image' 孔表面的算法。 CloudCompare 支持指定边界条件,效果很好。但是在pcl中,NEUMANN边界条件的效果很糟糕
pcl泊松(NEUMANN条件)生成的网格如下:
cloudcompare生成的mesh(指定DIRICHLET条件)如下图:
原来的PoissonRecon代码是at this github repository。您还可以找到 window 命令行的预构建可执行文件(--bType
以设置条件)。这在 9.0 版开始的命令行可执行文件中可用。
[--bType ] This integer specifies the boundary type for
the finite elements. Valid values are: 1: Free boundary constraints 2:
Dirichlet boundary constraints 3: Neumann boundary constraints The
default value for this parameter is 3 (Neumann).
CloudCompare uses version 7.
PCL(此时post的1.12.0)使用version 4 of PoissonRecon.
Open3D(当前为 0.14.1 post)包含一个 wrapper over version 12, which supports both boundary conditions. It is however hard-coded to use NEUMANN。您应该能够轻松更改枚举并编译使用 DIRICHLET 条件的 Open3D 版本(我自己从未尝试过)。
或者(如果您不能使用原始控制台应用程序或重新编译 Open3D),您可以尝试使用现有的。
- 您可以尝试根据人脸的面积(密度较小-三角形面积较大)来识别“假想人脸”并将其去除。 original repository 提供了一个 SurfaceTrimmer 工具(另一个控制台项目)来执行此操作(基于密度值)。
- 使用一些孔关闭方法或凸包关闭剩余的开放网格。
我正在做表面重建的工作。但是我遇到了一个问题:
我想在泊松中使用DIRICHLET边界条件,但是pcl的泊松似乎不支持指定边界条件,它总是使用NEUMANN边界条件。
所以我想知道如何在 pcl 泊松中使用 DIRICHLET 边界条件。
BTW:我的目标是计算容器的体积。但是我的点云不是无懈可击的,所以我需要 'image' 孔表面的算法。 CloudCompare 支持指定边界条件,效果很好。但是在pcl中,NEUMANN边界条件的效果很糟糕
pcl泊松(NEUMANN条件)生成的网格如下:
cloudcompare生成的mesh(指定DIRICHLET条件)如下图:
原来的PoissonRecon代码是at this github repository。您还可以找到 window 命令行的预构建可执行文件(--bType
以设置条件)。这在 9.0 版开始的命令行可执行文件中可用。
[--bType ] This integer specifies the boundary type for the finite elements. Valid values are: 1: Free boundary constraints 2: Dirichlet boundary constraints 3: Neumann boundary constraints The default value for this parameter is 3 (Neumann).
CloudCompare uses version 7.
PCL(此时post的1.12.0)使用version 4 of PoissonRecon.
Open3D(当前为 0.14.1 post)包含一个 wrapper over version 12, which supports both boundary conditions. It is however hard-coded to use NEUMANN。您应该能够轻松更改枚举并编译使用 DIRICHLET 条件的 Open3D 版本(我自己从未尝试过)。
或者(如果您不能使用原始控制台应用程序或重新编译 Open3D),您可以尝试使用现有的。
- 您可以尝试根据人脸的面积(密度较小-三角形面积较大)来识别“假想人脸”并将其去除。 original repository 提供了一个 SurfaceTrimmer 工具(另一个控制台项目)来执行此操作(基于密度值)。
- 使用一些孔关闭方法或凸包关闭剩余的开放网格。