QR码识别

2024-07-14

QR码识别(精选6篇)

QR码识别 篇1

QR码又称快速响应矩阵码,是日本Denso公司于1994年开发的一种二维码,它具有信息密度高、可全方位识别、可靠性高等优点,并可以很好地表示汉字。我国于2000年发布了QR码的国家标准,随着QR码在各领域的推广和智能手机的快速发展,如何在智能手机中较好地识别QR码是一项值得研究的课题,文中将主要讨论在Android平台下识别QR码。

1 QR码符号结构

QR码属于矩阵式二维条码,每个QR码符号都是由正方形模块组成的一个正方形阵列结构,它由功能图形和编码区域组成,功能图形不用于数据编码,它包括寻像图形、分隔符、定位图形和校正图形。编码区域包括数据码字、纠错码字、版本信息和格式信息。QR码共有40种规格[1],分为版本1~版本40,规格为:21模块×21模块~177模块×177模块。QR码具有高信息密度、高识别速度以及高可靠性等特点。QR码的符号结构如图1所示。

2 系统的流程

系统在基于Android平台上使用Java和C++语言一同实现。系统主要分为图像采集模块、图像预处理模块和条码识别模块。图像采集模块主要利用摄像头来完成条码图像的采集,并将采集的图像在屏幕上显示;图像预处理模块主要是对采集的条码图像进行灰度、二值化、定位、矫正等处理,条码识别模块主要根据QR码标准来对条码数据进行提取。系统流程图如图2所示。

3 QR码的识别算法

3.1 图像二值化

图像的二值化是把灰度图像转成黑白图像,这样更有利于图像处理的判别,灰度阈值的变换函数如下

如何确定阈值T是二值化算法的关键,它决定了图像二值化的效果。文中采用OTSU算法[3,5],假设图像分割的阈值为t(0≤t<256),≤t的为前景像素,>t的为背景像素,设前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。则图像的总平均灰度为

则当

取得最大值时,t就为图像的最佳阈值。对式(2)进行化简,得

这样则大大减少了计算量。

3.2 QR码的定位

为检测QR码的位置,利用QR码的位置探测图形的特征。由图3可见,当直线穿越探测图形中心时,从左至右的深浅比例依次是1∶1∶3∶1∶1,而且这个比例不随图像的大小和旋转而改变,所以可以利用此特性来检测QR码的位置。

根据探测图形的比例特性,对图像由水平和竖直方向进行扫描,当遇到深浅比例按1∶1∶3∶1∶1出现时,记录其行或列的位置,并继续搜索相邻行和列,直至所有的行和列被扫描到,记录最先出现的行与列的位置。这样一共可以得到4条直线,围成一个正方形,正方形对角线的交点即为探测图形的中心,同理,可以确定其他两个探测图形的中心。

连接探测图形的3个中心点,可以计算出3条边的大小,根据三角形大边对大角的原则,可以选择一条直角边,计算出它的倾斜角,然后将图像旋正。

3.3 图像的旋转

这里采用双线性插值[4]对图像进行旋转,而不是利用最邻插值法,因为它会使图像产生锯齿形的边界,干扰条码的识别。双线性插值的数学模型如图4所示。

f(x,y)为两个变量x,y的平滑函数,假设它所在单位正方形的4个顶点的值为f(0,0)、f(0,1)、f(1,0)、f(1,1),则可以利用双线性插值求出正方形内任意点(x,y)的值f(x,y),首先对两个顶点进行插值得

再对底端两个顶点进行插值得

最后做垂直方向的插值得

图5(a)为倾斜的条码,图5(b)为采用双线性插值旋转的结果,实验表明,双线性插值处理后得到的图像具有良好的效果,有利于条码识别。

3.4 图像的矫正

由于在拍摄时,摄像头的角度不会完全垂直于二维条码平面,因此拍摄到的条码或多或少会有透视效果,在手持手机拍摄时,这个问题很常见,也是图像处理中的难点。这里使用反透视算法[7],能够对图像进行反透视矫正。

