У меня есть набор регионов (ограничивающих прямоугольников) для некоторого изображения, например код 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). Я могу написать что-нибудь умнее, но у меня сложилось впечатление, что такой алгоритм уже существует, и я не хочу изобретать велосипед. Любая помощь приветствуется.