基于自适应混合阈值的智能电表图像二值化

2023-02-17 01:54刘朋远周媛奉窦圣霞胡循勇
计算机应用与软件 2023年1期
关键词:字符像素点笔画

刘朋远 田 瑞 周媛奉 窦圣霞 樊 博 胡循勇

1(国网宁夏营销服务中心(计量中心) 宁夏 银川 750000) 2(四川大学电气工程学院 四川 成都 610065)

0 引 言

智能电表是智能电网中重要的基础设备,在其储存、运输和安装过程中可能出现芯片混用、错用等问题[1],故有必要对智能电表的芯片型号进行检测。光学字符识别(OCR)是比较常用的图像字符识别技术,图像二值化则是该技术最重要的步骤之一。由于背景复杂、拍摄角度和光线强弱等众多环境因素的影响,拍摄的芯片图像会出现亮度不均匀以及部分字符大小不一等问题,使得二值化效果不理想,进而影响后续的字符识别结果[2]。

二值化是指根据图像中的目标信息与其背景在灰度特性上的差异来确定阈值,从而由划分的两个灰度值来表示图中的目标和背景。目前的二值化算法中按照阈值计算的空间区域可分为两大类:全局阈值算法和局部阈值算法[3]。全局阈值算法是根据整幅图像的灰度值来计算全局的阈值,常用的全局阈值算法主要包括大律法(Otsu)[4]、迭代法[5]等,该类算法适用于具有明显双峰灰度直方图和亮度均匀的图像[6]。局部阈值法则是根据每一像素点和该点邻域的灰度值来确定其对应的局部阈值。常用的算法有Bernsen算法[7]、Niblack算法[8]、Sauvola算法[9]等,该类算法处理光照不均匀图像的二值化效果比全局阈值法更好,但并没有考虑图像的整体情况,有时还会存在过分割效应和伪影,效果仍不理想[10]。而且大多数现有的局部阈值法都需要手动调整参数以得到最佳结果,那么对于不同的图像和字符大小,固定的窗口大小和参数值就无法有效处理[11]。

由于不均匀光照和字符宽度差异的影响,芯片图像在使用单一的全局或局部阈值算法时,无法被有效地二值化。本文提出一种基于自适应混合阈值的二值化算法,针对芯片图像亮度不均匀的问题,对传统的局部阈值法进行改进,将Otsu算法全局阈值和局部阈值进行加权相加,解决了局部阈值算法没有考虑图像整体效果的问题;针对芯片图像字符大小不一的问题,对每个像素由笔画宽度变换自动计算窗口大小,并且根据不同的窗口大小和设定的自适应参数计算局部阈值,从而自适应地计算混合阈值,避免了手动调整参数,提高了算法的效率。

1 相关算法介绍

1.1 Otsu算法

Otsu算法又称大津算法,是目前应用最广泛的全局阈值二值化算法,具有原理简单、处理速度快、适应性强等优点[4],但该算法对光照不均匀图像的二值化效果较差。

设灰度图像f(x,y)有N个像素点、L个灰度级。选取全局阈值Tg,将f(x,y)分为C0和C1两类,C0类由f(x,y)在灰度级[0,Tg]内的像素点组成,C1类由f(x,y)在灰度级[Tg+1,L]内的像素点组成,由此这两类的类间方差可以表示为:

σ2=μ0(m0-m)2+μ1(m1-m)2

(1)

式中:μ0和μ1分别是C0和C1两类的概率;m0和m1分别是C0和C1两类的灰度均值;m是整幅图像的灰度均值。在L级的灰度范围内,采用遍历的方法,选取出当类间方差最大时所对应的阈值Tg,即为相应的全局阈值。

1.2 笔画宽度变换

局部阈值法中最重要的参数之一就是窗口大小,通过从窗口中提取所需的特征,便可计算出局部阈值[12]。大多数局部阈值法中的窗口大小都是固定的,而不同的图像各区域所包含的信息密度不同,即使是在同一图像中,字符的笔画宽度和大小也可能有所不同。所以固定的窗口大小对于某一图像可能效果很好,对其他则不适用[2]。

因此可以根据字符的笔画宽度来估算每个像素点对应的窗口大小,目前常用的字符笔画宽度的估算方法主要有游程法、法向量法、轮廓比例法及宽谱法等,其中基于法向量的笔画宽度估算结果的误差较小[13]。

笔画宽度变换(SWT)是对局部图像运算的算法,可根据某像素点的法向量计算其最可能的笔画宽度。该算法的输出是与输入图像维度相同的矩阵A,其中的每个元素均为与该位置像素对应的笔画宽度[14],该算法的具体步骤如下:

1) 首先将矩阵A中的所有元素初始化为无穷大(∞),对输入图像使用Canny算法检测字符边缘。

