def suppress_artifacts(self, img, global_threshold=.05, fill_holes=False,
smooth_boundary=True, kernel_size=15):
'''Mask artifacts from an input image
Artifacts refer to textual markings and other small objects that are
not related to the breast region.
Args:
img (2D array): input image as a numpy 2D array.
global_threshold ([int]): a global threshold as a cutoff for low
intensities for image binarization. Default is 18.
kernel_size ([int]): kernel size for morphological operations.
Default is 15.
Returns:
a tuple of (output_image, breast_mask). Both are 2D numpy arrays.
'''
maxval = self.max_pix_val(img.dtype)
if global_threshold < 1.:
low_th = int(img.max()*global_threshold)
else:
low_th = int(global_threshold)
_, img_bin = cv2.threshold(img, low_th, maxval=maxval,
type=cv2.THRESH_BINARY)
breast_mask = self.select_largest_obj(img_bin, lab_val=maxval,
fill_holes=True,
smooth_boundary=True,
kernel_size=kernel_size)
img_suppr = cv2.bitwise_and(img, breast_mask)
return (img_suppr, breast_mask)
评论列表
文章目录