通过将阈值处理应用于该图像的白色区域,然后进行修复,对大多数情况都有效。
img = cv2.imread('ultrasound.png')
mask = cv2.threshold(img, 210, 255, cv2.THRESH_BINARY)[1][:,:,0]
dst = cv2.inpaint(img, mask, 7, cv2.INPAINT_NS)
以下是口罩图片:
这是修复后的图像:
请注意,阈值掩模不是精确的,包括没有字母的较亮区域。但更重要的是,如果掩模不包括需要去除的区域,例如中间十字架的深色阴影,就会出现问题。这里是该区域的放大图。
掩模仅针对白色区域而不覆盖黑暗区域。对于像这样阈值化不足以解决的问题,可以手动调整掩模。在这里,我将掩模中的原始十字架移动到阴影上,并且修复效果更好。(同样,如果需要,可以手动删除掩模中不应包含的区域)
crosses = mask[235:267,290:320] | mask[233:265,288:318]
mask[235:267,290:318] = crosses
dst = cv2.inpaint(img, mask, 7, cv2.INPAINT_NS)
InPainting
进行填充:https://docs.opencv.org/3.4.0/df/d3d/tutorial_py_inpainting.html - Mark Setchell