摘要:在复杂背景下,QR(QR)码区定位一直是QR码2D条形码解码过程的挑战之一。

二维码区域扫描定位是通过二维码的图形特点来实现,其存在扫描定位效率较低的缺点。为此提出在扫描定位之前通过图像处理结合BP神经网络实现QR Code二维码条码区域提取方法。火车票通过图像预处理得到可能是二维码的区域块,提取经图像处理后的二维码区域块图像特征并结合BP神经网络过滤出正确的二维码区域。此方法实现了寻找一幅图像中二维码区域的图像,结合二维码图形扫描定位方法,提高了二维码扫描定位的效率,得到了较好的效果。

0 引言

随着信息技术的发展,二维条码技术在我国的应用越来越广泛。QR Code二维码是由按特定规则排列的正方形模块阵列组成,其符号形状为正方形。在符号的三个角上各有一个独特的位置探测图形,协助确定符号的位置、尺寸及符号与识读参考坐标的倾斜角度[1]。QR Code二维码具有信息量大、可靠性高、超高速全方位识读、高效汉字表示等优点。目前的二维条码的识读器主要分为两类,一类是激光读取,一类是图像读取。激光读取方式因为受限于条码的制式,其发展空间越变越小。而图像读取方式则因其二维信息的获取优势,并可以脱离专用识读器,因此其发展的空间很大[2]。但是二维码在图像扫描定位之前,由于受到扫描区域大小的影响,扫描区域面积大,系统识读之前需要花大量的时间扫描整幅图像的各个区域,造成了系统扫描时间长、效率低的问题。针对这个问题,本文提出了二维码图像定位识别预处理,可以快速找到二维码区域,以便系统更快、更高效地识读二维码。

1 系统控制原理

本系统主要通过BP神经网络将图像处理后含有干扰信号的区域滤掉,过滤出比较正确的二维码图像区域信息,系统实验流程图如图1所示。

2 图像预处理

火车票图像处理主要目的有两个:一个是滤掉干扰信号,另一个是得到二维码区域块。需要解决的问题是对其进行正确的二值化处理和矩形框的开闭运算。

2.1 图像增强

图像增强是按特定的需要将图像中感兴趣的特征有选择地突出出来,衰减不需要的特征,提高图像的可懂度。图像增强不考虑图像降质的原因,而且改善后的图像也不一定逼近原图像,这是它与图像复原的本质区别。因此图像增强的主要目的有两个:一是改善图像的视觉效果,提高图像的清晰度;二是将图像转换成一种更适合人类或机器进行分析处理的形式,从图像中获取更多有用的信息。

图像增强方法大致分为两类:一类是空间域处理法,另一类是频域处理法。空间域是直接对图像的像素进行处理,基本上是以灰度映射变换为基础,所用的映射变换取决于图像的特点和增强的目的,主要包括灰度修正、图像平滑和锐化等。频域处理法是在图像的某种变换域内,对变换后的系数进行运算,然后再求其反变换到原来的空间域得到增强的图像,主要包括:低通滤波、高通滤波、带阻滤波、同态滤波等。因此,根据设计的要求,本系统采用空间域处理法,通过像素的处理有选择地突出二维码区域。本系统首先通过imadjust函数增强图像,再通过strel和imopen两个函数得到背景图像,最后将增强图像和背景图像相减得到增强后突出的图像。如图2和图3所示。

2.2 图像矩形框开闭运算

本系统采用了形态学运算中开运算和闭运算方法过滤,得到可能为二维码的区域,在系统进行开运算和闭运算之前,滤除火车票背景的干扰图像并用Canny算子识别强度图像中的边界。Canny算子是比较经典的且应用广泛的边缘检测算法。滤除火车票外部背景且将感兴趣的二维码区域图像增强了,但是火车票上面的干扰字也会随着增强。滤除背景图像效果如图4所示,Canny边缘检测效果如图5所示。

对图像进行形态学运算中的开运算和闭运算之前,首先得了解形态学运算中的腐蚀和膨胀[3]。

(1)腐蚀是一种消除边界点、使边界向内部收缩的过程,可以用来消除小且无意义的物体。腐蚀的算法:用3×3的结构元素,扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”操作,如果都为1,则结果图像的该像素为1,否则为0,使二值图像减小一圈。

(2)膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程,可以用来填补物体中的空洞。膨胀的算法:用3×3的结构元素,扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”操作,如果都为0,则结果图像的该像素为0,否则为1,使二值图像扩大一圈。

然而,二值图像开运算和闭运算是通过腐蚀和膨胀定义的。因此,二值图像先腐蚀后膨胀的过程称为开运算,用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积;二值图像先膨胀后腐蚀的过程称为闭运算,用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。火车票图像经过一次闭运算和两次开运算之后就能得到长方形状的区域如图6所示,每个区域块可能是二维码,也可能是干扰区域。因此,通过BP神经网络将干扰区域滤除掉,即可得到想要的二维码区域。

3 BP神经网络

