Meshlab如何加载标注点云?
How to load labeled point cloud in Meshlab?
我目前正在使用点云库 (PCL) 来处理点云。现在我需要为一些点云计算网格,我认为最好的办法是使用 Meshlab。到目前为止一切顺利,我的问题是我的点云有标签,即它具有以下形式:
pcl::PointCloud<pcl::PointXYZRGBL> cloud;
重要提示:我不能省略标签,我必须在计算网格后知道网格的哪个点有哪个标签。后来,经过一些操作等。我通过
保存了这个云
pcl::io::savePLYFileBinary(writePath, *cloud);
如果云的类型是
,效果很好
pcl::PointCloud<pcl::PointXYZRGB> cloud;
但不适用于第一种情况。有谁知道我该怎么做才能仍然获得包含标签并可以加载到 Meshlab 中的 PLY 文件?
谢谢大家!
由于 MeshLab 无法打开您的标记点云,我建议:
将您的点云导出为 MeshLab 可读的格式(例如,您提到的 pcl::PointCloud<pcl::PointXYZRGB>
)。
使用插值方法(例如 球旋转 重建三角形网格。为了将原始点保留为网格的顶点,插值方法是必要的。完成后,保存网格。
在与原始点云匹配的顶点处加载网格,以便您可以恢复标签和任何其他相关属性。在快速测试中,我什至使顶点顺序与点的顺序相匹配。
更新
您在评论中提到您正在使用 Screened Poisson Reconstruction。此方法使用输入点作为位置约束来提高方法的精度,但它仍然是一种近似方法,因此不能保证输出顶点与输入点匹配(并且可能不会)。
您可以切换到插值方法(如果噪声和异常值允许),或者为每个顶点找到最近点(使用 1-NN,因为您现在正在做)来标记顶点。
以上适用于所有离散值。您还应该调整其他值,例如颜色,以更好地匹配重建(顶点不匹配点)。为此,您可以从 k-NN.
中插入相应的值
我目前正在使用点云库 (PCL) 来处理点云。现在我需要为一些点云计算网格,我认为最好的办法是使用 Meshlab。到目前为止一切顺利,我的问题是我的点云有标签,即它具有以下形式:
pcl::PointCloud<pcl::PointXYZRGBL> cloud;
重要提示:我不能省略标签,我必须在计算网格后知道网格的哪个点有哪个标签。后来,经过一些操作等。我通过
保存了这个云pcl::io::savePLYFileBinary(writePath, *cloud);
如果云的类型是
,效果很好pcl::PointCloud<pcl::PointXYZRGB> cloud;
但不适用于第一种情况。有谁知道我该怎么做才能仍然获得包含标签并可以加载到 Meshlab 中的 PLY 文件?
谢谢大家!
由于 MeshLab 无法打开您的标记点云,我建议:
将您的点云导出为 MeshLab 可读的格式(例如,您提到的
pcl::PointCloud<pcl::PointXYZRGB>
)。使用插值方法(例如 球旋转 重建三角形网格。为了将原始点保留为网格的顶点,插值方法是必要的。完成后,保存网格。
在与原始点云匹配的顶点处加载网格,以便您可以恢复标签和任何其他相关属性。在快速测试中,我什至使顶点顺序与点的顺序相匹配。
更新
您在评论中提到您正在使用 Screened Poisson Reconstruction。此方法使用输入点作为位置约束来提高方法的精度,但它仍然是一种近似方法,因此不能保证输出顶点与输入点匹配(并且可能不会)。
您可以切换到插值方法(如果噪声和异常值允许),或者为每个顶点找到最近点(使用 1-NN,因为您现在正在做)来标记顶点。
以上适用于所有离散值。您还应该调整其他值,例如颜色,以更好地匹配重建(顶点不匹配点)。为此,您可以从 k-NN.
中插入相应的值