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