def calculate_distance(centers_of_mass, image):
"""
takes the centers of each blob, and an image to be segmented. Divides the image according to the center of masses
by a random walk
:param image: a binarised image to be segmented
:param centers_of_mass: the centres that will define the maxima of the watershed segmentation
:return segmentation_labels: a labelled image/segmentation, where each index belongs do a different center of mass
"""
# random walk segmentation of 2D image-mask array
distance = ndimage.distance_transform_edt(np.abs(image-1))
local_maxi = np.zeros_like(image)
for c in centers_of_mass:
local_maxi[int(c[0]), int(c[1])] = 1
markers = ndimage.label(local_maxi)[0]
segmentation_labels = segmentation.random_walker(distance, markers, beta=60)
return segmentation_labels
评论列表
文章目录