python - 给定二维空间中的一组边界框,将它们分组到行中

标签 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 中)?

最佳答案

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

关于python - 给定二维空间中的一组边界框,将它们分组到行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38863534/

相关文章:

java - 如何在scala中处理列表列表并迭代添加元素

objective-c - 如何绘制一组多个矩形的轮廓?

python - 基于cmd模块为python3 shell编写unittest

algorithm - 在多个数组中查找最近的元素

python - 有没有一种直接的方法可以在 Windows 上获得完整的工作 Python 环境?

algorithm - 遗传算法在解决TSP时应该离多远

arrays - O(n) 最坏情况下的 2D 峰值查找算法?

php - 有没有一种简单的方法来检测线段相交?

python - 如何在 Pandas 中遍历 DataFrame 中的行

python - 将四边形和三角形的网格转换为仅由三角形组成的网格