用于计算点云部分体积的算法

Algorithm for calculating the volume of the part of point cloud

本文关键字:算法 计算 云部 用于      更新时间:2023-10-16

我正在参与与点云相关的项目研究。

我们必须创建一个 Web 应用程序。其任务将是显示来自 .ply 文件的点云。然后选择一个区域并计算其体积。计算体积的算法将在C++中实现。我们唯一拥有的是一个 .ply 格式的文件和带有所有点的 XYZ 坐标的文件。我们得到的点云是由无人机拍摄的照片生成的。例如,它是代表山区的点云。我们的任务是能够选择这样的一座山,并在考虑到误差+/-的情况下计算其近似体积。测量不必完美,但必须接近山的实际体积。体积必须从山的最低点的平坦表面计算。

我有两个问题要问你。-首先,您能否给我一个线索,链接或任何可以帮助我找到这种算法以及他最好的原因。-其次,你们中有人知道从渲染的点云中选择某个区域的最佳方法是什么吗?

我正在寻找这些信息.但是我找不到任何足够有用的东西来在我们的项目中使用它。关于该主题的任何提示或文件都将非常有用;)

"

体积"不是点云的明确定义概念。确定表面的方法有很多种,没有单一的答案。这在很大程度上取决于为定义点云表面而给出的约束。

一种非常简单的方法是简单地在所有三个轴上使用最小和最大坐标值,从而给出包围所有点的直矩形平行六面体的体积。

更复杂的方法涉及计算最小凸包络。这是一个不平凡的问题。

如果你试图找到一个不一定凸的信封,那就更难了。

无论如何,在

制定有效的算法来计算它之前,确定"体积"的确切含义非常重要。

当您使用"从无人机拍摄的照片"生成的点云时(我在这里假设您的意思是:无人机图像的摄影测量过程):

  • 第一:

看看:

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

如果您要开发自己的方法,并且希望它使用C ++,请查看:这和这个

  • 第二:

不确定我是否理解这个问题,但在我看来,选择感兴趣区域以进行计算的最佳方法是通过用户的交互(让用户选择区域周围的点并计算之间的剩余点)。

  • 额外

以防万一你还不知道,我向所有正在研究与PointCloud相关的东西的人推荐CloudCompare。

希望此链接对您有所帮助。