如何对低对比度图像进行预处理以提高ocr质量并避免信息丢失?

问题描述 投票:0回答:1

我正在尝试使用低对比度的图像进行 OCR 文本检测。

原料:

Raw

我目前正在使用这种方法:使用这些过滤器进行预处理:

img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
img_yuv[:,:,0] = cv2.equalizeHist(img_yuv[:,:,0])
img_output = cv2.cvtColor(img_yuv, cv2.COLOR_YUV2BGR)
img = img.filter(ImageFilter.GaussianBlur) 
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh, im_bw = cv2.threshold(img, 210, 230, cv2.THRESH_BINARY)
data = Image.fromarray(im_bw)

经过预处理后,这就是我得到的

Results

我如何改进我的方法?

python opencv ocr easyocr image-enhancement
1个回答
0
投票

您的输入图像带有严重的椒盐噪声(see),因此您应该使用中值模糊而不是高斯模糊。此外,它在整个图像中具有不同的光照水平,因此您应该使用自适应阈值来最小化变化光照的影响。此外,由于应用直方图均衡时图像噪声很大,它也会放大噪声。

我将你的图像分成 3 个水平部分,并用

Otsu Thresholding
过滤它们,然后再次组合。让我向您展示高斯模糊、中值模糊和直方图均衡对滤波图像的效果。

这是原图:

这是高斯模糊和阈值:

这是中值模糊和阈值:

如您所见,中值模糊更适合您的图像,因为它在整个图像中具有类似椒盐的噪点。

现在让我们看看均衡对噪声严重的图像的效果。 这是YUV均衡后的图像:

这是高斯模糊版本:

这是中值模糊版本:

因此,您可以使用原始图像无需均衡使用中值模糊来获得最佳结果。您还可以使用形态学操作来进一步改善图像。

© www.soinside.com 2019 - 2024. All rights reserved.