我正在参与与点云相关的项目研究。
我们必须创建一个 Web 应用程序。谁的任务将显示 .ply 文件中的点云。然后选择一个区域并计算其体积。计算体积的算法要用C++实现。我们唯一拥有的是 .ply 格式的文件和包含所有点的 XYZ 坐标的文件。我们得到的点云是由无人机拍摄的照片生成的。例如,它是代表山区的点云。我们的任务是能够选择这样一座山并在考虑误差 +/- 的情况下计算其近似体积。测量不一定要完美,但必须接近山的实际体积。必须从山的最低点的平面计算体积。
我有两个问题要问你。 -首先,你能给我一个线索、链接或任何可以帮助我找到这样一个算法的东西,以及他为什么是最好的原因。 -其次,你们中有人知道从渲染点云中选择某些区域的最佳方法是什么吗?
我正在寻找这些信息。但是我找不到任何足以在我们的项目中使用它的东西。关于该主题的任何提示或文档都会非常有用;)
最佳答案
“体积”对于点云来说并不是一个明确定义的概念。确定曲面的方法有很多种,没有单一的答案。这在很大程度上取决于定义点云表面的约束条件。
一种非常简单的方法是简单地使用所有三个轴上的最小和最大坐标值,从而给出包含所有点的直角平行六面体的体积。
复杂得多的方法涉及计算最小凸包络。这是一个不平凡的问题。
如果您试图找到一个不一定是凸面的信封,那就更难了。
在任何情况下,重要的是要准确确定“体积”的含义,然后才能制定有效的算法来计算它。
关于c++ - 计算点云部分体积的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970803/