给定2D空间中的一组边界框,将它们分组为行

时间:2016-08-10 02:55:39

标签: python algorithm geometry computational-geometry

给定一组带有顶点坐标的 N 边界框:

"vertices": [
    {
      "y": 486, 
      "x": 336
    }, 
    {
      "y": 486, 
      "x": 2235
    }, 
    {
      "y": 3393, 
      "x": 2235
    }, 
    {
      "y": 3393, 
      "x": 336
    }
  ]

我想将边界框分组为行。换句话说,给定此图像中边界框的图形表示:

Bounding Boxes

我想要一个返回的算法:

[1,2,3]
[4,5,6]
[7,8]

[编辑:澄清]分组决策(例如[4,5,6]和[7,8])应该基于某种误差最小化,例如最小二乘法。

是否存在执行此操作的算法或库(最好是在python中)?

1 个答案:

答案 0 :(得分:0)

我认为这是一个集群问题。事实上,因为你可以忽略x坐标,我认为这是一维聚类问题。一些标准的聚类算法(如k-means)可以最大限度地减少聚类中心的平方和,这相当于您所寻找的。不幸的是,他们无法保证找到全球最佳解决方案。一维聚类是一种特殊情况,其中有精确算法 - 请参阅Cluster one-dimensional data optimally?