OpenCV - 从图像中删除文本

9
如何从以下医学超声图像中删除文本和标记? enter image description here

3
使用阈值分割(寻找明亮白色区域)、模板匹配、OCR或其他技术来确定文本位置,然后使用InPainting进行填充:https://docs.opencv.org/3.4.0/df/d3d/tutorial_py_inpainting.html - Mark Setchell
1个回答

15

通过将阈值处理应用于该图像的白色区域,然后进行修复,对大多数情况都有效。

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)

这里输入图片描述

这里输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接