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

Given a set of bounding boxes in an 2D space, group them into rows

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

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

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

我想要一个算法 returns:

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

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

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

我认为这是一个聚类问题。其实因为可以忽略x坐标,所以我觉得这是一个1维的聚类问题。一些标准的聚类算法(例如 k-means)有助于最小化聚类中心的平方和,这相当于您正在寻找的东西。不幸的是,他们不能保证找到全球最佳解决方案。一维聚类是一种特殊情况,有精确的算法 - 请参阅 Cluster one-dimensional data optimally?