将3D点云分成较小的方向边界框

时间:2017-09-06 10:07:05

标签: c# wpf point-clouds bounding-box helix-3d-toolkit

我正在使用C#WPF。

有一段时间我正在寻找一种算法来解决我的问题。可能它不是那么微不足道,而是进入3D图形。

我在3D空间中有一个2D表面(也可以用点云表示)。

我需要将这个表面分成更小的位,这些位应该适合特定的盒子(例如300 x 300 x 15)。

我正在寻找一种在3d中工作的算法,它不是轴对齐的,类似于最小的体积边界框,但如果盒子大于特定的体积,它会将体积分成更小的盒子。

我怀疑OBB的优化问题和很多迭代,但我不知道如何解决这个问题。

图片说明了一点问题。红色和黑色框不是强制轴对齐的,它们应该是<或=最大盒子大小(大小而不是体积!)。

picture

谢谢大家的支持!

1 个答案:

答案 0 :(得分:0)

对于使用磁盘覆盖形状的情况,已知您的问题是NP难的:请参阅f.e. https://en.wikipedia.org/wiki/Geometric_set_cover_problem。我强烈怀疑你的封面问题的情况并不好。因此,您必须求助于在线性或多项式时间内完成工作的近似精确算法。根据您在解决方案中可以牺牲的条件,您可以使用已知解决方案完成不同的任务。所以,如果你解释一下你是如何完成这项任务的,那么你想要解决的真正任务是什么呢?那么我们可以讨论哪些近似解决方案对你的案例来说足够好。

例如,如果您使用次优(并且足够好)覆盖您的点集,并且具有次优大小和方向(但足够好)的方向框,那么您可以使用一些涉及生成epsilon的快速算法-nets(参见fe https://en.wikipedia.org/wiki/%CE%95-net_(computational_geometry)https://en.wikipedia.org/wiki/Delone_set)和/或贪婪地将点集细分为子集,并为每个子集提供一个足够好的定向边界框的贪婪近似。

另外,我在实践中没有自己使用它,但如果我不得不考虑你的任务的近似解决方案,知道你对解决方案的限制,我会考虑https://arxiv.org/abs/1409.7425这应该是作为一种框架方法,用于生成与您的任务类似的一系列任务的近似解决方案。看看,你可能会看到一些对你有用的东西,或者你可能会看到google准备使用解决方案的有用词汇。