设三维失真空间中的一点坐标[x',y',z'],其其次坐标可以设为[x',y',z',1]T;三维基准空间中对应点坐标[x,y,z],其其次坐标设为[x',y',z',k]T,因此有公式为

在上述定位算法中,得到了条码的3个探测图形中心点的坐标,因此可以得出条码4个顶点的坐标,根据如下基准点与失真点的映射关系

根据式(7)和式(8),可以得出

一般地P=1,k=1,失真图像和校正后的图像共面,那么z=z′=c,c是常数,令c=0,可以将(9)简化为

可以根据条码的4组顶点,求出8个待定系数A,B,D,E,F,H,M,N,然后对条码的每个点进行矫正。

4 QR码识别系统在Android平台上实现

它采用软件堆层的架构,主要分为3个部分:操作系统、中介软件和应用程序。底层以Linux内核工作为基础,用C语言开发,只提供基本功能;中间层包裹函数库Library和虚拟机Virtual Machine,由C++开发;最上层是各种应用软件,包括通话程序,短信程序等,主要以Java作为编程语言。

为能够快速地处理大量的数据,Android也提供了以C/C++作为开发语言的NDK(Native Developer Kit)平台,它编译生成的.SO动态链接库可以供Android SDK(Software Development Kit)平台下的应用程序调用。在本系统的实现中,因为图像的预处理和解码部分要进行大量数据运算,所以把这两部分的程序放在NDK下完成,摄像头启动与图像采集在SDK下实现。由于Android的虚拟机Dalvik不能执行.class文件,所以要把.class文件的字节码转换成.dex文件的字节码,识别系统的编译过程如图5所示。

4.1 Android简介

Android是基于Linux平台的开源手机操作系统,

4.2 图像的采集

系统在手机上实现,图像的采集[2,3,4,5,6]是重要的一步,在Android平台上,是使用Camera类来完成摄像头的调用和图像采集。使用Camera m Camera=Camera.open()获得Camera的实例,然后使用Camera.Parameters来设置获得图像的大小,最后通过实现Camera.Preview-Callback的接口on Preview Frame(byte[]data,Camera camera)来获得摄像头的图像数据。图像数据data为YUV格式,其中Y分量的大小为Image Width*Image Height个字节,U分量的大小为0.25×Image With*Image Height个字节,V分量的大小和U分量一样,因为条码是黑白色,Y分量正好包含的是图像的灰度信息,将省去对图像进行灰度化的处理,所以在取图像数据时,只取Y分量进行处理。

4.3 自动对焦

为能够较快地获得清晰的图像,提高识别速度,文中使用了自动对焦技术。关键代码如下:

(1)实现自动对焦的接口Auto Focus Callback

(2)创建一个定时器

创建定时器的目的是使手机每隔一段间隔就自动对焦一次。定时器内的代码如下:

m Camera.auto Foucs(m Auto Focus Callback);

5 结束语

文中研究了QR码的识别技术,讨论了在Android平台上实现系统的技术问题,并结合数字图像处理技术,在Android手机平台上进行了QR码的识别技术的开发。根据图像的大小,本系统在三星i9000(CPU型号ARM Cortex A8,主频为1 GHz,内存512 MB,操作系统为Android OS v2.1)上分别对100幅图像进行了测试,结果如表1所示。

参考文献

[1]国家质量监督局.GB/T 18284-2000,快速响应矩阵码[S].北京:北京标准出版社,2001.

[2]EISAKU O,HIROSHI H,LIM A H.Barcode readers using thecamera device in mobile phones[S].Proceedings of the 2004International Conference on Cyberworlds(CW'04),2004.

[3]Ostu.A threshold selection method from gray level historgram[J].IEEE Trans Systems Man Cybernetic,1978(8):62-65.

[4]刘宁钟,杨静宇.基于傅里叶变换的二维条码识别[J].中国图象图形学报,2003,8(8):877-882.

[5]BERNSEN J.Dynamic thresholding of gray-level images[C].Paris,France:Proc of 8th Intel Conf on Patt.Recog.IEEE Computer Society Press,1986:1251-1255.

[6]WANG Hao,ZOU Yanming.2D Bar codes reading:solutionsfor camera phones[J].International Journal of Signal Pro-cessing,2006,3(3):164-170.

[7]邱维生.解析几何[M].北京:北京大学出版社,1996.

QR码识别 篇2

1 条码定位

QR码的结构如图1 所示, 包含回字型的定位图形 (finder pattern) 以及黑白相间的寻像图形 (timing pat-tern) , 还包含版本、格式等信息[6]。

在图像预处理阶段, 利用自适应门限提取[7]的方法将灰度源图像转换为二值图像, 并通过轮廓追踪[8]记录所有的轮廓点信息, 经过这些处理后, 利用每个闭合轮廓的重心位置和角点信息获得定位图形的位置及其对应的轮廓。

1.1 定位图形提取

定位图形有很明显的特征:三个闭合轮廓有相同的重心。轮廓的重心可以通过式 (1) 计算得出[9]:

式中:gx和gy分别代表重心点的x, y轴坐标;f (x, y) 是 (x, y) 处图像的灰度值。在轮廓图像中取逻辑值0 或1, 因此式 (1) 可以简化为:

式中:n为轮廓上的像素个数。

将重心重合的几个轮廓作为候选轮廓, 使用角点检测[10]的方法得出轮廓中的角点位置:一个轮廓可以表述为n个点的集合P ={pi= (xi, yi) , i = 1, 2, ⋯, n} , 轮廓中的一定相邻点构成的线段有一个协方差矩阵:

矩阵C的两个特征值可以用来获取线段的形状信息, 较小的特征值λs可以用来表述线段在某点处的尖锐程度[10]:

因此当某点处的 λs大于某预设值并比附近点的 λs都大时认为该点是轮廓的一个角点。图2说明定位图形的提取结果:轮廓的重心使用+标出, 角点使用*标出。

1.2 条码边界提取

在定位图形轮廓已知的基础上使用霍夫变换[11]用于提取条码的边界。霍夫变换将线上的点变换到参数空间, 并投票计算最有可能的直线或曲线方程。以直线为例, 直线可以描述为 ρi= x cos θi+ y sin θi, 其中 ρi表示直线到原点的距离, 而 θi表示直线与y轴的夹角。通过计算每个点 (x, y) 对应的参数空间 (ρ, θ) 的可能值进行累加比较最终得出 (ρ, θ) 的取值并确定直线。霍夫变换同样适用于曲线的提取[12]。

传统的霍夫变换计算量较大, 可以通过缩小参数空间的方法来减小计算量[13], 由于本文的定位图形的轮廓已知, 可以利用该信息计算出可能的参数空间取值组合, 再针对该缩小的参数空间使用霍夫变换, 最终得到轮廓的方程, 大大减小计算量。使用上述方法提取出的轮廓如图3 所示。

2 条码几何校正

当摄像头的角度或方向不是正对条码时, 捕获的图像就存在失真, 利用反透视变换[14]可以校正条码实际采样点的位置以重构条码。在使用线性摄像头拍摄条码的场景中, 可以使用3×4 的矩阵来建模从世界坐标到图像坐标的变换, 这个矩阵称为射影矩阵[14]:

式中:u和v代表一个点在图像平面中的坐标值; (x, y, z) 描述了这个点在世界坐标系中的位置;k为比例系数;m11~ m34构成了射影矩阵。

2.1 平面条码的采样点提取

当条码打印在平面上时, 式 (6) 中的z轴坐标全为0, 可以化简为式 (7) :

将式中的k消去, 可以得到式 (8) 所描述的关系:

可以令m33= 1 ( k乘以某个系数) , 那么式 (8) 变成了有8 个未知数的方程, 因此只要得到4 个点在两个坐标系中的对应位置 (xi, yi) (ui, vi) , 就可以解出射影矩阵m11~ m32 (这里可以利用条码轮廓四个角对应的坐标) , 进而获得所有条码采样点对应到图像平面的坐标, 其映射关系可以描述为:

2.2 圆柱面条码的采样点提取

当条码被印刷在圆柱面上时, 采样点的提取过程和平面类似。不同的是, 需要考虑世界坐标系中z轴取值, 此时射影矩阵的大小变为3×4, 因而需要6 个点的对应关系来解出11 个未知数的方程, 在之前4 个点的基础上增加两个定位图形的角点作为输入。类似的, u和v可以通过式 (10) 计算出来:

为了获取6 个点在世界坐标系中的坐标, 将世界坐标系的三个轴定为图4 所示的位置, 将条码的轮廓边长归一化, 于是圆柱面上点的坐标值x, y, z可以通过半径r计算出来, 将r作为一个未知数代入, 可以得到一个12 元方程, 并解出射影矩阵。

将归一化的条码图像中的采样点反向映射到原图中得到二进制值, 并按照QR码的解码规则提取出条码中的信息。

3 结果与分析

使用本文算法对平面和圆柱面条码处理的效果如图5 和图6 所示, 图5 中打印在条码上点标记了使用本文算法后获得圆柱表面条码的各模块采样点。而图则分别显示了使用本文算法对平面、圆柱面条码处理之后重构出的新条码。

图5 和图6 都说明该算法能较好的得到平面或圆柱面条码的模块采样点进而完成条码的重构。

为进一步验证算法的效果, 针对平面和圆柱表面分别获取在各种不同大小的图像进行处理识别, 并和文献[1]的BSE算法以及开源QR码识别库libqrencode比较。

图7 解码结果表明, 算法不仅对平面条码具有很好的识别能力, 对圆柱面条码也具有较强的适应性。与文献[1]相比, 识别圆柱面条码的准确率不依赖寻像图形的清晰度, 能提高识别系统的鲁棒性。

摘要:传统的QR码识别算法只适用于打印在平面上的条码, 提出了一种有效识别打印在饮料瓶等圆柱面上的QR码。通过对图像轮廓进行角点检测确定回字定位图形, 在此基础上筛选条码关键轮廓并对其进行霍夫变换提取圆柱面上的透视椭圆信息, 同时结合透视椭圆的参数和三维透视变换, 有效构建了圆柱面条码像素从二维图像平面直接映射到三维图像空间的变换矩阵, 重构打印在平面或圆柱面上的QR码目标。实验结果表明, 该算法对平面或圆柱面QR条码的识别有较高的准确率。

特雷克斯起重机集团启用QR码 篇3

2011年11月17日,特雷克斯起重机集团表示正推动将“快速响应码”(QR码)技术应用于最新的面向客户和经销商的传播材料中。此次的新功能是公司全球化策略的一部分,旨在快速为客户提供所需信息,也是在未来几个月内把QR码进一步应用于公司传播材料的开端。

目前,特雷克斯起重机集团传播材料的QR码能使顾客和经销商直接进入公司网站,而在未来几个月中,用户将可以获得其他相关信息,例如产品演示视频、特价产品或其他有用资源。

QR码识别 篇4

关键词:Ising模型,QR二维码,加密,分析

二维码中的快速响应码, 即QR码更是因为其高度安全性、存储密度大与快速读取信息的能力得到了业界的普遍认可。QR码的安全性虽然得到了高度的认可, 但是不乏一些安全隐患, 为防患于未然, 也得到了一些新思想的注入, 尤其是QR码加密生成阶段的优化。

1 Ising模型与QR码结构分析

Ising (伊辛) 模型最早由Lenz提出, 属于统计类力学模型, 最初用以分析晶体的磁性。伊辛模型的结构为矩阵框架。模型中的任意一点都存在两种不同的状态, 两种状态中的任意一种都会影响和受到上、下、左、右4个邻点的状态变化的影响, 且整个矩阵框架中所有数据点能够同时发生变化。考虑到Ising模型跟二值矩阵存在形状上的相似, 都能够进行并行计算, 所以Ising模型十分适合应用在QR码的加密算法中。

2 QR码加密算法

2.1 QR码的图形结构

从图形上讲, QR码属于矩阵型二维码结构, 其构成元素称为功能模块, 包括浅色与深色两种制式, 其中浅色表示二进制中的数字0, 深色表示二进制中的数字1。QR的组成主要有图形与数据码两个部分。

组成QR码的图形由以下七个模块构成:

(1) 四个较宽的空白区域中反射率等同于浅色区域;

(2) 用来定位QR码字符的探测图形区域;

(3) 用来分隔位图的分隔符区域;

(4) 用来定位图形的水平位图与垂直位图区域;

(5) 用来校正数据的校正图形区域;

(6) 用来纠正数据等级的格式区域;

(7) 用来存储QR码版本信息的版本区域。

数据码部分由下面两个部分构成:

(1) 用以标记用户数据有效性的数据码部分;

(2) 用以进行码字纠错的纠错码部分。

2.2 QR码的编码和生成步骤

QR码的编码和生成步骤如下:

(1) 数据识别。在QR生成之前需要对数据的类型进行识别, 获取与编码要求对应的数据。

(2) 数据编码。将识别之后得到的数据按照QR码的编码规则转换为二进制字符串, 并按照8位一组的规则进行划分, 换分之后的每一组字符称作一个码子, 最终获得一个码子组, 并将其根据QR码的编码规则平均分成若干数据块。

(3) 编码的纠错。按照既定的纠错等级, 对各个数据块进行纠错。

(4) 码字填充。把纠错之后的数据块分配到编码区对应的范围。

(5) 图形模块的设计。把矫正图形、寻像图形、定位图形与分隔符按照与其对应的二进制字符串存储QR码的既定区域。

(6) 成形。将接收到的数据按照深色和浅色两种颜色制式进行图形计算。

(7) 生成格式与版本信息。将计算之后的图形形状与颜色制式按照QR码格式排列成形, 并生成使用的版本信息。完成整个QR二维码的制作。

本研究对QR码加密的升级存在与第5步与第6步之间, 即数据成形计算之后, 插入Ising模型的加密方式, 以提高QR码的安全性能。

3 算法的设计与实现

将Ising模型嵌入到QR码生成过程之中, 实现加密与解密可以从下面两个部分进行考虑:其一是利用Ising本身的加密函数, 使得其中的加密点进行状态的转变, 达到并行计算的目的;其二是并行调用Ising加密函数生成新的加密矩阵。

3.1 基于Ising模型的加密函数

Ising模型本身的加密个函数方程为:

(1) 式中Ens是加密函数;P表示明码, C表示密文, P与C说明列数与行数为同样的矩阵;Sr代表1×16的一维向量。

数据获取为明码矩阵P和一维向量Sr;

数据返回为密文矩阵C。

实现流程:

(1) 首先复制P用P2表示, 即

(2) 则矩阵P中任意一元素P (i, j) 存在

(3) 成立。

式 (3) 中P (i, j) 为矩阵P的第i行第j列位置元素, Sr (K) 为一维向量Sr在第K列的位置元素, 则P (i, j) 对应元素的相邻的四个位置元素相应二进制的十进制元素表示为h (i, j) , 有

(3) 密文矩阵C对明码矩阵P的返回

在第 (2) 步中通过对P的更改就能够实现并发计算。显然矩阵中任意点都存在不包括边界元素的四个相邻点。针对边界元素可以采用以下两种方式进行处理:其一是存在3个相邻元素, 缺少相邻中的一个的相邻元素并对2取模计算;其二是存在2个相邻点的元素, 将其作为对称中点, 并取代没有对称邻点元素。

3.2 算法设计与实现

首先利用伊辛模型中的加密算法对初始矩阵C0进行加密计算生成矩阵为E。

数据录入:256bite随机向量设为KEY, 初始向量为IV, 需要生成的QR码边长为m。

实现流程:

(1) 把矩阵KEY编排成16×16的新矩阵SK。

(2) 计算出1个包含m×m个点的一维0向量设为S, 以IV进行循环计算。

(3) 再把向量S按照m×m的形式编排成新矩阵C0。

(4) 对进行算法加密。

式中为元素r对16取模, SK (k) 为矩阵SK的第k行元素, 且

(5) C2×m表示加密后的矩阵E。

3.3 算法加密与解密的实现

从本文3.2节的实现过程来看, 基于Ising模型的加密算法为多次计算之后的函数, 具有模型的并行计算变化功能, 并同时实现了状态变化的并发性, 显然提高了加密矩阵的生成效率。

3.3.1 算法的加密

3.3.2 算法的解密

式中PQR是在QR码生成过程的成形以前明码QR码, CQR表示出去相应成形模块以后的密文QR码。那么在本文3.2节中的算法接收参数m、Ⅳ与KEY可以同时用在加密与解密之中, 并生成同样的数据矩阵。

加密的计算对象为PQR, 所以不会影响到QR码的格式与位置信息。加密过程也是矩阵异或的计算过程, 因此, CQR的某个字节的变化, 其他字节不会受到影响。

4 总结与展望

本研究以Ising模型的加密函数, 从理论的角度论证了其对QR码加密算法的弥补, 不足之处在于没有进行举例分析。对其进行举例分析并进行算法的继续优化具有一定的研究意义。

参考文献

QR码识别 篇5

条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,它是以计算机技术、编解码技术和通信技术的发展为基础的综合性科学技术[1]。二维条码技术是在一维条码无法满足实际应用需求的前提下开发出来的,具有高容量、高密度、纠错能力强、防伪保密性强等特点,其中QR(Quick Response)是DENSO WAVE公司(日本)专门针对亚洲汉文化环境而研制的一种可高速读的矩阵式二维码,能够很好地编码汉字,符合汉字的使用习惯,在我国广泛地应用到各种电子商务、电子票据、海报宣传、会议签到等领域。

由于用户在拍摄QR条码图像时,或多或少地会存在图片倾斜、夹杂噪音、图像失真等问题,给快速准确解码造成阻碍。在深入研究《QR码国家标准》的基础上,经过一定的算法改进,详细分析了QR条码的识别及解码的实现过程,系统在VC++6.0平台基础上完成开发,设计了若干C++类,对图像识别、QR解码等功能进行了封装。

1 QR图像识别

Hough变换是由Paul Hough于1962年提出的,实现了一种从图像空间到参数空间的映射关系[2]。Hough变换建立了一种全新的坐标系,其核心是两个坐标系的变换。利用点与线的对偶性,通过Hough变换后,可以将图像平面中的一条直线用一个Hough参数空间的点来表示,而经过某一点的所有直线经过变换后将呈现出Hough参数空间的一条正弦曲线;然后再结合统计学知识分析并解决问题。如果参数空间不超过二维,Hough变换的效果十分理想。

在直角坐标系中,平面中任意一个点可以用rθ两个参数确定下来,对于图像空间任意点(x,y),对其进行坐标变换后关系表达式为

r=x×cosθ+y×sinθ (1)

式中:θ∈(0,2π),θ被转换为对应的离散[θ1,θ2,…,θj];r对应于离散数组[r1,r2,…,rj]。

将研究对象即QR条码图像中的所有点映射到Hough空间中,判断(rj,θj)与哪个数组元素对应,得到结果后让该数组元素加1;则QR码图像中的边缘直线,对应于数组元素的局部最大值,其对应的(rj,θj)就是这些共线点对应的直线方程的参数,即把QR条码边缘直线检测出来[3],关系表达式为

rj=x×cosθj+y×sinθj (2)

然后,计算出QR条码的旋转角度,利用双线性插值算法对每一个目标像素做出调整,对失真的图像进行校正[4]。

相关函数声明:

void HoughCheck(BYTE*src,int width,int height,int*pR,int*pTh,int iThreshold);

其中,width*height为输入的二值图(背景为0,前景为255),并存放在矩阵src中,iThreshold为判断为直线的域值,输出pR为原点到直线的距离,pTh为直线的角度。

图1为拍摄的一副QR码图像,其版本号为4,掩模模式为001,纠错等级为L,模块大小为4,拍摄过程中造成QR码图像带有一定角度的倾斜和噪音。校正效果如图2所示。

2 QR码解码实现

2.1 主要功能模块及类

在《QR码国家编码标准》中所规定的编码规则基础上,结合上述算法,并对设计构架做出必要的改进而设计完成[5]。整个解码系统包含如下共14个类:

2.2 系统几个新功能实现

1) RS译码算法利用BM迭代算法、Chien搜索算法及Forney算法三种算法组合起来实现数据纠错功能,避免求解线性方程组的繁琐工作,从而降低整个RS纠错译码算法的计算复杂度。主要函数声明:

2) 点击“导出数据”按钮,可以将解码出来的数据信息以文本(.txt)的形式保存。相关函数为