BP(Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始地进行信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程。此过程一直进行到网络输出的误差减小到可以接受的程度,或者达到预先设定的学习次数为止。BP神经网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型[4]。

(1)节点输出模型

隐节点输出模型:

输出节点输出模型:

f为非线性作用函数;θ为神经单元阈值。

(2)作用函数模型

作用函数是反映下层输入对上层节点刺激脉冲强度的函数,又称刺激函数,一般为在(0,1)内连续取值的Sigmoid函数:

f(x)=1/(1+e-x)(3)

(3)误差计算模型

误差计算模型是反映神经网络期望输出与计算输出之间误差大小的函数:

Tpi为i节点的期望输出值;Opi为i节点计算输出值。

(4)自学习模型

神经网络的学习过程,即连接下层节点和上层节点之间的权重矩阵Wij的设定和误差修正过程。BP网络中,有师学习方式需要设定期望值,无师学习方式则只需输入模式。自学习模型为:

h为学习因子;Фi为输出节点i的计算误差;Oj为输出节点j的计算输出;a为动量因子。

神经网络需要有一定量的历史数据,通过历史数据的训练,网络可以学习到数据中隐含的知识。在需要解决的问题中,首先要找到某些问题的一些特征,以及对应的评价数据,用这些数据来训练神经网络。

3.1 二维码图像的特征提取

在神经网络中,特征提取是至关重要的一部分。如果特征向量太多,则需要对特征向量进行降维处理。本系统的特征向量提取方法是直接采集图像特征值,通过图像处理得到正确的二维码区域块,并将二维码区域块的面积、周长、长宽之比、像素点、偏心率等作为图像特征的向量。系统中的特征提取样本图片来源于百度网页图片,图像的光照强度都不同,对于研究比较苛刻,因此增大了图像处理和特征提取的难度,并会对神经网络的识别率造成影响。系统中的特征向量被存放在EXCEL文档中,主要包含了图像面积与周长之比、长宽之比、偏心率三个特征向量。

3.2 BP神经网络的建立[4]

MATLAB神经网络工具箱提供函数newff来创建一个前向型BP神经网络。其常用的调用格式为:

net=newff(P,T,[S1S2…S(N-1),{TF1 TF2...TF(N)})

其中,P,T分别为输入样本和期望响应;Si为网络各层的神经元数目;TFi为网络各层的传递函数类型。

本系统采用上述newff创建一个前向型BP神经网络,网络中间隐层采用logsig函数,输出层采用purelin函数,对应的训练函数采用trainlm。建立前向型BP神经网络结构:

net=newff(minmax(P),[2,1],{‘logsig’,‘purelin’},‘trainlm’)

BP神经网络采用两层神经元构成,其模型如图7所示,BP神经网络训练过程及训练状态分别如图8、图9所示。

3.3 BP神经网络样本测试

将测试样本通过sim函数输入到神经网络进行测试,并将输出结果和期望值、输出预测误差显示出来,并提供结果分析,其结果如图10、图11和图12所示。

样本测试结果表明,系统输出和期望输出出现的误差变化较小,出错率低,可以实现经图像处理输出的二维码区域块的滤波,得到本系统所需的二维码区域。实验样本数据较少,都是通过人工实验提取出来的样本数据,这样不能完全反映出整体现象,但是足以证明实验结果是可行的。

4 结论与展望

本系统的构思来源于图像处理中图像分割最大连通域。起初由于出发点出现错误,走了很多的弯路,二维码区域是分散的,不是封闭连通的,因此导致了无法计算出最大连通域。最后通过图像的开运算和闭运算得到了很好的效果。此方法既实用又方便,可以得到物体的轮廓和骨架等信息。当然系统存在很多的不足,比如图像的像素不同提取出来的二维码质量也不尽相同,这是当前无法解决的问题,需要不断的改进。此系统结合BP神经网络过滤出二维码区域相对于基于Gabor滤波器和BP神经网络二维码区域提取算法较为简单,提高了运算速度并节省了运算时间,Gabor滤波器需要对图像的每个像素点进行40维滤波处理,因此消耗了大量的时间进行计算,导致计算周期长的缺点[5]。最后希望能够选择更好的图像处理算法,选择更加合适的神经网络算法解决上述问题。

参考文献

[1] 肖翔,刘晓明,王云柯.QR码图像的矫正与定位方法研究[J].计算机科学,2007,34(11):217-219.

[2] 张然,朱虹,张瞳,等.一种低质量QR Code二维码图像的预处理方法[J].计算机科学,2008,35(4):146-148.

[3] 耿帅.基于数学形态学的图像去噪[D].济南:山东师范大学,2012:17-31.

[4] 朱凯,王正林.精通MATLAB神经网络[M].北京:电子工业出版社,2009:193-224.

[5] 杨兆远,吴佳鹏,白卓夫,等.基于Gabor滤波器和BP神经网络的二维条码区域提取[J].天津大学学报,2010,43(3):210-214.

1.《matlab神经网络如何加入功能层》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《matlab神经网络如何加入功能层》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3215093.html