def ring_dilation_above_offset_buffer(labels, img, MARGIN=0, RINGWIDTH=2, BUFFER=2, OFFSET=100, FILSIZE=50): """Dilate from label to make a ring. Calculate the local minimum as a background, and if image is less brighter than background + offset, remove the region from the ring. """ sub_label = dilate_to_cytoring_buffer(labels, RINGWIDTH, MARGIN, BUFFER) minimg = minimum_filter(img, size=FILSIZE) sub_label[img < (minimg + OFFSET)] = 0 return sub_label
def ring_dilation_above_adaptive(labels, img, MARGIN=0, RINGWIDTH=4, BUFFER=2, RATIO=1.05, FILSIZE=10): sub_labels = dilate_to_cytoring_buffer(labels, RINGWIDTH, MARGIN, BUFFER) bw = adaptive_thresh(img, R=RATIO, FILTERINGSIZE=FILSIZE) sub_labels[-bw] = 0 return sub_labels
def ring_dilation(labels, MARGIN=0, RINGWIDTH=4, BUFFER=0): """Create a ring around label. :param RINGWIDTH (int): Width of rings :param MARGIN (int): A region of rings is ignored if they are within MARGIN pixels away from label. Examples: >>> arr = np.zeros((5, 5));arr[2, 2] = 10 >>> ring_dilation(None, arr, None, MARGIN=1, RINGWIDTH=2) array([[ 0, 10, 10, 10, 0], [10, 0, 0, 0, 10], [10, 0, 0, 0, 10], [10, 0, 0, 0, 10], [ 0, 10, 10, 10, 0]], dtype=uint16) """ if BUFFER == 0: return dilate_to_cytoring(labels, RINGWIDTH, MARGIN) else: return dilate_to_cytoring_buffer(labels, RINGWIDTH, MARGIN, BUFFER)
def ring_dilation_buffer(labels, MARGIN=0, RINGWIDTH=4, BUFFER=2): return dilate_to_cytoring_buffer(labels, RINGWIDTH, MARGIN, BUFFER)