如何修复二进制图像中破碎的字母

时间:2018-06-21 16:44:54

标签: opencv

我有一张照片。

Original picture

图像中有很多破碎的地方。

请参考图片。

Picture with broken places

谁知道如何使用opencv 3.0修复折线?

我在OpenCV中使用了扩张操作,得到的图片如下:

Dilation result

比较原始图像看起来很丑。

1 个答案:

答案 0 :(得分:1)

我参加聚会很晚,但是希望这对某人有帮助。

由于您没有提供原始图像,所以我不能说以下解决方案可以100%起作用。不确定如何对图像进行阈值处理,但是自适应阈值处理可能会给您带来更好的结果。 Opencv(Python)代码:

gauss_win_size = 5
gauss_sigma = 3
th_window_size = 15
th_offset = 2

img_blur = cv2.GaussianBlur(image,(gauss_win_size,gauss_win_size),gauss_sigma)
th = cv2.adaptiveThreshold(img_blur,255, cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY_INV,th_window_size,th_offset)

修改参数值以查看哪些值最有效。通常,对图像进行模糊处理是一个好主意,并且可能需要处理破碎的字母二进制图像。请注意,模糊可能最终会在二进制图像中产生稍粗的字符。如果仍然留下一些断字符,则可以使用形态学结束符:

selem_shape = cv2.MORPH_RECT
selem_size = (3, 3)

selem = cv2.getStructuringElement(selem_shape, selem_size)
th = cv2.morphologyEx(image, cv2.MORPH_CLOSE, selem)

再次修改结构元素的大小和形状,使其最适合您的图像。