-2

我在 N x 3 维的数组大小中有 x,y,z 3D 点。由于它们是分散的数据点,我需要匹配到等间距的网格数据。Matlab 中的实现使用了 TriScatteredInterp,如链接所示。我需要在 C++ 中实现它并绘制数据并保存为 png 文件。所以我搜索并发现我应该在PCL库中实现。由于我不熟悉 PCL,如何使用 PCL 解决该问题?我可以有任何示例程序吗?谢谢

4

2 回答 2

1

我不了解您对等间距网格数据的确切需求。在查看 matlab 函数时,我相信您想要执行以下操作:

1)对分散的数据点进行表面重建
在PCL中,您应该能够根据示例执行此操作: Greedy Triangulation tutorial

2)在查看器中显示表面
这一步可以通过使用VTK查看器来实现。一个示例显示在: VTK 网格查看

3) 将查看器的图像保存为 PNG 文件。
最后一步也可以使用 VTKviewer 来实现。可以找到一个例子: VTKviewer save as PNG example

于 2013-09-05T16:08:28.267 回答
0

现在我了解了 TriScatteredInterp 在 Matlab 中的工作原理。

我们有 NX 3 维的 x,y,z 点。所有这些点,我们都需要在 C++ 中实现 Delaunay 三角形。这很容易。

然后,对于您想要的所有网格点 x', y',请搜索您的 x',y' 所在的三角形。然后在三角形中进行重心插值,如链接所示。对于这些 x',y',您将得到 z'。

这就是我们需要在 C++ 中为 TriScatteredInterp 做的所有事情。

你会得到一个 x',y',z' 的矩阵,然后我按照@Deepfreeze 的想法使用 PCL 进行绘图。我们也可以使用 OpenGL 进行绘图。

它不会停留在 Delaunay 三角剖分上,还需要进行插值。

于 2013-09-06T03:29:53.883 回答