《武汉工程大学学报》  2009年05期 90-92   出版日期:2009-05-28   ISSN:1674-2869   CN:42-1779/TQ
基于偏微分方程的条码预处理


0引言人们日常见到商品包装上的条码,是传统的一维条码.常见的条码都是由黑条与白空(也叫白条)印制而成的.黑条对光的反射率最低,而白空对光的反射率最高[1].由于环境原因,一维条码图像往往会被引入大量噪声,给图像识别和分析带来一定困难.所以,在现实生活中,经常会碰到条码不能被条码识别软件识读的情况.经验表明在用条码识读软件识别一维条形码之前,图像预处理是非常重要的环节,其质量的好坏直接影响到后面的识别.1常用算法1.1Butterworth低通滤波 Butterworth低通滤波器去噪的理论比较简单[2],对一幅输入图像f(x,y),可将其分解为高频分量fh(x,y)和低频分量fl(x,y),如式(1)所示.
f(x,y)=fh(x,y)+fl(x,y)(1)将图像f(x,y)通过二阶Butterworth低通滤波器g(x,y)进行卷积,可得到图像的低频分量fl(x,y)如下:fl(x,y)=f(x,y)*g(x,y)
其中g(x,y) =11+[D(u,υ)/D0]2n(D0为截止频率).在图像f(x,y)中减去低频分量fl(x,y)就能得到含有噪声的高频分量:fh(x,y)=f(x,y)-fl(x,y)
1.2中值滤波中值滤波是空间域法中的一种简单的非线性信号处理技术,它被用来抑制图像中的噪声.在一维的情况下,中值滤波器是一个滑动的窗口,它含有奇数个象元.其具体方法是,用处理像素领域的n×个像素灰度值的中值(不是平均值)作为当前像素的新的灰度值,即h(i,j)=Mid{g(x+u,y+v)},例如,Mid{3,1,4,8,0,0,14,5,29}=4,因为大括号内有9个值,中值是大小顺序为第5的值,也就是4.但是类似这些滤波在消除图像噪声的同时[3],也会消除部分边缘信息.这些边缘信息的丢失可能会给后续处理带来不可估量的困难.2偏微分方程算法2.1偏微分方程背景介绍正是由于图像处理中存在的平滑和保边界细节之间的矛盾,近年来,采用偏微分方程实现图像去噪已经成为主流.偏微分方程方法能获得较好的图像质量,并在图像处理方法的合成上十分自然.比如有两个不同的图像处理方案:
u(x,y,z)t=G1(f(x,t))
u(x,y,z)t=G2(f(x,t))可以把他们合并为
u(x,y,z)t=aG1+bG2
其中a>0,b>0.如果G1和G2为对应具有最小能量E1和E2的两个EulerLagrange算子,那么aE1+bE2为合成的能量最小流.模型的合成有着实际的应用:图像光滑与边缘保护,使得同时去除噪声和保护边缘的方案得以实现.2.2Perona和Malik模型算法Perona和Malik[4]模型算法在这方面很具有代表性.其平滑过程用偏微分方程(PDE)的形式给出,通过将其化为差分格式,迭代进行数值求解.在滤波的过程中引入了边缘检测的步骤,对图像在正交于梯度方向(图像边缘方向)扩散,而在梯度方向上不扩散,目的是要在图像边缘两侧使图像尽可能平滑,而对边缘本身的平滑作用尽可能小,这样就能做到兼顾平滑和保边界两个方面.Perona和Malik提出的各向异性分布偏微分方程,其形式为u(x,y,t)t=(g(|u|)u)
u(x,y,0)=u0(x,y)t>0
其中:u(x,y,t)为t时的平滑图像;u0(x,y)为原始的灰度图像;|u|为梯度的模;系统分布函数g(|u|)用来保持图像的边缘,所以又被称为“边界停止平滑函数”.函数g(s)为非增实函数,当s→∞时,即图像边缘处的|u|比较大时,lims→∞g(s)=0,从而边缘处停止平滑.2.3基于梯度的偏微分方程算法根据Perona和Malik提出的平滑算法,如果当前有一个孤立的噪声点的像素为m,与此点相邻的其他点的像素为n,如果当这个孤立噪声点与和他相邻点的灰度值差距都很大,其梯度um,n也必然较大,那么g(um,n)相对地接近于0,扩散速度较低,不利于去除该噪声点.反之,如果当这个孤立噪声点与和他相邻点的灰度值差距较小时,虽然扩散速度增加,但它仍然仅是沿着与梯度正交的方向进行扩散,扩散效率仍然很低.因此直接采用常规的Perona和Malik平滑算法处理出来的图像对于图像的平滑效果不好.Alvarez[5]等人在Perona和Malik平滑算法基础上进行改善,提出了一种偏微分方程:
u(x,y,t)t=g(|Gσ*u|)|u|u|u|
u(x,y,0)=u0(x,y)t>0其中,高斯函数Gσ(x)=14πσexp-x24σ,σ为滤波尺度,g(|G·u|)用于控制扩散速度,实现边缘增强.设梯度方向的单位向量为η,正交于η方向的单位向量为ζ,那么在ζ-η坐标下,|u|u|u|=uζη,由此看出,|u|u|u|这项为退化扩散项,使得在边缘两侧图像尽可能的平滑,而对边缘本身平滑作用尽可能的小.第5期陈扬,等:基于偏微分方程的条码预处理
武汉工程大学学报第31卷
2.4改进的Alvarez模型算法实验证明,Alvarez模型在处理噪声方面的确能取得非常好的效果,但是,当(X,Y)领域内的灰度变化不大时,它里面不会包含重要的图像信息,这时完全只用采用各向同性的热扩散方程就能解决问题,然而扩展进程仍会按照与梯度正交的方向进行,这样就会降低扩散效率.假设将一副图像看成一个二元函数,每个像素在任何方向上都有自己的方向导数,方向导数可以反映图像灰度在该方向上的变化.比如在图像变化不剧烈的地方,由于图像灰度变化平稳,在梯度和切线方向的变化程度都不大;在图像的边缘点,图像灰度在梯度方向上变化剧烈,而在切线方向上变化平稳;噪声点一般被视为孤立点,在图像灰度各个方向上变化都很大.根据这三点情况,引入函数h(x),将原来的方程修改为
u(x,y,t)t=g(|Gσ*u|)[1-h(|u|)]
u+h(|u|)|u|u|u|
u(x,y,0)=u0(x,y)t>0
其中,h(x)为光滑非降函数.根据图像中细节的分布,可以设定一个门限E0,当x>AE0(A为大于1的常数) 时,h(x)=1,此时方程为退化扩散方程,它在与梯度正交的方向上进行平滑;当x<E0时,h(x)=0,此时方程为热扩散方程,它在各个方向上进行相同的扩散.改进后的Alvarez模型算法在平滑过程中,扩散的速度主要受该点灰度梯度的影响,因此扩散方向仅沿切线方向进行平滑,在图像的边缘部分,梯度的模比较大,而扩散的速度为非增函数,扩散速度较小,所以对于边界平直的,曲率变化较小的图像,用改进的Alvarez模型算法平滑后,可以很好的保持线条边缘.而条码图像中含有的重要信息部分全部是由白条和黑条组成,因此条码图像具有曲率变化较小的特点,完全符合改进后的Alvarez模型平滑算法的要求.3仿真结果及分析图1是将本文算法应用于一副一维条码图像中的实验结果比较,其中图1(a)是加入了高斯白噪声和椒盐噪声的一维条码图像.图1(b)是采用5×5模板的中值滤波的结果,图1(c)是采用Butterworth低通滤波的结果,从图1(b)和图1(c)中看出,虽然图像中的背景噪声大部分被去除,但是纹理也被模糊了.而在改进的Alvarez模型的平滑结果中,如图1 (d),背景噪声几乎全部滤去,比较平直的线条也保留的很好,较好的兼顾了降噪和保留边界两个方面.(a) 加噪条码图像(b) 采用5×5模板
的中值滤波结果(c) 采用Butterworth
低通滤波结果(d) 采用改进的Alvarez
模型滤波结果


图1几种条码预处理的结果比较
Fig.1The comparison of several bar code preprocessings results
4结语去除图像噪声是一维条码的预处理中相当重要的步骤.以上主要讨论了条形码识别中去除噪声的解决方法.实验结果证明,本文提出的对于带噪条码图像的预处理算法要优于其他算法.