【发布时间】:2014-01-22 09:44:21
【问题描述】:
我有一些图像的一组区域(边界框),例如 python 代码:
im = Image.open("single.png")
pix = np.array(im)
gray = rgb2grey(pix)
thresh = threshold_otsu(gray)
bw = closing(gray > thresh, square(1))
cleared = bw.copy()
clear_border(cleared)
borders = np.logical_xor(bw, cleared)
label_image = label(borders)
for region in regionprops(label_image, ['Area', 'BoundingBox']):
#now i have bounding boxes in hand
我想做的是合并重叠的区域或bbox边缘之间的距离小于X。天真的方法是检查所有区域之间的距离,这具有 O(n2) 复杂度。我可以写一些更聪明的东西,但我的印象是这种算法已经存在,我不想重新发明轮子。任何帮助表示赞赏。
【问题讨论】:
-
你如何测量边界框之间的“距离”?您的意思是“边界框中的每个边缘最多距离 X”还是“边缘之间的总距离为 X”?另外,您究竟想如何将它们合并在一起?有多种方法可以做到这一点,但有些方法可能会导致“级联”效果,即在合并两个框后,新框需要与第三个框合并。
-
@templatetypedef 距离定义为两个不同框的任意两条边之间的最短距离。合并是在要合并的边界框周围创建边界框。
-
如果你简单地把所有的盒子都扩大(距离/2),距离问题就容易多了。这至少减少了“框是否重叠”的问题。
标签: python algorithm image-processing bounding-box scikits