用C ++编写的Matlab TriScatteredInterp实现

时间:2013-09-05 09:07:20

标签: c++ matlab point-cloud-library

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

2 个答案:

答案 0 :(得分:1)

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

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

2)在查看器中显示表面
可以使用VTK查看器实现此步骤。一个例子是shonw in: VTK mesh viewing

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

答案 1 :(得分:0)

现在我了解TriScatteredInterp如何在Matlab中运行。

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

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

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

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

它不会停留在Delaunay三角剖分中,仍然需要进行插值。