基于光照影响因子的动态Niblack算法研究及应用

2022-04-21 07:23魏兴凯傅呈勋
计算机工程与设计 2022年4期
关键词:二值板面邻域

魏兴凯,蒋 峥,傅呈勋,刘 斌

(1.武汉科技大学 冶金自动化与检测技术教育部工程研究中心,湖北 武汉 430080;2.武汉科技大学 信息科学与工程学院,湖北 武汉 430080;3.湖南湘钢工程技术有限公司 智能制造部,湖南 湘潭 411100)

0 引 言

在钢板的生产过程中,为了规范信息管理,企业会将钢板尺寸和板号等信息喷印在每一块钢板上。而钢铁企业更希望采用机器识别技术以消除人工操作带来的弊端,其中关键的一步就是钢板字符图像的二值化。

二值化是以一定的规则将灰度图像分成背景和前景两个部分,常用的方法有全局阈值法和局部阈值法[1]。其中,全局阈值法简单快捷,但对光照不均匀、噪声干扰较大的图像处理效果不佳[2];局部阈值法通过邻域像素分布自动调节阈值,但速度慢、容易出现伪影和笔画断裂现象[3]。

国内外不少研究人员对二值化算法进行了研究,有了很多的成果。冯炎[4]基于对比度归一化的方法提出了一种历史文档图像二值化算法。王康维等[5]提出了一种快速二值化方法来解决低亮度下非均匀光照文档图片的二值化问题。熊炜等[6]采用增广路算法求得最优二值图像。卢迪等[7]首先利用四叉树原理自适应划分区域,再确定局部阈值。Mustafa等[8]基于局部最大阈值法对Sauvola算法进行优化改进;Zemouri等[9]利用k-means聚类将像素映射到前景或背景;Luo Wei等[10]则通过邻域窗口内灰度值的均值、标准差和极值来计算阈值,取得了较好的效果。

以上方法都有各自的特点和优势,但均不适用于本文的光照不均匀、字符拖尾的钢板喷印图像。本文针对某钢企五米板面喷图像存在的光照不均匀、字符拖尾等问题,提出了一种基于光照影响因子的动态Niblack算法。

1 Niblack算法

对图像每个像素点,Niblack算法使用式(1)来计算每个点的灰度阈值

T(x,y)=m(x,y)+a×s(x,y)

(1)

其中,T(x,y)为点(x,y)的灰度阈值,若点(x,y)处的灰度值大于T(x,y),则将其在二值图像上对应位置设置为白色(灰度值为255),否则将其在二值图像上对应位置设置为黑色(灰度值为0)。m(x,y)和s(x,y)分别为点(x,y)邻域内所有点的灰度均值和标准差,邻域窗口大小为w×w(w为根据经验值进行选取),a为以经验值预先设定的修正系数,其取值范围为(0,1)。

Niblack算法的阈值由考察点邻域的灰度确定,强调二值化阈值随区域变化而动态调整,对容易受光源影响的图像和字符灰度变化较大的图像,有比较好的适应性。但是Niblack算法以式(1)计算考察点的阈值,当邻域窗口内像素绝大部分为目标(或背景)点,而目标(或背景)灰度又不均匀时,大量目标点(或背景点)被强行二值化为背景点(或目标点),从而易出现笔画断裂及伪影现象。同时,Niblack算法通过逐点计算确定阈值,计算量较大,会导致运算速度较慢。

2 动态Niblack算法

2.1 问题分析

(1)某钢企五米板面喷图像的采集过程中,用单个相机采集完整字符区域图像。由于字符区域较宽,使用单个光源且光源位置不理想的情况造成了五米板面喷图像光照不均匀的问题;其它干扰光照的影响也使得一些背景区域灰度值接近于目标区域灰度值。具体情况如图1所示。

图1 五米板面喷字符图像

