Я хочу создать диаграмму ребер voronoi для точечных аннотаций (двоичное изображение положения ядер). Я использовал код из здесь , чтобы создать диаграмму ребер voronoi, но то, что я получил в результате, показано на изображении , показанном здесь . Мне просто нужны вороной ребра. Ниже приведен код
диаграмма Вороного края
def viro(img):
label_point=img
h, w = label_point.shape
points = np.argwhere(label_point>0)
vor = Voronoi(points)
regions, vertices = voronoi_finite_polygons_2d(vor)
box = Polygon([[0, 0], [0, w], [h, w], [h, 0]])
region_masks = np.zeros((h, w), dtype=np.int16)
edges = np.zeros((h, w), dtype=np.bool)
count = 1
masks= np.zeros((h, w), dtype=np.bool)
for region in regions:
polygon = vertices[region]
# Clipping polygon
poly = Polygon(polygon)
poly = poly.intersection(box)
polygon = np.array([list(p) for p in poly.exterior.coords])
mask = poly2mask(polygon[:, 0], polygon[:, 1], (h, w))
edge = mask * (~morphology.erosion(mask, morphology.disk(1)))
edges += edge
region_masks[mask] = count
count += 1
# fuse Voronoi edge and dilated points
label_point_dilated = morphology.dilation(label_point, morphology.disk(1))
label_vor = np.zeros((h, w, 3), dtype=np.uint8)
label_vor[:, :, 0] = (edges > 0).astype(np.uint8) * 255
label_vor[:, :, 1] = (label_point_dilated > 0).astype(np.uint8) * 255
return label_vor