点云部分体积计算的算法

3
我正在参与与点云相关的项目研究。
我们需要创建一个网页应用程序,其任务是从 .ply 文件中显示点云,并选择一个区域计算其体积。计算体积的算法需要在 C ++ 中实现。我们所拥有的只是一个以 .ply 格式表示的文件和所有点的 XYZ 坐标文件。我们所得到的点云是由一架无人机拍摄的图片生成的。例如,它可以是代表山区的一片点云。我们的任务是能够选择这样的一个山峰并计算其近似体积,考虑到误差 +/-。测量不必完美,但必须接近于实际山峰的真实体积。体积必须从山峰最低点的平面表面进行计算。
我有两个问题想问你: -首先,你能给我一个线索、链接或任何有助于我找到这种算法以及为什么它是最好的原因吗? -其次,你们有没有想过从渲染的点云中选择某个区域的最佳方法?
我已经查找了这方面的信息。但我找不到任何足够有用的东西来在我们的项目中使用。任何关于此主题的提示或文档都将非常有用 ;)

1
你的点是否恰好位于等间距的x-y网格上? - wonce
2个回答

2

由于您正在处理由无人机拍摄的照片生成的点云(我在这里假设您的意思是:通过无人机图像进行摄影测量过程):

  • 首先:

请查看以下内容:

此文档

或尝试开发一些基于八叉树的方法。

如果您选择开发自己的方法,并且需要使用c++,请参考: 此文档此文档

  • 其次:

我不确定我是否理解了问题,但对我来说,选择感兴趣区域以执行计算的最佳方法显而易见是通过用户交互(让用户选择周围的点并计算剩余点之间的结果)。

  • 额外信息:

只是以防万一您还不知道,我向每个从事PointCloud相关工作的人推荐CloudCompare

希望这些链接能对您有所帮助。


2
“体积”对于点云来说不是一个明确定义的概念。有很多方法可以确定表面,没有一个单一的答案。这将非常依赖于定义点云表面所给定的限制条件。
一个非常简单的方法就是仅使用所有三个轴上的最小和最大坐标值,从而给出包围所有点的直方图形的体积。
一个更复杂的方法涉及计算最小凸包。这是一个非平凡的问题。
如果您试图找到一个不一定是凸的包络,则会变得更加困难。
在任何情况下,在能够构建有效算法计算它之前,确切地界定“体积”是非常重要的。

1
是的。你说得对,我没有说明我的意思。我们得到的点云是由一架无人机拍摄的照片生成的。例如,它是代表一个山区的点云。我们的任务是能够选择这样一个山,并计算其近似体积,考虑误差+/-。 测量不必完美,但必须接近山的真实体积。体积必须从山的最低点的平面表面计算。 - Kaltair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接