基于ZXing.Net的多目标QR码识别研究
2016-09-20高毅李忠王昕云南师范大学文理学院昆明650222
高毅 ,李忠,王昕(云南师范大学文理学院,昆明 650222)
基于ZXing.Net的多目标QR码识别研究
高毅 ,李忠,王昕
(云南师范大学文理学院,昆明650222)
0 引言
随着物联网技术和移动通信技术的飞速发展,基于移动终端、物联网和工业控制等应用领域的自动识别技术己成为当前研究的热点。QR码识别技术是一种全新的信息存储、传递和识别技术,已经迅速地融入到了社会和人们日常生活当中。基于QR码支付、QR码电子凭证、QR码加密发票的各种QR码应用技术让商业和生活体验变得更有活力。自动识别技术是当下最重要的技术之一,在各行各业都起非常重要的作用,例如系统录入数据、修改数据,但是手工录入数据一来慢,二来容易出错,而QR码自动识别技术就很好地解决了这些缺陷。利用QR码不但可以大大提高录入数据的质量和速度,也可以消除人为干扰的缺点[1]。然而,现有的QR码的识别技术大多都是基于单目标的,即一次只能识别一个QR码。在物联网和工业控制领域,迫切需要多目标的QR码识别技术,一次识别一副图片上的多个QR码,并对实时性有一定的要求。为此,本文基于ZXing.Net、图像处理等技术,提出一种多目标QR码的识别方法,实验效果良好,识别的准确率高,识别的时间开销少,满足了一定程度上的实时性要求。
1 概念
1.1QR Code
QR码的“QR”是Quick Response的缩写。这种二维码能够快速读取,与之前的条形码相比,QR码能存储更丰富的信息,包括对文字、URL地址和其他类型的数据加密。QR码1994年由日本Denso-Wave公司发明,QR码的标准JIS X 0510在1999年1月发布,而其对应的ISO国际标准ISO/IEC18004,则在2000年6月获得批准。QR码是属于开放式的标准[2]。
QR码呈正方形,只有黑白两色。在4个角落的其中3个,印有较小的,像“回”字的正方图案。这3个图案是帮助解码软件定位的图案,使用者不需要对准,无论以任何角度扫描,仍可正确被读取。
1.2ZXing,Net
ZXing.Net是一个开源的开发库,该库支持条形码的编码和解码,是在ZXing开发库的基础上来实现的。该库支持的条形码编码格式有UPC-A、EAN-8、EAN-13、Code 39、Code 128、ITF、Codabar、Plessey、MSI、QR Code、PDF-417、Aztec、Data Matrix;该库支持的条形码解码格式有UPC-A、UPC-E、EAN-8、EAN-13、Code 39、Code 93、Code 128、ITF、Codabar、MSI、RSS-14(all variants)、QR Code、Data Matrix、Aztec and PDF-417;该库的运行平台有.NET环境、Silverlight环境、Windows Phone环境、Windows CE环境等[3]。
2 多目标QR码识别算法
2.1基本原理
ZXing.Net是基于微软环境的条形码开发库。我们可以调用开发库中的Result类获取被识别的QR码在图片中的坐标,该坐标由四个点组成,分别为QR码四个角的坐标。在对QR码识别的测试中发现,ZXing.Net开发库可以识别一副有多个QR码的图片,但只能解析其中一个QR码,图片上的其他QR码解析不了。基于这样的前提,若要识别多目标的QR码,在识别过程中可以结合图像处理技术对图片进行处理。若一副图片上有n个QR码,识别完一个QR码,获取其在图片中的坐标,构成一个矩形,用白色填充这个矩形区域,则图片上的QR码个数就会变成n-1个,然后重复此步骤,直到图片上的QR码的个数n为0。这样,就可以把一副图片上的所有QR码识别出来,从而实现多目标QR码的识别。
2.2算法的流程图表示
多目标QR码识别算法的流程图表示如图1所示。
3 关键技术
3.1矩形区域计算
在调用ZXing.Net开发库的过程中,我们可以获取当前被识别的QR码在图片中的坐标 (原点在左上角),该坐标由四个点组成,这四个点刚好能够成一个矩形。由于图片上的QR码是人工贴上去的,有可能是斜的,与水平方向的夹角介于00至1800之间。所以,得到的四个点的坐标并没有固定的顺序,这就给我们构造矩形带来不便。在平面坐标空间中,只需要四个点就可以确定该矩形。假设,在得到的坐标中,四个点的坐标表示为:(Point1.X,Point1.Y)、(Point2.X,Point2.Y)、(Point3.X,Point3.Y)、(Point4.X,Point4.Y),矩形的左上角坐标表示为:(X,Y),矩形的宽用Wid表示,矩形的高用Hei表。计算过程的算法描述如下所示:
图1 多目标QR码识别算法流程
执行以上步骤就可以得到矩形的左上角的X坐标、左上角的Y坐标、矩形的宽、矩形的高。就可以用白色填充该矩形。
3.2坐标空间变换
为了提高程序的执行效率,矩形区域的填充应该在内存中完成,而不是修改过后,保存图片,再重新加载。矩形的填充是在图片的局部来做的,而图片的像素值是存储在一维数组中,这就涉及到矩形区域内的点坐标空间到像素值的一维空间的转换。像素值的一维数组表示为Values[Width*Height],数组下标从0开始,其中Width是图片的宽,Height是图片的高。矩形的左上角的x坐标用X表示,矩形的左上角的y坐标用Y表示,矩形的宽用Wid表示,矩形的高用Hei表示。
矩形区域内的点坐标表示为(x0,y0),其中X<=x0<= X+Wid,Y<=y0<=Y+Hei。Values[pos]表示矩形内的点坐标对应存储像素值的数组元素,其中,0<=pos<= Width*Height-1。转换的计算公式如公式(1)所示。
4 实验
我们的程序是.NET Framework 4.0的环境下编制的,编程语言是C#。实验效果如图2所示,实验中,测试图片的分辨率为5000×3340,图片上面有10个QR码,完成识别的时间为8秒左右。经过大量测试,识别准确率高,完成识别的时间满足一定的实时性要求。
图2 实验效果图
5 结语
本文基于现有的技术,提出一种多目标QR码的识别方法,实验效果良好,对QR码的应用具有非常重要的意义。程序虽然能在一定程度上满足用户的需求,但对于实时性要求高的,还是会存在一些的问题。今后,我们将会对缩短识别时间做进一步研究。
[1]陈春林.基于Android移动终端的二维码识别技术实现与应用研究[D].广东工业大学,2015
[2]QR码_百度百科.http://baike.baidu.com/link?url=qBXGeJKmUY_Vq10BBl_Xsl-9b7ka8T2rwNfSNh_ox3fQHpqtRiKNv_DTIY7huSbu
[3]ZXing.Net-Home.http://zxingnet.codeplex.com.
[4]崔建江.C#编程和.NET框架[M].北京:机械工业出版社,2015.12.
[5]赵春江.C#数字图像处理算法典型实例[M].北京:人民邮电出版社,2009.3
ZXing.Net;QR Code;Multi-Objective
Research on the Multi-Objective QR Code Identification Based on ZXing.Net
GAO Yi,LI Zhong,WANG Xin
(College of Arts and Sciences,Yunnan Normal University,Kunming650222)
云南省教育厅科学研究基金项目(No.2015Y523)
1007-1423(2016)18-0062-04
10.3969/j.issn.1007-1423.2016.18.015
高毅(1980-),男,云南宣威人,硕士研究生,讲师,研究方向为程序设计方法、编译技术
李忠(1984-),男,云南昆明人,本科,助教,研究方向为信息系统设计开发、数据挖掘、网络管理
王昕(1975-),男,云南昆明人,硕士研究生,讲师,研究方向为通信与信息系统、网络管理
2016-04-06
2016-06-10
QR码是一种很好的编码方法,在很多领域都得到应用。当前的QR码的识别技术大多都是一次只能识别一个QR码。然而,在物联网和工业控制应用领域,人们迫切需要多目标的QR码识别技术,即一次识别多个QR码。基于现有技术,提出一种多目标QR码的识别方法,识别的准确率高,识别的时间开销少。这对QR码的应用具有非常重要的意义。
ZXing.Net;QR Code;多目标
The QR code is a kind of very good coding method,has been applied in many fields.Currently most of QR code recognition technology are only identifies a QR code at a time.However,in the Internet of things and industrial control applications fields,people very need multi-objective QR code identification technology,namely identify multiple QR code each time.Based on the existing technology,puts forward a multi-objective identification method of QR code,identification accuracy rate is high,identify cost little time.It's very important significance to application of QR code.