剪切点云的最小边界框

时间:2013-11-22 18:43:28

标签: algorithm language-agnostic geometry 2d bounding-box

我正在尝试找到二维点云的最小边界框,其中只有一部分点云可见。

给定具有粗糙矩形形状的点云,剪裁以便只能看到一个角:

enter image description here

点云被剪裁在绿色边框处。我知道图像中边框的位置,我知道在这个边框内总会有一个矩形的角可见。我也知道矩形的大小。

现在我想找到包含这个形状的所有点的最小边界框,即使那些在屏幕上看不到的也是如此。由于我知道盒子的尺寸,找到可见的两面就足以确定其他两面了。
(实际上有两种可能的解决方案,因为可以交换形状的宽度和高度,但暂时忽略它)

enter image description here

我想找到红色的盒子。

我不需要精确解决方案,也不需要快速解决方案。我目前的尝试使用一种简单的强力算法,以1°的步长旋转点云,找到轴对齐的边界框。

我只需要一个标准,告诉我哪种旋转对于这种情况最好。 Minimal-Area是最小边界框的通常标准,但显然只有在所有点都可见时才有效。

可能有一些涉及凸壳的最优算法,但我宁愿让解决方案尽可能简单

1 个答案:

答案 0 :(得分:0)

您真正需要的是红色和绿色矩形之间交叉角的位置。假设这些点是边界的合适近似值,这应该是一个相当可靠的方法来获得这些:

  • 选择距离彼此最远的两个点A和B.这是交叉区域的两个角落。
  • 找到距离两侧AB线(example)最大垂直距离的点C和D.那是区域交叉口的另外两个角落。

A,B,C& D是红色矩形的角落和绿色和红色矩形之间的交叉点的一些组合。要弄清楚哪些是哪个,只需检查绿色矩形边框的一些小容差范围内。有了它,你就可以获得足够的信息来轻松计算出红色矩形的位置。