从扫描图像中删除网格
Posted
技术标签:
【中文标题】从扫描图像中删除网格【英文标题】:Removing grid from scanned image 【发布时间】:2017-06-08 21:50:02 【问题描述】:我必须识别手工填写的银行表格的文本。表格有一个网格,如图所示。我是图像处理的新手。我读了几篇关于手写识别的论文,并将去噪、二值化作为预处理任务。我现在想分割图像并使用神经网络识别字符。为了分割我想要摆脱网格的字符。
提前非常感谢您。
【问题讨论】:
SO 不是编码网站。请展示一些作品,以便我们帮助您做得更好。 @DYZ 我尝试在上面提供的图像上使用去噪、二值化和边缘检测。我不明白如何摆脱网格。任何见解都会有所帮助。 尝试腐蚀和膨胀运算符 【参考方案1】:我有一个使用 OpenCV 的解决方案。
首先,我将图像反转:
ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
现在我进行了形态开运算:
opening = cv2.morphologyEx(thresh2, cv2.MORPH_OPEN, k2)
cv2.imshow('opening', opening)
您可以看到网格线已经消失。但也有一些角色的高处。所以为了填补空白,我执行了形态膨胀操作:
dilate = cv2.morphologyEx(opening, cv2.MORPH_DILATE, k1)
cv2.imshow('dilation', dilate)
您可以查看THIS LINK 了解更多形态学操作和内核使用。
【讨论】:
@Soltius 嘿,知道如何让角色恢复到原始图像中的正常状态吗? 关闭而不是扩张带来了什么? @Soltius Closing 通常用于填充二进制图像内部的一些孔/斑点/间隙。 SEE HERE 当然这是它的一般使用方式,但我认为它在这里很有用。这取决于您使用的内核的大小和形状,但我用 (5,5) 矩形内核(而不是膨胀阶段)进行了尝试,它弥补了一些差距 :) @Soltius 完全正确!!!这就是我选择它的原因。我也尝试了不同的可能性以上是关于从扫描图像中删除网格的主要内容,如果未能解决你的问题,请参考以下文章