(2)喷印设备陈旧,造成钢板表面字符印刷质量不稳定,字符经常出现拖尾现象。拖尾部分的灰度值,小于目标区域的灰度值,但是相对于背景区域的灰度值又是不可忽略的,在进行二值化的时候很容易被判定为目标区域。另外,一些字符的局部印刷淡、光照差,增加了二值化的难度。具体情况如图2所示。以上的印刷质量不稳定问题,进一步提高了钢板表面字符识别的难度。

图2 五米板面喷缺陷

2.2 邻域窗口大小选择

Bolan Su等[11]通过计算水平方向上两个相邻的笔画边缘像素之间出现频率最高的像素距离,来估计笔画宽度。为了保证邻域窗口能够完全覆盖笔画边缘像素点,将邻域窗口的宽和高设置为稍大于笔画宽度,本文借鉴Bolan Su等的方法确定邻域窗口大小。

首先选取20张图片清晰、字符完整、噪声少的五米板面喷图片,并手动选定每张图片的最优阈值进行二值化,再以行为单位从上到下对20张二值化图片进行扫描,统计得到两个相邻笔画边缘像素之间出现频率最高的像素距离为14,最终确定邻域窗口大小为15×15像素。

2.3 具有光照强度项和动态系数的Niblack算法

2.3.1 光照强度项的引入

给定图3中的五米板面喷原图,采用Niblack算法,修正系数a取为0.8时,得到图4中的二值化图。对比图3和图4可知Niblack算法引入了大量噪声,大量的背景点被误判为目标点。通过尝试a在(0,1)范围内的不同取值,均不能得到更好的效果。但是,采用Niblack算法,目标点被误判为背景点的情况相对较少,保留了较为完整的字符轮廓。

图3 五米板面喷原图

图4 图3经Niblack算法得到的二值化图像(a=0.8)

为了增强Niblack算法的二值化效果,使Niblack算法能更好应对光照不均匀的情况,在式(1)的阈值公式中引入了一项关于光照强度的阈值调节项,得到了点(x,y)的灰度阈值计算公式,如式(2)所示

T(x,y)=m(x,y)+k1×s(x,y)+k2×d(x,y)

(2)

其中,T(x,y)为点(x,y)的灰度阈值,m(x,y)和s(x,y)分别为点(x,y)邻域内所有点的灰度均值和标准差;d(x,y)为开运算得到的点(x,y)的光照强度;k1、k2为相关项常系数,取值范围为(0,1)。

图像的预处理中,顶帽算法将原图像开运算之后的图像近似看作原图像的光照分布图,用原图像减去其光照分布图得到了光照均匀的图像。本文借鉴顶帽算法的思想,通过图像开运算来近似得到像素点(x,y)的光照强度d(x,y)。邻域窗口大小设置与二值化的邻域窗口大小相同。

采用式(2)中改进的阈值公式对图3进行二值化处理,得到图5。

图5 图3经改进的Niblack算法得到的二值化图像

(k1=0.2,k2=0.25)

对比图3、图4和图5,可看出,通过在灰度阈值公式中引入光照强度项,降低了二值化图像噪声。同时,仍然能保证完整保留的字符轮廓。原因在于改进的Niblack算法引入光照强度项d(x,y)明显减少了背景点的误判。

光照强度项系数k2的选取对目标点和背景点的误判率有影响。k2偏大时,背景点的误判较少,同时目标点的误判较多;k2偏小时,背景点的误判较多,同时目标点的误判较少。所以,需要选取合适的k2值来进一步优化二值化效果。

2.3.2k1、k2的动态调整

2.3.2.1k1、k2和光照影响因子k的定义

由图5可知新的阈值公式提升了图像二值化的效果,但是常数系数使得算法适应性较差,需要根据不同图片的具体情况对k1、k2的值进行调整,使式(2)中的阈值公式能够适应复杂环境下的五米板面喷图像,因此本文引入光照影响因子k,定义如式(3)所示