2) 其次计算每个边缘像素点的梯度方向。对于任一边缘像素u,其梯度方向gu垂直于笔画边界,根据该梯度方向,沿路径r可找到另一边缘像素v,如式(2)所示。

r=u+n×gun>0

(2)

若v处的梯度方向gv与gu大致相反,则将路径中的像素u和v之间的距离作为其笔画宽度;若未找到边缘像素v或gv与gu不相对,则丢弃该路径。

3) 然后沿着负梯度方向-gu,再次执行步骤1)和步骤2),以此处理不同背景和文字的情况。图1显示了典型的字符笔画和求取笔画宽度的过程。

(a) 字符笔画 (b) 由梯度寻找笔画宽度 (c) 笔画宽度图1 求取笔画宽度的过程

4) 最后由各像素点所对应的笔画宽度构成矩阵A,即为笔画宽度矩阵。

2 算法设计

针对芯片图像中存在的亮度不均匀和字符大小不一等问题,Otsu算法二值化效果较差,而经典的Sauvola算法并未考虑全局情况,容易产生过分割效应和伪影[15],且需要手动调参,因此可将全局与局部阈值算法进行结合,兼顾考虑全局和局部特性,利用全局信息来优化局部阈值[16],并根据SWT算法和自适应参数得到最终的自适应混合阈值。

2.1 局部自适应阈值

在经典的Sauvola算法中,窗口大小和修正参数k这两个参数都是固定的,因此对特定的芯片图像,需要手动设置它们的最佳值,而实际工程中不可能对所有的图像都手动计算和设置这些参数值,存在一定局限性。

针对Sauvola算法中存在的问题,本文对其局部阈值公式进行了改进,提出一种新的局部自适应阈值算法,可根据SWT算法得到的笔画宽度矩阵A来自适应地计算每个像素点对应的窗口大小W,如式(3)所示。

W(i,j)=2×A(i,j)+29

(3)

再根据计算出的每一像素点的窗口大小,由式(4)计算其相应的局部阈值Tw。

(4)

式中:Sw是局部窗口内像素的标准差;mw是局部窗口内像素的平均值;K是自适应参数。为了避免手动设置参数,根据局部阈值算法的特性引入了窗口内像素的标准差来计算其K值,如式(5)所示。

(5)

式中:α为相应的修正因子,根据实验表明,当α=0.75时,二值化效果最好。

2.2 混合阈值

本文结合了Otsu全局阈值Tg和局部自适应阈值Tw,对其加权后得到了最终的自适应混合阈值,其具体计算过程如下:首先计算整幅图像的灰度均值m,让每个像素点的灰度值与之比较,小于m的归为m1类,大于等于m的归为m2类,分别计算这两类的灰度均值T1、T2。然后利用权值参数对全局阈值Tg和每一像素点的局部阈值Tw进行加权,并根据灰度均值T1、T2对其范围进行约束,最后得到每一像素点的自适应混合阈值T,其计算公式如下:

(6)

式中:权值参数在区间(0,1)内,经实验证明,当β=0.2时,算法二值化效果最佳。

2.3 本文算法框架

本文算法的流程如图2所示。

图2 算法流程

对应的算法具体步骤如下:

1) 对原始灰度图像进行中值滤波,减少噪声干扰。

2) 利用对比度增强算法,增强图像对比度,以便取得更好的二值化效果。

3) 利用经典的Otsu算法求出图像的全局阈值Tg。

4) 利用SWT算法,计算出每个像素点对应的笔画宽度,然后自适应地计算每个像素对应的窗口宽度。

5) 根据式(4)和式(5)求取每一点自适应参数K值及局部阈值Tw。

6) 根据式(6)求取每一点的混合阈值T。

7) 根据混合阈值T对图像进行二值化,图像中像素的灰度值小于T的,则判定为目标,将像素灰度值设为0;反之则判定为背景,像素灰度值设为255。

3 实验结果与分析

3.1 评估指标

为了更好地评估二值化的质量,检验二值化后的图像和真实图像之间的相似度,本文计划采用以下度量指标:精确度PR(Precision)、召回率RC(Recall)、F度量指标(FM)、峰值信噪比(PSNR)和距离倒数失真度量指标(DRD)。

精确度PR(Precision)和召回率RC(Recall)是常用的图像二值化质量评估指标,PR是指二值化图像中正确目标点与所有目标点的比值,RC是指二值化图像中正确目标点与原图中所有目标点的比值[17]。PR和RC的值越大,二值化的效果越好,其计算公式如下:

(7)

式中:NTT是二值化图像中正确目标点的数量;NFT是二值化图像中错误目标点的数量;NFNT是原图中错误目标点的数量。

F度量指标(FM)结合了精确度PR和召回率RC,能够综合考量所得二值化图像与理想二进值化图像之间的差距,其值越大,二值化效果越好[17],其计算公式如下:

(8)

