Source code for histomicstk.segmentation.label.delete_overlap

import numpy as np

from .condense import condense
from .delete import delete


[docs] def delete_overlap(im_label, overlap_info): """ Deletes overlapping regions from an image label based on overlap information and tile size. Args: ---- im_label (ndarray): Image label represented as a NumPy array. overlap_info (dict): Dictionary containing overlap information. It should have the following keys: 'left', 'right', 'top', and 'bottom', each specifying the overlap amount in pixels. Returns: ------- ndarray: Image label with overlapping regions deleted. Note: ---- This function assumes the necessary imports, such as `np`, are already present. """ # Compute the half of the overlap values left_overlap = overlap_info['left'] // 2 right_overlap = overlap_info['right'] // 2 top_overlap = overlap_info['top'] // 2 bottom_overlap = overlap_info['bottom'] // 2 if not np.any(im_label): return im_label # Create a border mask based on the overlap values im_border_mask = np.zeros_like(im_label) if left_overlap: im_border_mask[:, :left_overlap] = True if right_overlap: im_border_mask[:, -right_overlap:] = True if top_overlap: im_border_mask[:top_overlap, :] = True if bottom_overlap: im_border_mask[-bottom_overlap:, :] = True # Find unique indices of the border regions border_indices = np.unique(im_label[im_border_mask > 0]) border_indices = border_indices[border_indices > 0] if len(border_indices) == 0: return im_label # Condense and delete the overlap regions from the image label im_label_del = np.zeros_like(im_label) im_label_del = condense(delete(im_label, border_indices)) return im_label_del