k=d(x,y)/(g(x,y)+β)(0

(3)

其中,g(x,y)为点(x,y)的灰度值,d(x,y)为开运算得到的点(x,y)的光照强度,β为常数调节因子,避免分母为零。而g(x,y)为[0,255]之间的整数,为了减少对k值的影响,在实际操作中取β=0.01。

并对k1、k2做如式(4)所示的调整

k1=km,k2=kn

(4)

其中,m、n为常数,取值依具体图片类型而定。

开运算是对图像先腐蚀再膨胀。以图6为例,灰色窗口是以p1像素为中心的3×3大小的邻域窗口。原图6(a)中,p1-p9处的灰度值分别为g1-g9;腐蚀图6(b)中,p1-p9处的灰度值分别为gf1-gf9;开运算图6(c)中,p1处的灰度值为gk1。

对原图6(a)进行腐蚀操作得腐蚀图6(b)。腐蚀图6(b)上一个像素点处的灰度值由原图6(a)上对应像素点的邻域窗口内灰度最小值得到,所以有gf1=min(g1,g2,…,g9)。原图6(a)中p1的邻域窗口以及分别以p1的邻域像素p2-p9为中心的邻域窗口都包含p1,所以腐蚀图6(b)上p1-p9处的灰度值gf1-gf9必然小于等于g1,即

图6 开运算图例

max(gf1,gf2,…,gf9)≤g1

(5)

对腐蚀图6(b)进行膨胀操作得开运算图6(c)。开运算图6(c)上的一个像素点处的灰度值由腐蚀图6(b)上对应像素点的邻域窗口内灰度最大值得到,所以有

gk1=max(gf1,gf2,…,gf9)

(6)

综合式(5)和式(6)可知,gk1≤g1,即开运算得出的像素点的光照强度值小于等于其在原图中的灰度值。对应式(3)可以得到,d(x,y)≤g(x,y),从而保证式(3)中0

2.3.2.2 光照影响因子k定义的合理性分析

当邻域窗口位于背景区,为了减少背景点的误判,k1、k2应取较大值,所以k也应该取较大值。当邻域窗口位于字符区,为了减少目标点的误判,k1、k2应该取较小值,所以k也应该相应减小。

在式(3)中,我们定义k=d(x,y)/(g(x,y)+β)。在背景区时,邻域窗口内像素灰度均匀,所以d(x,y)与g(x,y)相等或相近,此时k接近于1,k1、k2取得较大值,从而保证背景点误判少;在字符区时,由于邻域窗口长和宽都大于字符宽度,以点(x,y)的邻域像素为中心的邻域窗口都会包含一部分背景像素,所以腐蚀图上点(x,y)的邻域窗口内各像素的灰度值与原图背景灰度值接近,再经过膨胀得到的点(x,y)的光照强度d(x,y)也与原图背景灰度值接近,此时k较小,k1、k2取得较小值,从而保证目标点误判少。

综上,选择k=d(x,y)/(g(x,y)+β)为k1、k2的底数,与k1、k2的大小变化需求一致,是合理的。

基于对光照影响因子k和k1、k2的定义,式(2)中的灰度阈值转化为如下形式

T(x,y)=m(x,y)+km×s(x,y)+kn×d(x,y)

(7)

其中,k=d(x,y)/(g(x,y)+β)(0

以改进的式(7)作为灰度动态阈值,对图3进行处理得图7。参数调节过程中,可以先令m=n,然后再调整m、n的值,使动态Niblack算法得到更好的二值化效果。通过对m、n的参数调试得到,m=n=4时二值化图效果较好。相对于图5,图7的背景点误判以及目标点误判都明显减少,从实验角度验证了设计k=d(x,y)/(g(x,y)+β)为k1、k2的底数的合理性。

图7 引入光照影响因子的动态Niblack算法二值化图

2.3.3 灰度阈值的全局化修正

2.3.3.1 Otsu算法原理

对于一幅图像,目标和背景的分割阈值记作T1,属于目标的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;属于背景的像素点数占整幅图像的比例为ω1,其平均灰度为μ1。类间方差记为g,且类间方差如式(8)所示

g=ω0ω1(μ0-μ1)2

(8)

其中,图像的大小为M×N,图像中像素的灰度值小于阈值T1的像素个数记作N0,像素灰度大于阈值T1的像素个数记作N1,并有ω0=N0/(M×N),ω1=N1/(M×N),N0+N1=M×N。

采用遍历的方法得到的使类间方差g最大的阈值T1即为Otsu算法得到的分割阈值。

2.3.3.2 阈值全局化修正

本文前述内容对Niblack算法的灰度阈值增加了光照强度项,并对各项系数进行了动态调整。所做改进使得原Niblack算法造成的大量伪目标点得到正确的判定,保留了字符的大致样貌。然而,所采用的是局部二值化方法,不可避免地忽略了图像局部之间的联系,使得字符局部不连贯。而全局二值化算法Otsu在光照不均匀时对光照差的字符区域二值化效果较差,但是对光照良好的区域可以有效地保证字符信息连贯。

因此本文利用Otsu中的全局阈值,对式(7)中的灰度阈值进行进一步修正。先由Otsu得到一个全局阈值T1,对图像中灰度值大于此阈值的像素使用全局阈值T1进行二值化,对于灰度值小于此阈值的像素点使用式(7)中的灰度阈值进行二值化,从而得到式(9)中的全局化修正后的动态Niblack灰度阈值

T(x,y)=

(9)

其中,T(x,y)为点(x,y)的灰度阈值,T1为Otsu得到的全局阈值,g(x,y)为点(x,y)的灰度值。其它变量定义与式(3)、式(4)和式(7)中相同。

采用式(9)中的阈值公式,吸取了局部二值化方法和全局二值化方法的长处,降低了光照不均匀的影响,同时提升了字符局部的连贯性。在解决全局阈值分割法亮度分布不均的问题的同时,也能解决局部阈值分割法抗噪声性能差的问题。

图8(a)、图8(b)和图8(c)分别为对图3使用Otsu算法的二值化图、对图3使用式(7)进行二值化的未进行全局化修正的动态Niblack二值化图和对图3使用式(9)进行二值化的全局化修正的动态Niblack二值化图。图8(a)、图8(b)、图8(c)的对比可知,全局化修正的动态Niblack二值化在光照差的区域效果远好于Otsu算法,局部字符信息也比未进行全局化修正的动态Niblack算法更连贯。

图8 3种算法的对比

3 实验结果与分析

本文的五米板面喷图像,由于没有对应的标定(ground truth,GT)图像,能比较的性能指标少,为了保证实验的充分性,先测试本文算法在有GT图像的低质量文档图像集上的性能,再测试本文算法在五米板面喷图像上的性能。

3.1 低质量文档图像实验

选取国际文档图像二值化竞赛(document image binarization competition,DIBCO)提供的低质量文档图像集作为测试样例,包括20张印刷体低质量文档图像及其对应的标定(GT)图像,并采用均方误差(mean square error,MSE)、峰值信噪比(peak signal to noise ratio,PSNR)、结构相似度(structural similarity,SSIM)3个性能指标进行算法评估。

其中,MSE表示当前图像X和参考图像Y的均方误差,数值越小表明当前图像质量越好;PSNR是一个衡量图像失真或是噪声水平的客观标准,数值越大表示当前图像失真越小;SSIM也是一种全参考的图像质量评价指标,它分别从亮度、对比度、结构三方面度量图像相似性,取值范围为[0, 1],值越大,表示当前图像失真越小。

对于低质量文档图像集的每张图片,Niblack算法、Sauvola算法和文献[10]的算法中的修正系数都是通过实验选择的最优值。而对于整个低质量文档图像集,本文算法中的m、n选定为m=n=1。

表1为各算法的性能评估结果,可看出本文算法的3个性能指标值都好于其它算法。而图9关于各算法的低质量文档图像二值化效果对比也可看出,本文算法引入了最少的噪声。所以本文算法在低质量文档图像集上得到的二值化图像质量最好,验证了本文算法的有效性和适用性。

表1 算法评估的数值结果(平均值)

图9 低质量文档图像的二值化效果对比

3.2 五米板面喷图像实验

本实验选取两张五米板面喷图像(1号图像大小为1630×350,如图10(a)所示;2号图像大小为1830×350,如图11(a)所示)分别采用Otsu算法、Niblack算法、Sauvola算法、文献[10]提出的算法和本文所提出的动态Niblack方法进行实验对比,实验在CPU为Intel(R)Core(TM)i5-8300H 2.30 GHz的台式机上进行,编译软件为Visual Studio 2013。

图10 1号五米板面喷图像的二值化效果对比

图11 2号五米板面喷图像的二值化效果对比

由图10和图11可以看出,对于字符拖尾,Otsu算法的处理效果明显,本文算法的效果次之,其它算法的处理效果不够理想;对于在光照不均匀时处于暗区的字符,Otsu算法的处理效果极差,本文算法的处理效果最好,其它算法都将暗区字符清晰呈现;对于噪声,Otsu算法引入噪声最少,但也丢失了很多字符细节,Niblack算法引入噪声最多,但字符细节保留较好,本文算法则引入了较少的噪声,字符细节保留较好。

总体来看,Niblack算法表现最差,Sauvola算法和文献[10]的算法虽然都比Otsu算法和Niblack算法表现好,字符能够清晰呈现,但还是引入了一些零散的噪声,字符拖尾的处理效果也不够好;而本文的动态Niblack算法在字符拖尾和引入噪声方面的效果稍差于Otsu,但优于其它算法,在字符局部细节上也比其它更完整,整体表现明显优于其它算法。

在算法花费时间上,由表2可以看出Otsu花费时间极少,文献[10]花费时间最多,而本文算法的花费时间比Niblack算法和Sauvola多0.1 s左右,是可接受的。

表2 算法花费时间对比

4 结束语

本文主要工作是对五米板面喷图像进行二值化处理。针对五米板面喷图像的光照不均匀以及印刷造成的拖尾等问题,提出一种基于光照影响因子的动态Niblack二值化算法。在Niblack算法的基础上,引入光照强度作为灰度阈值的第三决策项,并为各项定义动态系数,从而保证背景点和目标点的正确判定。另外,利用Otsu算法中的全局阈值对动态阈值公式进行修正,兼顾全局化和局部化二值化方法的优势,增强了二值化方法的抗噪性能。通过与几种常用算法的对比,本文的算法整体表现好于其它算法,同时计算时间成本也在可接受范围内。本文算法应用于企业实际五米板面喷字符辨识,得到了良好的效果。

本文算法引入光照强度项和光照影响因子以及使用全局阈值对动态阈值进行修正,虽然都是为了增强本文算法性能,但也使得本文算法相对于其它的经典二值化算法更为复杂,处理时间更长;依旧引入了一些噪声,个别字符的二值化效果相对较差;式(9)中的m和n需要根据具体的图片类型确定,有一定的局限性。下一步的研究方向就是使二值化方法拥有Otsu对拖尾的优点,又可以将局部光照差的字符区域正确二值化,同时降低算法的时间复杂度。

猜你喜欢
二值板面邻域
基于混合变邻域的自动化滴灌轮灌分组算法
美味老翟板面
含例邻域逻辑的萨奎斯特对应理论
尖锐特征曲面点云模型各向异性邻域搜索
舌尖上的高三
面向网络边缘应用的新一代神经网络
基于二值图像数字水印算法研究
基于稀疏表示的二值图像超分辨率重建算法
板面的故事
基于曲率局部二值模式的深度图像手势特征提取