APP下载

一种低复杂度的QR码解码器的图像预处理方法

2012-08-11罗小丽宁立伟姜胜利

关键词:版本号条码校正

罗小丽,宁立伟,姜胜利

(1.湖南电气职业技术学院 电气与信息工程系,湘潭411101;2.湖南工程学院 机械工程学院,湘潭411101)

0 引 言

二维条形码是在一维条码基础上发展起来的一种新型条码技术.它通过在水平和垂直的二维空间上按照一定的规律分布黑白相间的特定几何图形,来存储数据符号信息.二维条形码具有高密度、大容量、纠错能力强等特点,在物流、金融和医疗等众多领域逐渐得到了广泛应用[1,2].目前,较常用的二维条码主要有 PDF417码、DM(Data Matrix)码、Code16K和 QR 码 等[3].其 中,QR 码 (Quick Response barcode),具有容量大、纠错能力强、能有效表示汉字等优点.2009年底,我国推出的新版火车票使用了QR码,如图1所示.它将车票用户身份信息、价格和始发站、终点站等加密后编码并打印在票面,以有效地对付“黄牛党”制售假票、贩票等行为.

由于受到实际环境的采集条件和采集设备的限制,所捕获的图像通常含有较多的各类噪声和散焦、模糊等失真.这些因素直接影响了二维条码的解码和自动识别.为了有效提高二维码识别的可靠性,必须对所捕获得图像进行有效地预处理[3].目前,文献中已提出一些QR码的图像预处理技术.周利红提出利用Hough变换和双线性插值法对条码图像进行更有效的定位和旋转,得到基本的条码模块进行识读[4].刘大伟提出基于边缘检测的图像去噪方法,并讨论了它在条码识别中的应用[5].由于这类方法过分依赖于边缘检测和基于Hough变换的直线检测,当QR码图像存在较为严重的几何失真时,通常就会寻址失败.肖翔等[6]提出通过双线性变换矫正变形的条码图像,并使用条码符号特性对图像进行旋转并定向.此外,明安龙等[7]从图像复原的角度,结合散焦模糊的QR码图像的特点去除模糊效应,以提高识别率.涂丹等[8]利用QR码图像的灰度分布特点,提出了通过模糊图像的边缘响应计算得到PSF函数,再进行QR码图像恢复.它们共同的缺点是:图像复原的计算复杂度高,且本身是一个“病态”问题.

图1 新版火车票上的QR二维条形码

QR码符号是由正方形模块组成的一个正方形阵列构成,包括编码区域和功能区域(包括寻像图形、分割符、定位图形和校正图形),功能区域不用于数据编码,符号的周围为空白区.具体的QR码编码器编码规范详见文献[8].在译码过程中,必须充分利用QR码的符号组成与结构特点.QR码译码和识别的过程实质上就是根据探测图形进行二维码区域的初定位,结合校正图形进行细定位,再确定各个模块的宽度,进而得出各个符号字符,并将符号字符转换成对应的码字信息的过程.本文根据QR码图像的结构特点,提出一种低复杂度的QR码识别图像预处理方法.该方法在动态迭代法求取阈值并二值化的基础上,通过寻找QR码的探测图形和校正图形,实现自适应的栅格取样并识别,可以克服抗背景噪声、几何失真等的影响.

1 QR码的译码流程及图像预处理

一般情况下,从摄像头或者扫描仪获得的QR码图像通常包含有较多的噪声和模糊等现象,且存在一定的角度倾斜和几何失真,如图2所示.故对QR码图像进行预处理是提高识别率的关键所在.

图2 几种典型的失真情况

QR码的识别主要包括以下6个步骤:① 二值化;②根据探测图像对QR图像进行粗定位,获得QR码所在的大概区域;③根据校正图形进行精确定位④ 计算倾斜角度,对图像进行旋转,并进行矫正处理;⑤ 得到版本号,并进行自适应取样;⑥在校正图像的基础上解码,并按要求输出标准二维矩阵.其中,二值化、探测图形的初定位、校正图像的细定位和自适应的取样都是图像预处理的范围,它是提高QR码译码效率的关键.自适应取样后,按照QR码的规范即可译出对应的码字信息.

2 QR图像处理关键技术

2.1 二值化

图像二值化的算法很多,但是专门适用于二维条码的二值化方法还比较少.事实上图像二值化还没有通用的方法.目前,大部分QR码解码器是利用现有的一些算法进行处理,如Ostu法等.但二值化是QR码解码的基础,直接影响图像的识别率,而且必须在实时性和效果间进行有效的平衡.QR码由于采用了掩模技术,条码区域黑白比例大致相当.本文首先采用动态迭代法来对输入的灰度图数据进行直方图统计,通过迭代求取其最佳阈值.然后,利用迭代得到的阈值对图像进行二值化处理.

假设T(i)为新的分割阈值,V1(i)为灰度值小于T(i)的像素的灰度平均值,V2(i)为灰度值大于T(i)的像素的灰度平均值,其迭代过程主要步骤如下:

① T(0)=128

② T(i+1)=[V1[T(i)]+V2[T(i)]]/2;

③ 返回步骤②.当满足条件T(i+1)=[V1[T(i)]+V2[T(i)]]/2时退出迭代过程.此时,T(i)即为最佳二值化阈值.

此外,为了减小背景噪声(例如大片黑色或白色)的影响,考虑到待识别的QR码通常位于所捕获图像的中部,可以将图像按水平和垂直方向各分为3等分,先选取最中间1/9大小的部分进行求取阀值,再对整幅图像进行二值化.这样,图像中的大片黑色或白色在二值化后将直接去除.

2.2 QR码的定位

QR码的定位是借助它最显著特征的探测图形进行的.根据QR编码的国际标准可知,寻找探测图形可以由黑白块比符合1∶1∶3∶1∶1的关系得到,由此可以扫描整个图片,获得三个探测图形的中心位置.步骤如下:

(1)扫描每行像素(为了提高速度,可以改成隔几行扫描一次),并记录黑白块的长度,并判断每行是否出现黑∶白∶黑∶白∶黑=1∶1∶3∶1∶1的情况.

(2)如果行出现符合比例的,则把读图像指针移到该中间黑块的行中心位置,并向上下分别获取一个白块和黑块的长度,判断这5个黑白块的比例是否也符合1∶1∶3∶1∶1.

(3)如果列也符合比例,则极有可能是探测图形,为了进一步验证,调整该行列扫描线的交点到黑块的中心位置,并执行4.

(4)考虑到对于不同失真的图片,单一的判决条件不一定适用,这里列出三种判断条件,用变量pImgCounter控制轮流使用:①条件0:横竖方向黑白块长度比1∶1∶3∶1∶1,斜线符合1∶1∶3∶1∶1;②条件1:横竖方向黑白块长度比符合1∶1∶3∶1∶1,左斜线和右斜线为1∶1;③条件2:横线和竖线为1∶1,左右斜线方向黑白块长度比符合1∶1∶3∶1∶1.

如果符合判决条件,则可以认为就是探测图形.探测过程如图3所示.

图3 探测图形的搜索路径

2.3 几何校正

几何校正是指当出现几何失真,例如由于拍摄角度不当QR码呈现梯度时,对其进行几何变换校正为近似正方形的过程.由于前面3个探测图形的定位已经确定了三个顶点,故可以利用6参数的仿射变换公式,对图像进行几何校正,得到新的图像数据.

基于仿射变换的几何校正效果如图4所示.需注意的是:几何校正后的QR码并不一定是严格意义上的正方形,可能仍然存在少量的失真.特别是在梯形失真的情况下,其左上角是失真最少的,而右下角是失真最大的,这需要在后续的取样环节中进一步处理.

图4 仿射变换

2.4 校正图形的定位

在定位到探测图形后,可以分别得到各个探测图形的高度和宽度,并相加后除以42,得到平均模块宽度,再得到版本号.版本号大于2的QR码存在校正图形.校正图形是指横竖方向黑白比为1∶1∶1∶1∶1的方形区域.下面以版本2-6为例说明校正图形的搜索与定位,步骤如下:

(1)通过版本号估计校正图形的大致位置.

(2)移动图像指针到该点附近,搜索一个校正图像的中心点坐标.如果能找到该中心点,则返回该点坐标,如果在一定范围内没有找到,则以估计值为准.

(3)计算出三个探测图形中心点坐标及校正图形构成的四边形的纵向模块宽度和横向模块宽度.

(4)获得第四点.校正图形中心点向左移动3个横向模块宽度、向下移动3个模块宽度,得到第四点.

(5)依据三个探测图形中心点坐标和第四点构成的四边形可以估计出从左到右,从上到下失真的程度.

校正图形的精确定位方法如下:

(1)判定估计点是否为黑色,如果为黑色,判定周围8个相邻的模块是否7个点以上都为白色,如果为白色,则认为估计点落在校正图形内,直接调整到中心位置并返回;

(2)如果上述方法失败,则认为估计点并没有落在校正图形中心块中,那么在附近左右三个模块内搜索.这时,判断是否为校正图形的条件为:①该点是否为黑色;②该点相邻的8个模块至少7个模块是否为白色块;③该点相邻的16个模块至少14个模块是否为黑色块.

图5 版本14的取样区域与校正图形标号顺序

图5是版本14的取样区域与校正图形标号顺序.利用区域校正信息,可使后续的取样网格均匀分布于一个区域,对校正图形间形成的区域进行取样.

2.5 图像取样

图像取样是指根据定位后的QR码,得到其版本号以确定QR的尺寸,并得到每个小格内所代表的位是0或1的过程,其中自适应取样是关键.考虑到几何校正后的QR码图像仍然存在一定的失真,本文在取样时结合校正图形自适应进行.根据QR码的版本号,分下列四种情况取样:① 版本1:无校正图形,按一个区域取样;②版本2-6:只有一个校正图形,按一个区域取样;③ 版本7-13:有6个校正图形,按四个区域分别取样;④ 版本14:有13个校正图形,按9个区域取样.

图6是包含校正图形的QR码自适应取样示意图.可以看出,取样后,每个小格内的像素并不完全相同.通常可以采用两种方法来判别每个小格代表的位是0还是1:一种是小格子里所有像素中黑白像素的比例;另一种是在小格的中心画“十”字型的符号,判别十字型的符号上黑白像素的比例.本文采用的是第二种方法.经实践,第二种方法的识别率较第一种方法略高.

图6 包含校正图形的QR码自适应取样

3 实验结果与分析

在完成某企业委托的横向项目的过程中,我们利用Visual C++6.0自行实现了QR码的编码器和解码器.编码器支持汉字、英文字符和数字等的混合编码,模块块度、掩模号、纠错等级可自行设置,版本号可以自动分配也可以自行设置[9].为了说明本文图像预处理算法对于提高QR码识别率的作用,直接使用摄像头进行以下实验:捕获QR码的摄像头采用普通的USB接口摄像头AC650,24位真彩色,分辨率在160×120到320×240之间可调,PC机配置为:Windows XP操作系统,主频:1.5GHz,内存:512M.

实验结果如图7所示.其中,图7(a)是利用编码器生成QR码(模块宽度为3,版本号为5,纠错等级为H)打印到纸张上时,通过基于摄像头的QR码解码器自动识别所得到的结果.由图可见,尽管打印在纸上的QR码存在一些人为的污损磨损,如在其周围和上面人为地添加了一些细线,而且拍摄时存在光线模糊和捕获的QR码存在一定程度的倾斜,但仍然可以快速(耗时约为5.0ms)正确地识别,完全能够满足实时解码的要求.图7(b)是对QR码编码器生成的QR码(模块宽度为3,版本号为2,纠错等级为M),直接采用摄像头对准计算机显示器来进行识别.从图中可以看出,由于摄像头和计算机显示器的帧率、屏幕分辨率不一致,引入了很多噪声,且存在明显的光照不均和QR码超出取像框范围的情况.尽管这样,QR码解码器仍然可以正确地识别出QR码的内容,耗时约4.0ms,可以满足实时解码的要求.

图7 存在梯形失真和污损时的QR码自动识别

上述两个识别的实例识别速度差别很小.这说明,识别速度与QR码包含的内容关系不大.实际上,影响识别速度的主要因素是摄像头的分辨率和纠错等级.通常来说,320×240和352×288两个分辨率的效果时间都在5ms左右,即每秒可以识别200张左右的QR码,故完全可以满足实时性的要求.

4 结 论

图像预处理直接影响QR码的识别率和识别速度,是提高QR码实用化程度的关键.本文针对QR码在识别过程中易受噪声干扰、光照不均和几何失真等的影响,提出了一种实用的QR码识别图像预处理方法.该方法使用了校正图形按区域取样来生成码流,可以显著提高QR码的识别率.将本文所提出的算法移植到智能手机上,利用手机自带的摄像头进行QR码自动识别,以拓宽QR码的应用范围,将是下一步的研究工作重点.

[1] HUANG Hui-wen,WU Chih-wei,CHEN Nian-shing.The Effectiveness of Using Procedural Scaffoldings in a Paper Plus Smartphone collaborative Learning Context[J].Computers & Education,2012,59(2):250-259.

[2] 邹沿新,杨高波.Data Matrix二维条形码解码器图像预处理研究[J].计算机工程与应用,2009,45(34):183-185.

[3] 周利红,刘书家.QR码图像处理和译码方法研究[J].北京工商大学学报,2008,26(1):63-66.

[4] 刘大伟.基于边缘检测的图像去噪方法在二维条码识别中的研究与应用[D].青岛:中国海洋大学硕士学位论文,2008.

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

[6] 明安龙,马华东,赵庆鹏.散焦模糊的畸变QR Bar-code图像复原技术[J].计算机辅助设计与图形学学报,2007,19(8):1080-1084.

[7] 涂 丹,甘亚莉,徐宗琦.一种快速的QR码图像去模糊方法[J].计算机工程与科学,2007,29(3):43-45.

[8] 陈威兵,张刚林,黄飞江.基于手机的二维条码识读系统研究与开发[J].现代电子技术,2011,34(4):116-124.

[9] 赵正旭,戴 欢,赵文彬.基于惯性动作捕捉的人体运动姿态模拟[J].计算机工程,2012,38(5):5-8.

猜你喜欢

版本号条码校正
热线互动
ETCS基线3的系统版本管理方法
浅析影响商品条码质量的主要因素
劉光第《南旋記》校正
日杂商品条码质量现状研究
认识vSphere安装程序
一类具有校正隔离率随机SIQS模型的绝灭性与分布
机内校正
深入浅出 全面获知系统版本号
基于固定条码与电子标签比对设备的设计