【发布时间】:2019-01-03 19:17:35
【问题描述】:
我的图像带有一些随机线条,如下所示:
我想对它们进行一些预处理,以消除不需要的噪音(扭曲书写的线条),以便我可以将它们与 OCR(Tesseract)一起使用。
我想到的想法是使用膨胀来消除噪音,然后在第二步中使用腐蚀来修复缺失的部分。
为此,我使用了以下代码:
import cv2
import numpy as np
img = cv2.imread('linee.png', cv2.IMREAD_GRAYSCALE)
kernel = np.ones((5, 5), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)
img = cv2.erode(img, kernel, iterations=1)
cv2.imwrite('delatedtest.png', img)
很遗憾,膨胀效果不佳,噪音线仍然存在。
我尝试更改内核形状,但情况变得更糟:文字被部分或完全删除。
我还发现了一个answer 说可以通过
将具有两个或更少相邻黑色像素的所有黑色像素变为白色。
这对我来说似乎有点复杂,因为我是计算机视觉和 opencv 的初学者。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
腐蚀首先去除了最薄的部分......如果你仔细观察,你可以看到。这些线条与您的文字一样粗 - 如果您将它们侵蚀/扩张,您的文字将会消失。通常,您首先侵蚀以去除微小的东西,然后再次膨胀以使幸存者再次变厚……您以相反的方式使用它们。为什么?
-
尽管图像被污损,您是否尝试通过 OCR 运行它来检查结果?
-
@PatrickArtner 我尝试先使用膨胀然后腐蚀,我也尝试先使用腐蚀然后膨胀,但也没有用。
-
@WaynePhipps 是的,我试过了,但没有给出任何结果,输出为空
标签: python opencv image-processing noise-reduction