void CQRDecoderDlg::OnBtnDatatotxt()

void LoadDataToTxt(CString DesStr)

3) 软件支持截图获取QR条码,点击“截屏获取QR”按钮,则用户可以通过鼠标确定截取区域,选择区域确定后,可以通过鼠标粗调或者通过键盘(方向键:左、右、上、下)微调区域的位置,并以透明窗口的形式显示所选区域的大小。在截取区域内,提供鼠标右键菜单:确定、取消、退出。截取QR条码完成后,若解码顺利,则在标题栏中显示temp。主要涉及到的类有:

class CMyEdit:public CEditp

class CSelf

4) 软件支持的快捷键:Alt+A,实现QR条码截图。

3 成果展示及测试

3.1 成果展示

将图片加载到解码软件中,系统能解析出QR条码所包含的数据信息,并可以将QR码的基本信息显示出来,包括版本号、掩模模式、纠错等级、模块大小、像素值、条码所包含的信息量、条码旋转角度以及解码所消耗的时间。图1所示的失真图片,经QR解码软件截图解码的效果如图3所示。

3.2 性能测试

QR码解码软件主要测试计算速度、解码准确性以及PC机的CPU内存占有率等信息。

1) 计算速度测试

基本思路:通过载入QR条码进行解码,统计解码所需要的时间。在测试过程中,选用了纠错等级中的两种极端情况(L,H),其他情况则处于此两种情况之间,统计解码所需要的时间,然后进行性能分析。

