【发布时间】:2022-01-09 20:38:24
【问题描述】:
我正在尝试对 OCR 引擎生成的框进行排序。来自引擎的边界框是随机的,没有任何特定的排序。我想从左到右,从上到下对盒子进行排序。哪个是同一行(行)中的框应该从左到右排序,然后它应该到行(行)下面并从左到右排序等等。
我拥有每个矩形(框)的所有 4 个点
这里是一些示例图片。
【问题讨论】:
-
建议:1)计算每个框的中心坐标; 2)在垂直坐标上使用聚类对每行的框进行分组; 3)对行进行排序,对每一行的框进行排序。
-
你能分开重叠的盒子吗?从上到下是否与框的顶部或中心相关?
-
@Stef 是的,我想到了同样的方法,但
clustering on vertical co-ordinate是我正在努力做的事情。如何在 y 轴上聚类?我尝试了一些方法,即采用最顶部的元素,并获取位于所选点中心以下的所有点,并将这些点考虑在同一条线上。删除选定的框并重复。但它似乎效果不佳。 -
@SyedAbdul 您是否尝试过使用 scikit-learn 的聚类算法?如果你知道行数,那么 k-means 应该是完美的。如果您不知道行数,那么层次聚类应该可以很好地工作。见scikit-learn.org/stable/modules/clustering.html
-
@SyedAbdul 特别是,如果您知道不在同一条线上的两个不同框之间的垂直距离始终至少是某个常数(例如 0.5 厘米),那么 scikit 中的任何聚类算法-learn 接受
distance_threshold参数可以很好地工作。