路 阳,高慧敏
(1.太原科技大学计算机科学与技术学院,太原030024;2.嘉兴学院机电学院,浙江 嘉兴314001)
随着条码技术的发展和社会信息化的普及,在人们日常生活的许多领域都采用了条码技术,使得条码已经无处不在,随之产生的就是如何对进行条码快速有效的识别。条码在生活中的不断渗透和智能手机技术的发展,利用手机对条码进行读取识别已经成为可能,而不需要采用专业的条码识读设备,这为商品防伪等方面做出了巨大贡献。然而利用手机识别条码具有很大的局限性:采集的条码图像数据量不能过大,条码图像不能出现污损等。因此,为了条码能够得到快速有效识别,在解码前还需要对摄像头采集的条码图像进行图像预处理。
条码图像预处理影响着条码能否正确识读,是整个条码识别系统的一个核心内容之一。而条码图像的二值化是图像处理过程中的一个关键步骤,图像的二值化效果影响着条码图像后续的处理。通常我们用图像采集终端拍摄得到的是彩色的条码图像,彩色图像的存储容量和数据量大,图像处理速度缓慢,因此要对采集到的条码图像进行二值化处理。二值化是指将图像转换为灰度值只有0和255的图像,使得图像呈现出明显的黑白效果。图像二值化算法有很多,国内外也对二值化算法做了诸多改进,以求达到最佳的处理效果。本文所用的Ostu算法是一种全局二值化算法,Bernsen算法是一种局部二值化算法,它是针对Ostu算法的全局性所做的一种改进,Ostu算法是将整幅图像最为处理对象,而Bernsen算法首先要将图像分割为多个子图像,分别选取各个子图像的阈值对图像进行二值化处理。国内的王廷杰、宋建中等人在二值化原理的基础上提出实时自适应二值化算法,但该算法需要统计图像的灰度直方图,而且该统计工作需要由硬件支持来完成,增加了算法实现的成本。正常状态下的QR码图像只要根据条码图像的特性选择合适的图像算法都能达到预期的效果,但是在图像采集和传输过程中,由于采集设备或者传输通道等方面的问题会使得采集到得QR条码图像受到污损,图像质量下降。比如在复杂的光照条件下得到的QR码图像会出现不均匀光照、光异常反射,QR条码所在商品(特别是金属类)出现高光现象等,这些都会掩盖一部分的条码信息,条码图像质量严重下降。如果二值化算法对这类特殊状态下的条码图像的处理不能令人满意,将影响进一步的处理效果。现有的图像二值化算法有很多,最大类间方差算法是最常用的图像二值化算法之一,但其对于低对比度和光照不均匀的图像效果不佳,抗噪声能力差,因而应用范围受到极大限制。针对算法的这一缺点,本文提出先用改进同态滤波算法消除不均匀光照对条码图像的影响,然后使用最大类间方差算法对光照不均的QR码图像进行二值化处理。
用摄像头采集条码图像,由于光照环境或条码所在物体表面反光等原因容易造成所采集到的条码图像整体光照不均。光照不均在一定程度上影响了条码图像的本来面貌,不利于图像的进一步处理。
通过分析条码图像的灰度直方图,我们可以将光照不均问题分为下面三种:如果图像整体灰度值偏低,那么将会导致整个图像无法辨认,这种现象常在夜间图像和红外图像[1]等中常见;如果条码图像的局部灰度值偏低,而且图像动态范围大,那么将会导致条码图像信息无法提取;如果条码图像所在物体表面为金属等光滑表面,那么采集到的条码图像将有可能出现高光现象或者部分图像有可能位于高光区内。
(a)图像的整体灰度值低
由于条码图像在采集时,周围环境光照条件不理想或者图像采集终端设备本身的问题,将会导致采集到的条码图像出现整体灰度值偏低、图像对比度低的现象,那么会难以识别条码图像的目标区域,如红外图像[1]、夜间拍摄的图像。
(b)图像的局部灰度值低
如果图像中一部分获取光照不足或者图像位于阴影区域,图像的灰度直方图将会呈现灰度值较低,那么该部分图像将会与背景融合在一起,尽管与图像的其他部分对比度高,但是由于图像的动态范围扩大,原始图像中的这一部分信息将会难以提取出来。
(c)图像出现反光现象
如果条码图像位于金属光滑表面或者有弧度的物体表面,那么由于物体反光将会使得采集到的条码图像出现高光现象,如图1所示。高光现象导致提取条码图像信息困难,图像的原始面貌很大程度上改变,加大了后续图像处理的困难度。
图1 金属表面高光现象Fig.1 High optical phenomena on metal surface
图像光照不均匀是一个常见现象,因此有许多的算法可以解决这个问题。常用的解决图像光照不均问题的算法主要包括灰度变换法(直方图均衡化是灰度变换法中常用的算法之一)、基于照明—反射模型的同态滤波法、Retinex增强方法以及梯度域增强方法等。以直方图均衡化法为代表的灰度变换法将会压缩图像的动态范围,使得图像的灰度分布趋于均衡化,达到增强图像对比度的效果;这种算法的缺点是没有将图像的频率信息以及图像细节信息考虑在内,将会过度增强图像的部分信息。频域处理方法则针对图像高频和低频代表图像不同信息的特点,充分利用频率信息通过对数变换将代表图像基本原貌的低频部分与代表图像边缘信息的高频部分相分离。基于照明一反射模型的同态滤波法是典型的频率域处理算法。该算法将图像分为高频和低频两部分信息,通过低通滤波处理,使得图像对比度得到增强,同时也使得图像动态范围得到压缩[3]。Retinex图像增强方法是通过高斯平滑函数以此来估算原图像的亮度分量,然后运用光照补偿方法来近似反射图像。梯度域增强方法将图像梯度信息考虑在内,克服了频域增强方法在增强图像的同时模糊图像边缘信息的缺点,该算法是针对原图像的梯度进行处理,通过减小图像的梯度值从而达到压缩图像动态范围的目的,通过增大图像的局部梯度值来增强图像的边缘。
本文采用改进的基于照明一反射模型的同态滤波法对图像进行光照补偿。
同态滤波是典型的频率域图像光照增强方法,能够消除照度不均匀而引起的图像质量下降。图像f(x,y)可以表示为照度分量 i(x,y)与反射分量r(x,y)的乘积,即 f(x,y)=i(x,y)r(x,y)。图像的灰度由照射分量和反射分量合成。反射分量即低频信息反映图像内容,随着图像细节不同在空间上发生快速变化。与反射分量相反,照射分量即高频信息在空间上通常是缓慢变化的。空间的低频区域是照射分量的频谱所在区域,空间的高频区域则是反射分量的频谱所在区域。
传统的同态滤波算法:
传统的同态滤波需要进行两次傅里叶变换,孙贤慧、罗飞路、张玉华[2]对基于傅里叶变换的同态滤波算法进行了一些改进,提出了一种基于小波变换的同态滤波方法,采用快速小波变换代替传统的傅里叶变换,在变换域中对不同尺度上的小波变换进行非线性增强,实现图像对比度增强。不论是采用傅里叶变换还是快速小波变换,都涉及到空域与频域的转换,需要进行两次的傅里叶变换或小波变换,算法空间复杂度高,在转换处理域上花费时间。而一般的条码识别设备对条码的解码速率和实时性要求较高,针对这一缺点而提出了改进的空间域处理方法。
采用的空间域同态滤波方法不进行FFT和IFFT操作,对QR码图像进行低通滤波后,对滤波结果进行反相处理,将反相结果作为补偿模型来平衡图像的非均匀光照[9]。
(a)利用取对数的方法将入射分量和反射分量分离:
(b)因为入射光分量对应图像的低频部分,而反射光分量对应图像的高频部分,于是对g(x,y)进行低通滤波后,就能近似地将入射光分量分离出来:
(c)补偿模型
(d)光照平衡
A、B 为加权值;
(e)因为开始利用取对数将入射光和反射光分量分离,所以还要对结果做指数运算,才能得到最后结果:
图2 QR码图像同态滤波前后对比Fig.2 Effect figure of QR-Coded image homomorphic filtering
采用matlab做为算法实现工具,图2是同态滤波算法的效果图,由图2可以看出,进行同态滤波后的QR码图像的光照得到均衡。由于此时的条码图像是具有多个灰度级的灰度图像,所以同态滤波后的图像灰度级会增加,图像背景发灰,但对图像后续处理没有影响,二值化后图像将会呈现黑白分明的二值图像(如图3所示)。
QR码二值化算法即选择一个恰当的阈值,将条码与图像进行分离。现有的阈值选取法主要有两种:全局阈值法和局部阈值法。全局阈值法是根据整幅图像的像素选取阈值,局部阈值法是将图像分割为几个子图像,针对每个子图像来确定阈值[5]。直方图法、最大类间方差法[4]是常用的整体阈值选取法,常用的局部阈值选取法主要有Bernsen 法、Kaneko 法[6]、Bruckstein 法[7]和 Pietikainen法[8]。整体阈值法由于是将整幅图像作为处理对象,因此算法具有实现简单等特点,而局部阈值法由于需要首先将图像划分为若干子图像,再对每个子图像分别选取合适的阈值,算法复杂度较高。因为手机条码识别设备终端所能处理数据量有限,因此本文采用整体阈值法中的Ostu算法。
最大类间方差法的推出是基于判决分析最小二乘法原理的基础上的。其算法实现简单,是一种常用的阈值选取方法。该算法的基本思想是:假设选取的阈值将图像灰度值分割成两组,一组灰度对应目标图像,另一组灰度对应图像背景,选取的阈值使得这两组灰度值的类内方差最小,两组类间方差最大。最好的阈值应该是被所选取的阈值分开的两组的方差的加权达到最小。其中每组的加权系数就是改组的概率(其实就是该组像素数目占总像素数目的比例)[4]。对图像Image,记t为目标与背景的分割阈值,目标像素数占图像比例为ω0,平均灰度为μ0;背景像素数占图像比例为ω1,平均灰度为μ1.图像的总平均灰度为:μ =ω0(t)μ0(t)+ω1(t)μ1(t).从最小灰度值到最大灰度值遍历t,当t使得值g= ω0(μ0- μ)2+ ω1(μ1- μ)2最大时,t即为分割的最佳阈值。对大津法可作如下理解:该式实际上就是类间方差值,阈值t分割出的目标和背景两部分构成了整幅图像,而目标取值μ0,概率为ω0,背景取值 μ1,概率为 ω1,总均值为 μ,根据方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大说明构成图像的两部分差别越大,当部分目标点错分为背景或部分背景点错分为目标点都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。算法描述如下:
假设阈值t将具有L级灰度的图像划分为两类:C0∈[0,t],C1∈[t+1,L-1]。并对图像直方图进行归一化,由此可得:I,其中N为图像总像素数,ni为灰度为i的像素数。则C0和C1类出现的概率及均值分别为:
C0和C1类的类间方差为:
最佳阈值t应该使类间方差最大,即:
为了验证本文所提出方法的有效性,使用摄像头设备采集QR码图像,分辨率为640*480,分别用Ostu算法和同态滤波Ostu算法对采集到的条码图像进行二值化处理,使用Matlab编程,结果对比如图3所示。
图3 不同二值化处理方法结果对比Fig.3 Comparsion results from different algorithms of binary
从图3(a)可以看出,QR码的上半部分图像基本处于阴影区域,光线获取不足,导致条码图像部分信息被掩盖。图3(b)是直接运用Ostu算法对原始图像进行二值化后的处理结果,一部分条码信息的灰度值被彻底赋于255,条码信息无法完全提取。图3(c)是经过同态滤波后二值化的效果图,可以看出,经过对原始图像光照补偿后进行二值化,能够较好地增强被阴影遮掩的QR码图像的上半部分细节信息,保持条码图像的完整性。
采用改进的空间域同态滤波Ostu算法消除了QR码图像的不均匀光照影响,达到了增强图像的效果,利于条码图像的进一步处理。
[1]康志亮.基于小波的红外图像增强算法研究[D].成都:电子科技大学,2005.
[2]孙贤慧,罗飞路,张玉华.基于小波变换和同态滤波的内窥图像增强算法[J].探测与控制学报,2008(5):32-34.
[3]FATTAL R,LISCHINSKI D,WERMAN M.Gradient domain high dynamic range compression[C]//Proc of the 29th Annual Conference on Computer Graphica and Interactive Techniques.New York:ACM Press,2002:249-256.
[4]OSTU N.A threshold selection method from gray-level histograms[J].IEEE Transictions Oil Systems:Man and Cybernetics,1979,9(1):62-66.
[5]吕俊哲.图像二值化算法研究及其实现[J].科技情报开发与经济,2004(12):24-26.
[6]陈丹,张峰,贺贵明.一种改进的文本二值化算法[J].计算机工程,2003,29(13):85-86.
[7]YANOWITZ S D,BRUCKSTEIN A M.A new method for image segmentation[J].Computer Graphics:Vision and Image Processing,1989,46:82-95.
[8]SAUVOLA J,PIETIKAINEN M.Adaptive document image binarization[J].Pattern Recognition,2000,20(33):225-236.
[9]肖俊,宋寿鹏,丁丽娟.空域同态滤波算法研究[J].中国图像图形学报,2008,13(12):2302-2306.
[10]刘喜荣,田启川.数字图像信息安全保密方法研究[J].太原科技大学学报,2011,32(1):1-5.