被解码的QR条码分别有L,H两种纠错等级,则包含不同字符数的QR条码解码所需时间统计见表1,测试数据的序列图如图4所示。

结果分析:由测试数据以及形成的序列图可知,L级纠错等级的纠错耗时明显少于H级,RS纠错编码属于一种冗余编码纠错。在一般情况下,1 000个字符范围内即可满足用户编码QR条码的要求,由图可知,解码时耗时不超过0.45 s,满足用户对计算速度的要求。

2) 解码准确性测试

基本思路:首先建立QR条码图像库,图像来源于通过摄像头获取的大量的含有QR条码的图片。为了便于测试数据的比较,将图像大致划分为以下3类:

(1) 图像背景清晰,光线均匀,QR条码无破损,无畸变;

(2) 图像包含一定的背景噪音,图形稍有污损或者畸变;

(3) 图形背景噪音复杂,图片拍摄光线不均匀,并有一定程度的破损或者形状畸变。

结果分析(见表2):第一类、第二类图像的解码正确率较高,第三类图像由于图像背景噪音较大而且形状发生畸变,其解码正确率稍差一点,有提高的空间。这个测试过程所涉及到的一个关键技术就是解码的图像识别及数据纠错处理技术,系统中设计实现的QR码解码软件具有较高的解码准确率,能够满足实际需要。

3) CPU占有率测试

基本思路:目前市场上的主流CPU品牌有Intel和AMD等,为了验证软件的适用度,选用性能一般的一台计算机(Intel(R)Core(TM)2 Duo CPU T5870,2 Gbyte)作为代表测试验证软件性能。为了保证测试的科学性和可信度,选用国内外著名的电脑优化软件Windows优化大师的一个内存管理工具Wopti辅助测试。

在连续多次解码过程中,CPU及内存使用情况如图5所示。

结果分析:从解码软件的CPU监视图中可以很容易看出,在连续解码过程中内存波动不大,CPU占用率波动范围也保持在20%以内,如果将其他软件对CPU的影响也考虑进去,这种结果相对比较理想。如果使用性能更好的计算机运行该软件,效果会更好。

4 结语

本文对QR码解码的相关技术及其实现过程进行了深入研究。并在此基础上设计一套QR解码软件,可以将QR码所包含的基本信息显示出来,包括:版本号、掩模模式、纠错等级、模块大小、像素值、条码所包含的信息量、条码旋转角度以及解码所消耗的时间。实际测试表明,该系统能够快速准确地完成编码,而且CPU占用率较低。该技术具有重要的研究价值,已经广泛应用到商品追溯、防伪、电子商务、会议签到等领域。

参考文献

[1]张成海,张铎,赵守香.条码技术与应用[M].北京:清华大学出版社,2009.

[2]刘慧娟.一种快速响应码图形的分割和校正方法[J].电子测量与仪器学报,2006(1):32-36

[3]王雅静,窦震海.基于图像式条码识读器的研究[J].电视技术,2007,31(1):89-91.

[4]JIN Chun,YUAN Jianghong,CHEN Eryang.One of the image correctionalgorithms of QR code and its implementation based on wavelet trans-form.[C]//Proc.2011 IEEE 3rd International Conference on SoftwareEngineering and Service Science.[S.l.]:IEEE Press,2011:93-98.

QR码识别 篇6

关键词:QR码识别,空间倾斜矫正,防伪应用

0 引 言

随着信息技术的日益成熟及发展,二维条码具有储存量大、保密性高、追踪性高、成本便宜等特性,这些特性特别适用于表单、安全保密、追踪、证照、存货盘点、资料备援等方面。1994年由Denso Wave公司开发的QR码是二维码的一种,它以其存储信息量大、可靠性高、超高速识别,能高效表示汉字等特点被广泛使用。QR码是由按特定规则排列的正方形模块阵列组合,其符号形状为正方形,其能够存储一些特殊的语言文字结构,例如拉丁、汉字、日文等。而且不像其他二维码需要专业的识读设备才能读取,带有摄像头的普通手机或者个人电脑都可以对QR码进行识读。

由于摄像头采集到的图像通常存在着畸变,因此在进行QR码识读之前通常需要对采集的图像进行处理,目前常用的处理包括噪声去除、二值化、图像旋转等。在一些应用系统中,例如使用USB摄像头进行QR码识别,由于摄像头和标记之间的位置关系,还会使生成的图像发生倾斜畸变,现今的主流倾斜校正算法中主要是基于平面校正的算法例如Hough变换[1]、中心走势线[2]以及主方向检测[3]等方法。这些方法在倾斜的图像旋转角度较小,即其投影图为梯形或者平行四边形时校正效果较好。但对三维空间中发生倾斜旋转其投影为不规则四边形则无能为力,便会影响QR码识别的准确率。本文探讨对QR码的识别流程中加入空间倾斜畸变校正,采用空间投影校正算法实现抗倾斜的QR码识别,并将其应用到档案系统防伪识别应用,取得很好的效果。

1 QR码及其识别流程

1.1 QR码结构及特点

如图1所示,QRcode符号由编码区域和包括寻像图形、分隔符、定位图形和校正图形在内的功能图形组成。功能图形不用于数据编码,符号的四周由空白区包围。QRcode符号共有40种规格,分别为版本1、版本2、…、版本40。版本l的规格为21×21模块,版本2为25×25模块,以此类推,每一版本符号比前一版本每边增加4个模块,直到版本40,规格为177×177模块。

● 寻像图形 它包括三个相同的位置探测图形,分别位于符号的左上角、右上角和左下角,见图1所示。每个位置探测图形可以看作是由3个重叠的同心正方形组成,见图2-4所示,它们分别为7×7个深色模块、5×5个浅色模块和3×3个深色模块。位置探测图形的模块宽度比为1:1:3:1:1,符号中其它地方遇到类似图形的可能性极小,因此可以在视场中迅速地识别可能的QR码符号。识别组成寻像图形的三个位置探测图形,可以明确地确定视场中符号的位置和方向。

● 分隔符 在每个位置探测图形和编码区域之间有宽度为1个模块的分隔符,全部由浅色模块组成。

● 定位图形 水平和垂直定位图形分别为一个模块宽的一行和一列,由深/浅模块交替组成,其开始和结尾都是深色模块。水平定位图形位于上部的两个位置探测图形之间,符号的第6行。垂直定位图形位于左侧的两个位置探测图形之间,符号的第6列。它们的作用是确定符号的密度和版本,提供决定模块坐标的基准位置。

● 校正图形 每个校正图形可看作是3个重叠的同心正方形,由5×5个深色模块,3×3个浅色模块以及位于中心的一个深色模块组成。校正图形的数量视符号的版本号而定,版本2以上的(含版本2)的符号均有校正图形。

● 编码区域 包括表示数据码字、纠错码字、版本信息和格式信息的符号字符。

1.2 QR码识别

现有的QR码识别流程一般只有三个步骤:图像预处理,平面倾斜校正算法以及图像解码。当在三维空间中QR码旋转或者倾斜角度较大时,该识别流程中的平面倾斜算法无法正确识别QR信息。

本文改进了QR码的识别流程,增强其抗倾斜识别能力,识别流程包括四个步骤:图像预处理、判断倾斜畸变程度、倾斜校正、图像解码如图2所示。

1) 图像预处理的主要目的是消除图像中噪声,增强有关信息的可检测性和最大限度地简化后续数据处理量。首先采用全局阈值和局部阈值选取相结合,逐步选取合适的阈值,把QR图像进行二值化。然后使用图像去噪方法,去除图像中面积较小的点噪声和细长的线形噪声。

2) 判断畸变程度的目的是为了根据不同的倾斜畸变程度选择最适当的方法进行矫正。首先获得QR码的四个顶点坐标,然后通过四个顶点坐标的位置坐标关系来确定倾斜畸变程度。

3) 当倾斜程度较大时,即四个顶点坐标形成不规则四边形时,使用空间倾斜校正会大大提高识别准确率。通过空间坐标转换矩阵,可以将摄像平面坐标映射为QR标记的平面坐标。之后由于映射之后的图像存在着空格点,再使用双线性插值算法根基空格点临近点的值计算空格点像素的值。

4) 当倾斜畸变程度较小,即四个顶点的坐标形成梯形或平行四边形时,使用平面倾斜校正速度较快,效率高。这些方法一般计算出标记的边框,然后计算出水平和垂直倾斜角,最后根据倾斜角度进行旋转。

5) 图像解码的目的是为了将隐藏在QR码中的信息读取出来。通常根据定位图形和校正图形的中心坐标建立取样网格。根据取样网格,采样数据,把图像转换为数据矩阵,并对数据矩阵进行数据解码。

2 基于空间投影的倾斜校正方法

平面的图像倾斜校正算法中主要是基于Hough变换[1],中心走势线[2]以及主方向检测[3]等方法。这些方法在倾斜角度较小时能够很好地进行倾斜校正。但当倾斜角度较大时则没有作用。本文基于虚拟现实(AR)技术中根据图像来预测摄影机定位的技术[4]提出一种空间投影校正算法:根据四边体的四个顶点,计算出从摄像平面到标记平面的转换矩阵,用此转换矩阵进行转换,之后再进行双线性插值算法对空格点进行插值。

图3显示了QR标记和摄像头平面的坐标关系。

QR标记坐标系上的一点M =[xmymzm 1]T以及其在摄像平面上的投影坐标点C =[xcyczc 1]T满足下式:

其中s为一个比例的因子。P是一个3×4的投影转换矩阵。它表示了成像系统的透视模型[8]。分为摄像头内参数矩阵K和外参数(H,t)两部分:

