OCR:低对比度/嘈杂区域

时间:2018-02-05 13:09:56

标签: opencv ocr watermark noise

我正在尝试识别下面显示的17个字符的代码。

enter image description here

我目前正在使用OpenCV作为我的管道:
(1)转换为B& W图像
(2)计算梯度图像
(3)Otsu Thresholding
(4)找到轮廓
(5)找到轮廓的边界框

图像相对干净时效果很好。在上面的例子中,我能够检测到“H26A838778”。有没有人知道如何处理图像的左侧,对比度低,水印增加了噪音?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用Simple Thresholding

为图像设定阈值

由于字符之间的颜色相同或相似,并且它们的颜色值高于背景(更白色),您可以尝试找到阈值颜色值,这将保持字符的颜色为白色,其他所有颜色为黑色。在以下示例(Java代码)中,此数字为140。

Mat original = Imgcodecs.imread("pathToOriginalImage");
Mat gray = new Mat();
Imgproc.cvtColor(original, gray, Imgproc.COLOR_RGB2GRAY, 0);
Mat binary = new Mat();
Imgproc.threshold(original,binary,140,255,Imgproc.THRESH_BINARY);

转换为灰度

gray scale

<强>阈值

binary

OCR现在应该会给出一些好的结果。