简体   繁体   English

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

[英]Split up a 3D point cloud into smaller oriented bounding boxes

I'm working with C# WPF. 我正在使用C#WPF。

It's a while I'm looking for an algorithm to solve my Problem. 我有一段时间我正在寻找一种算法来解决我的问题。 Probably it's not so trivial and goes into 3D graphics. 可能它不是那么琐碎,而是进入3D图形。

I have a 2D surface in a 3D space (can also be represented by a point cloud). 我在3D空间中有一个2D表面(也可以用点云表示)。

I need to split up this surface into smaller bits, which should fit into a specific box (for exemple 300 x 300 x 15). 我需要将这个表面分成较小的位,这应该适合特定的盒子(例如300 x 300 x 15)。

I'm looking for an algorithm that works in 3d which is not axis aligned, something like a minimal volume bounding box but which splits up the volume into smaller boxes if the box is bigger than the specific volume. 我正在寻找一种在3d中工作的算法,它不是轴对齐的,类似于最小的体积边界框,但是如果盒子大于特定的体积,它会将体积分成更小的盒子。

I suspect an optimization problem of OBB and a lot of iterations, but I have no idea how to tackle this. 我怀疑OBB的优化问题和很多迭代,但我不知道如何解决这个问题。

The picture illustrates a bit the Problem. 图片说明了一点问题。 The red and the black boxes are not forced to be axis aligned and they should be < or = to max box size (size and not volume!). 红色和黑色框不是强制轴对齐的,它们应该<或=最大框大小(大小而不是体积!)。

图片

Thank you all for your support! 谢谢大家的支持!

Your problem is known to be NP-hard for the case of covering a shape with disks: see fe https://en.wikipedia.org/wiki/Geometric_set_cover_problem . 对于使用磁盘覆盖形状的情况,已知您的问题是NP难的:请参阅fe https://en.wikipedia.org/wiki/Geometric_set_cover_problem I strongly suspect your case of the set cover problem is nothing better. 我强烈怀疑你的封面问题的情况并不好。 So you have to resort to approximately exact algorithms doing the work in linear or polynomial time. 因此,您必须求助于在线性或多项式时间内完成工作的近似精确算法。 Depending on what conditions you can sacrifice in your solution you may arrive at a completely different task with known solution. 根据您在解决方案中可以牺牲的条件,您可以使用已知解决方案完成不同的任务。 So, if you explain how did you come to this task and what was the real task you wanted to solve then we may discuss what approximate solution could be good enough for your case. 所以,如果你解释一下你是如何完成这项任务的,那么你想要解决的真正任务是什么呢?那么我们可以讨论哪些近似解决方案对你的案例来说足够好。

For example, if you are good with sub-optimal (but good enough) covering of your point set with oriented boxes of sub-optimal size and orientation (but good enough) then you can go with some fast algorithm involving generating epsilon-nets (see fe https://en.wikipedia.org/wiki/%CE%95-net_(computational_geometry) and https://en.wikipedia.org/wiki/Delone_set ) and/or greedy subdividing the point set into subsets with some greedy approximation of a good enough oriented bounding box for each subset. 例如,如果您对具有次优大小和方向(但足够好)的定向框覆盖您的点集的次优(但足够好),那么您可以使用一些涉及生成epsilon-net的快速算法(参见fe https://en.wikipedia.org/wiki/%CE%95-net_(computational_geometry)https://en.wikipedia.org/wiki/Delone_set )和/或贪婪地将点集细分为子集为每个子集贪婪地近似一个足够好的定向边界框。

Also, I did yet not use it myself in practice but if I had to think about approximate solution of your task knowing your constraints on the solution, I'd think along with https://arxiv.org/abs/1409.7425 which is supposed to serve as a framework approach for generating approximate solutions of a family of tasks similar to yours. 另外,我在实践中没有自己使用它,但如果我不得不考虑你的任务的近似解决方案知道你对解决方案的限制,我会想到https://arxiv.org/abs/1409.7425这是假设的作为一种框架方法,用于生成与您的任务类似的一系列任务的近似解决方案。 Take a look, may be you see something explicitly useful for you or perhaps you see there useful words to google ready to use solutions. 看一下,你可能会看到一些对你有用的东西,或者你可能会看到google准备使用解决方案的有用词汇。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM