如何在Meshlab中加载标记点云?

时间:2017-05-22 12:59:14

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

我目前正在使用Point Cloud Library(PCL)来完成点云工作。现在我需要为某些点云计算网格,并认为最好的办法是使用Meshlab。到目前为止,我的问题是我的点云有标签,即它具有以下形式:

pcl::PointCloud<pcl::PointXYZRGBL> cloud;

重要提示:我不能省略标签,在计算网格后我必须知道,网格的哪个点有哪个标签。稍后,经过一些操纵等,我通过

保存这个云
pcl::io::savePLYFileBinary(writePath, *cloud);

如果云类型为

,则可以正常工作
pcl::PointCloud<pcl::PointXYZRGB> cloud;

但不适用于第一种情况。有没有人知道我能做什么才能得到一个包含标签的PLY文件,并且可以加载到Meshlab中?

全部谢谢!

1 个答案:

答案 0 :(得分:0)

由于MeshLab无法打开标记点云,我建议:

  1. 将您的点云导出为MeshLab可读的格式(例如,您提到的pcl::PointCloud<pcl::PointXYZRGB>)。

  2. 使用插值方法(例如球旋转)重建三角形网格。内插方法是必要的,以便将原始点保留为网格的顶点。完成后,保存网格。

  3. 将网格与原始点云匹配顶点,以便您可以恢复标签和任何其他相关属性。在快速测试中,我甚至使顶点顺序与点匹配。之一。

  4. <强>更新

    您在评论中提到您正在使用屏蔽泊松重建。此方法使用输入点作为位置约束来提高方法的精度,但它仍然是一种近似方法,因此输出顶点不能保证与输入点匹配(并且可能不会这样做)。

    您可以切换到插值方法(如果噪声和异常值允许),或者找到每个顶点的最近点(使用 1 -NN,就像现在一样)到标签顶点。

    以上对所有离散值都有效。您还应调整其他值(例如颜色)以更好地匹配重建(顶点不匹配点)。为此,您可以插入 k -NN。

    中的相应值