PSNR主要用于表征二值化图像的含噪情况,这里噪声是指被错误二值化的像素,PSNR的值越高,二值化图像噪声越少[18],其计算公式如下:

(9)

式中:D是图像的对比度,二值化图像对应的D值为1;M、N分别是图像的高度和宽度;IB(i,j)和IGT(i,j)分别对应为二值化图像和理想二值化图像的像素点。

DRD用于评估二进制图像的视觉失真,其值越小,失真越少,二值化效果越好[19],其计算公式如下:

(10)

式中:NUBN是图像中非均匀8×8块的数量;DRDk为每一像素的距离倒数失真。

3.2 结果对比分析

为了衡量本文算法的性能,将本文方法分别与Otsu算法[4]、Niblack算法[8]和Sauvola算法[9]等三种经典二值化算法进行了比较。使用了标准二值化数据集DIBCO2013[20],并对数据集添加随机的不均匀的光照影响,且对每种算法进行了参数调优,数据集中的一个例图的对比结果如图3所示;对数据集16幅图像进行二值化,取结果的均值,其结果如表1所示。可以看到,对于光照不均匀和存在暗影污渍的图像,由于改进了阈值公式以及引进了基于笔画宽度变换的窗口自适应算法,本文算法的二值化效果最好,其五个评估指标的性能也是最好的。而Sauvola算法因为不能根据图像特性自适应地调节窗口大小,边缘区域的二值化效果没有本文算法好,各项指标的效果评估也都低于本文算法。Niblack算法对边缘强光区域二值化效果较差,且存在较多伪影,Otsu算法因为对不均匀光照比较敏感,导致了文本区域和强光区域的阈值不准确,出现了较大面积的误判,二值化效果较差,这两种算法的召回率RC、精确率PR、DRD的表现也较差。

(a) 原图像 (b) 灰度图像

(c) Otsu二值化结果 (d) Niblack二值化结果

(e) Sauvola二值化结果 (f) 本文方法二值化结果图3 光照不均匀文档图像二值化对比

表1 四种算法性能指标对比

为了对比本文算法在实际场景中对芯片图像二值化效果,选取了几个常见的光照不均匀场景和字符大小不一的芯片图像进行了实验。实验结果图像如图4、图5和图6所示,可以看到,因为不均匀光照的影响,芯片图像的某些背景区域的灰度和文本的灰度相近,使用全局阈值的Otsu出现了较为严重的背景错误二值化的现象。而Niblack算法对于芯片字符的目标信息保留得不错,但是出现了过分割效应,产生了大量的伪影,图5(d)的最为严重。Sauvola算法优于Otsu算法和Niblack算法,但是产生的噪点还是比本文方法多。本文算法的二值化效果是最好的,对于目标信息的保留最为完整,只存在少量伪影,对于后续的字符识别影响不大。在图5和图6这两幅字符大小不一的图像中,本文算法对于字符的二值化效果最好,字符轮廓更加清晰,周围粘连的噪点更少,最贴近真实图像,其他三种算法都出现一定的问题,存在字符不完整、不清晰的情况。

(a) 原图像 (b) 灰度图像

(c) Otsu二值化结果(d) Niblack二值化结果

(e) Sauvola二值化结果(f) 本文方法二值化结果图4 边角光照不均匀图像二值化对比

(a) 原图像 (b) 灰度图像

(c) Otsu二值化结果(d) Niblack二值化结果

(e) Sauvola二值化结果(f) 本文方法二值化结果图5 中心低亮度及字符大小不一图像二值化对比

(a) 原图像 b) 灰度图像

(c) Otsu二值化结果(d) Niblack二值化结果

(e) Sauvola二值化结果(f) 本文方法二值化结果图6 中心高亮度及字符大小不一图像二值化对比

4 结 语

针对获取的芯片图像中存在亮度不均匀和字符大小不一等问题,本文提出一种自适应混合阈值二值化算法,将全局阈值算法和局部阈值算法相结合,使用全局信息来优化局部阈值;利用笔画宽度变换获取字符宽度并由此得到自适应的窗口大小,结合自适应参数得到混合阈值,避免了手调参数,提高了效率。实验结果表明,相比其他三种常用算法,本文算法的各项评估指标均优于它们,且二值化效果最佳,存在的伪影较少,字符轮廓更加清晰,对于目标信息的保留最为完整。目前本文算法的改进可以基于以下两个方面进行考虑:1) 继续改进算法,减少伪影的产生;2) 加入了笔画宽度变换,导致运算时间增长,因此需要提高运算速率。

猜你喜欢
字符像素点笔画
基于局部相似性的特征匹配筛选算法
笔画相同 长短各异
——识记“己”“已”“巳”
有趣的一笔画
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
HBM电子称与西门子S7-200系列PLC自由口通讯
基于5×5邻域像素点相关性的划痕修复算法
找不同
基于canvas的前端数据加密