式中,fxfy为在摄像平面x轴和y轴的镜头焦距。ax轴和y轴之间的倾斜因子。(xo,yo)为摄像头中心在摄像平面上的主点坐标。H为标记坐标系到摄像平面坐标系的旋转矩阵,t为标记坐标系到摄像平面坐标系的位移矢量。在现今主流的摄像头中,主点坐标即为成像图像的中心,且fx=fy,因此只需计算摄像头的焦距f即可。根据定理,一对平行线经过透视成像后必然汇聚于一点,此点便称之为灭点。QR码是标准的正方形标记,因此在摄像平面上会形成两个灭点,如图4所示。以此来计算摄像头的焦距f如下:

其中不规则四边形abcd为标记在摄像平面上的投影,分别形成两个灭点FuFv。其中PuvP在影灭线(Fu,Fv)上的垂直投影。FxuFxvFyuFyv分别是灭点FuFvx轴和y轴坐标。

由于我们的标记只是一个平面标记,因此z轴坐标等于零,由式(1)、式(2)得到简化后的公式:

式中,H是一个非奇异矩阵,因此可以在我们的校正算法中在相差一个比例因子下摄像平面恢复成标记平面的真实几何图形。即x=HX’,根据文献[5]矩阵H可进一步分解为:

Hp称之为仿射重建矩阵;He为度量重建矩阵。首先仿射重建矩阵Hp将摄像平面上的不规则四边形映射成平行四边形,之后度量重建矩阵He将此平行四边形映射成矩形。Hp中的l1和l2通过穿过两个灭点的影灭线L来计算:

He则可以将投影不变量绝对二次曲线w=(KKT)-1代入公式ITwI=0;。(I为二次曲线和影灭线L的交点)从而得到:

其解是一对共轭复根,α、β是其实部和虚部。之后将α、β代回式(5),便求得转换矩阵H,使用转换矩阵H,根据式(4)便可以对摄像平面坐标以及标记坐标进行相互转换。

3 QR码在学生成绩档案在线防伪中的应用

学生成绩档案是学生学习阶段表现的重要文件,是用人单位和国外高校考察学生的主要依据,因此成绩单的防伪很重要。本文在档案管理系统中实现了成绩单在线防伪功能。通过 在成绩单上标记QR码,获取成绩单的人可方便地通过USB摄像头读取QR码识别并在线访问学生成绩档案数据库,通过进行成绩比对就可判断成绩单的真伪。系统增加了特别的图像抗倾斜算法,增强了QR识别的方便性和有效性。系统的整个架构如图5所示。

在每张成绩单上都会将一段由“东华大学档案馆”和该生学号构成的字符串通过RSA算法进行加密,并将加密后的QR图像打印在成绩单上。在客户端进行真伪鉴别时,首先通过USB摄像头读取QR码,读取的帧图片通过客户端的QR解码模块会得到一段由RSA公钥加密的信息,将此信息通过因特网传到服务器端。在服务器端保存有RSA的私钥,根据此私钥将由客户端传来的信息进行RSA解密,判断成绩单的真伪,然后利用学生学号查询服务器端数据库中的成绩信息并在客户端报告结果,用户可进一步进行成绩细节正确性的判断。

4 结 语

在基于平面的校正算法即平面内的旋转以及双线性变换中并不能处理三维空间中的大的倾斜畸变,而在使用基于USB摄像头进行QR识别的过程中这种大的倾斜角又是经常会发生的。本文提出一种基于空间转换的倾斜校正算法并将其加入到QR码的识别流程中,通过灭点和摄像头的内参数计算出坐标转换的转换矩阵,并用此矩阵进行坐标转换来完成倾斜的校正。将此方法用于学生成绩单的在线防伪识别中。应用实践表明,加入了空间倾斜校正算法的QR识别流程的识别效率有显著提高同时将QR码更完美地融合与结合应用于现有的安全体系中,提高整体系统的安全性。

参考文献

[1]梁添才,皮佑国,彭晶,等.基于Hough变换的列车客运票图像校正[J].华南理工大学学报,20073,5(5).

[2]吴德会,朱程辉.基于主方向检测的畸变车牌字符快速矫正算法[J].模式识别与仿真技术,2005,24(4).

[3]李文举,梁德群.一种新的车牌校正算法[J].信息与控制学报,20043,3(2).

[4]Hirokazu Kato1,Mark Billinghurst.Marker Tracking and HMD Cali-bration for a Video-based Augmented Reality Conferencing System[C]//IWAR'99 Proceedings of the 2nd IEEE and ACM InternationalWorkshop On Augmented Reatity,1999.

[5]Leibowitz,Criminisi A.Creating architectural models from images[J.]Proc of EuroGraphics.1999,39(50).

[6]Kitahara K,Ohta Y.A nested marker for augemented.Hirokazu Katoand Mark Billinghurst:Marker Tracking and HMD Calibration for a vid-eo-based Augmented Reality Conferencing System,2007.

[7]刘悦,刘明业.QR code二维条码数据编码的研究[J].北京理工大学学报,2005.

[8]肖建芳,林东岱.二维条码和数字签名技术及其在毕业证书中的应用[J].计算机工程与应用,2005(4).

上一篇:工程节水改造下一篇:投资效果