给定一组具有顶点坐标的 N 边界框:
"vertices": [
{
"y": 486,
"x": 336
},
{
"y": 486,
"x": 2235
},
{
"y": 3393,
"x": 2235
},
{
"y": 3393,
"x": 336
}
]
我想将边界框分组到行中。换句话说,给定此图像中边界框的图形表示:
我想要一个返回的算法:
[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/