小编tes*_*est的帖子

从图像中删除嘈杂的线条

我有一些随机行的图片,如下所示:
在此输入图像描述
我想在它们上面应用一些预处理,以消除不必要的噪声(扭曲写入的线条),以便我可以将它们与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)
Run Code Online (Sandbox Code Playgroud)

不幸的是,扩张效果不佳,噪声线仍然存在.

在此输入图像描述
我尝试改变内核形状,但情况变得更糟:写入被部分或完全删除.
我还找到了一个答案,说可以删除这些行

将具有两个或更少相邻黑色像素的所有黑色像素转换为白色.

这对我来说似乎有点复杂,因为我是计算机视觉和opencv的初学者.
任何帮助将不胜感激,谢谢.

python opencv image-processing noise-reduction

9
推荐指数
2
解决办法
1331
查看次数

如何在不损坏文本的情况下消除点/噪音?

在此输入图像描述

我正在使用OpenCV和Python处理图像.我需要从图像中删除点/噪声.
我试过扩张使点变小,但是文字被损坏了.我也试过循环扩张两次并侵蚀一次.但这并没有给出令人满意的结果.
还有其他方法可以达到这个目的吗?
谢谢 :)

编辑:
我是图像处理的新手.我目前的代码如下

image = cv2.imread(file)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
kernel = np.ones((2, 2), np.uint8)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
gray = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
gray = cv2.erode(gray, kernel, iterations=1)
gray = cv2.dilate(gray, kernel, iterations=1)
cv2.imwrite(file.split('.'[0]+"_process.TIF", gray))
Run Code Online (Sandbox Code Playgroud)

编辑2:
我尝试了中位数模糊.它解决了90%的问题.我一直在使用gaussianBlurring.
谢谢

python opencv image image-processing

6
推荐指数
1
解决办法
2806
查看次数