示例#1
0
def voronoi_expand(labels, return_line=False):
    dist = distance_transform_edt(labels)

    vor = skiwatershed(-dist, markers=labels)
    if not return_line:
        return vor
    else:
        mask = skiwatershed(-dist, markers=labels, watershed_line=True)
        lines = mask == 0
        return vor, lines
示例#2
0
def label_watershed(labels, regmax):
    # Since there are non-unique values for dist, add very small numbers. This will separate each marker by regmax at least.
    dist = distance_transform_edt(labels) + np.random.rand(*labels.shape)*1e-10
    labeled_maxima = label(peak_local_max(dist, min_distance=int(regmax), indices=False))
    wshed = -dist
    wshed = wshed - np.min(dist)
    markers = np.zeros(wshed.shape, np.int16)
    markers[labeled_maxima > 0] = -labeled_maxima[labeled_maxima > 0]
    wlabel = skiwatershed(wshed, markers, connectivity=np.ones((3,3), bool), mask=labels!=0)
    wlabel = -wlabel
    wlabel = labels.max() + wlabel
    wlabel[wlabel == labels.max()] = 0
    all_label = label(labels + wlabel)
    return all_label