




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目名称:二维码生成与识别系统的设计与实现2014 年 5 月 二维码生成与识别系统的设计与实现二维码的解码器Design and Implementation ofTwo-Dimensional Code Generation andRecognition systemThe Two-Dimensional Code Decoder2014 年 5 月摘要条码技术是一种融编码,印刷,数据采集和处理与一体的自动识别技术。条码分为一维码和二维码。二维码除了具有一般一维码的优点外还具有信息容量大,可靠性高的优点。本论文首先介绍了二维码的种类,并介绍了QR Code的编码规则。然后分析了基于图像处理
2、的二维码解码算法的一般过程, 并对图像预处理二维码 的定位与校正以及数据纠错过程中涉及到的关键算法进行分析比较针对快速响应 矩阵码 ( Q R c o d e ) , 详细设计基于图像处理的Q R 码解码算法, 为了降低算法复杂度并提高识别效率, 改进了二维码图像的二值化算法和Q R 码定位算法。并对算法改进后的执行效率以及容错性能进行分析, 结合算法执行时间分析结果对关键算法进行优化。实验结果表明, 改进 的 Q R 码解码算法执行效率较高而 且稳 定 , 并且在 光照不均存在 噪声 以及 图像变形等情况下均可以正确解码。关键词:图像处理;二维码识别;二维码解码算法AbstractBarco
3、de technology is an automatic identification technology that is consist of coding,printing,data acquisition and processing. Barcode can be divided into one-dimensional barcode and two-dimsional barcode. In addition to the advantages of the one-dimensional barcode,two-dimensional barcode also has the
4、 information capacity, and high reliability. This paper introduces the types of 2D barcode and the QR Code encoding rules . Then,analyze 2D barcode decoding algorithm that is based on image processing,compare the different algorithm in the processing of image pre-processing ,position and adjustment
5、and data correction .Then detailed design the decoding algorithm for QR Code,improve the binarization algorithm for 2D barcode image and QR Code positioning algorithm . By analyzing the execution time of the decoding algorithm ,find and optimize the key algorithms.The experimental results show that
6、the improved QR Code decoding algorithm is efficient and stable ,and can identify the QR Code image uneven illumination,with noise or deformation.Key Words: Image processing; Two-dimensional code recognition;2D barcode decoding algorithm目录摘要 I.I. . TOC o 1-5 h z Abstract III目 录 I.V. HYPERLINK l book
7、mark8 o Current Document 第1章绪论 1 HYPERLINK l bookmark10 o Current Document 研究背景与意义 1 HYPERLINK l bookmark12 o Current Document 二维码识别技术的当前研究现状 1 HYPERLINK l bookmark14 o Current Document 研究内容 3 HYPERLINK l bookmark16 o Current Document 论文组织结构 3 HYPERLINK l bookmark18 o Current Document 第2章QR 码编码规则 4
8、HYPERLINK l bookmark20 o Current Document QR 码符号结构 4 HYPERLINK l bookmark22 o Current Document QR 码编码方法 5 HYPERLINK l bookmark24 o Current Document 第3章二维码识别系统的总体框架 8 HYPERLINK l bookmark26 o Current Document 二维码识别系统的目标 8 HYPERLINK l bookmark28 o Current Document 二维码识别系统的功能需求 8 HYPERLINK l bookmark30
9、 o Current Document 二维码解码功能的设计 9二维码识别系统总体流程实现规划 9图像预处理模块流程 10二维码译码模块流程 11 HYPERLINK l bookmark32 o Current Document .软件开发平台 12 HYPERLINK l bookmark34 o Current Document 第 4章 图像预处理模块的设计与实现13 HYPERLINK l bookmark36 o Current Document 彩色图像灰度化 13 HYPERLINK l bookmark38 o Current Document 图像去噪 14 HYPERLI
10、NK l bookmark40 o Current Document 图像二值化 14第 5章 二维码解码模块的设计与实现 16二维码解码流程 16 HYPERLINK l bookmark45 o Current Document 探测图像识别的设计与实现 16寻找探测图形 16图像校正 19 HYPERLINK l bookmark47 o Current Document 二维码版本信息确定的设计与实现 19确定每个模块的宽和高 19二维码粗略版本确定 20 HYPERLINK l bookmark49 o Current Document 二维码模块采样的设计与实现 21二维码差分图像
11、 21二维码模块采样 22 HYPERLINK l bookmark51 o Current Document 二维信息解码的设计与实现 23版本信息的确定 23二维码格式信息的实现 25去除二维码掩膜的实现 26得到数据流 27数据纠错28各模式下的译码 28 HYPERLINK l bookmark53 o Current Document 第 6 章 系统的调试、运行与测试32 HYPERLINK l bookmark55 o Current Document 系统开发过程中的问题与解决方法32关于寻像图形的寻找 32关于二维码的版本信息 32二维码模块的采样 32加载静态库 32 HY
12、PERLINK l bookmark57 o Current Document 系统的运行与测试33运行结果 33运行性能分析 34 HYPERLINK l bookmark65 o Current Document 第7章 结 论 36致谢 37 HYPERLINK l bookmark69 o Current Document 参考文献 38附录 39附录A: 主要源程序39附录B: 软件使用说明书46VI 二维码生成与识别系统的设计与实现- 二维码的解码器 第 1 章 绪论本章首先介绍本文课题研究背景与意义, 然后从二维码的识别技术当前研究现状 , 最后介绍了本文的研究内容工作描述以及论
13、文的组织结构。研究背景与意义一维条码是由一组粗细不同,黑白相同的,条,空及相对应的字符(数字字母)组成的条形符号,只是在一个方向(一般是水平方向)表达信息,在垂直方向不表达任何信息,其一定的高度一般是为了便于阅读器的对准。但是一维条形码存储的数据容量较小(30 个字符左右),只能包含字母和数字,条码尺寸较大(空间利用率很低)并且一旦损坏就不能识别。二维条形码是在一维条形码的基础上发展起来的,是用某种特定的几何图形按一定的规律在平面上分布的条,空相见的图形来记录数据符号信息,克服了一维码的缺点。并且由于二维码的信息密度高,存储量大,纠错能力强,而且其本身具有一定的防伪功能而得到迅速发展。国外的二
14、维码技术已经处于应用阶段,并且已研制了性能较好的二维码识别系统。而我国虽也研制出了用于识别二维码的系统,但和国外相比还是有一定的差距的。由于二维码这种新兴的自动识别技术有其他自动识别技术无法比拟的优势,它一出现就受到的很高的重视。本文研究的解码技术主要针对的是QR码。QR码是由日本 Denso公司于 1994年 9月研制的一种矩阵二维码符号,它除具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点外,还具有如下主要特点:普通的一维条码只能在横向位置表示大约 20 为的字母或数字信息,无纠错功能,使用时候需要后台数据库的支持,而二维条码是横向纵
15、向都存有信息,可以放入字母、数字、汉字、照片、指纹等大量信息,相当一个可移动的数据库。如果用一维条码与二维条码表示同样的信息,QR 二维码占用的空间只是条码1 11 的面积。二维码已广泛应用与社会的各个系统,如商品信息获取,网站跳转,广告推送,手机电商,防伪追溯,优惠促销,会员管理,手机支付等,因此研究二维码的识别系统具有很重要的意义。二维码识别技术的当前研究现状二维码的识别系统主要包括两类: 专用二维码扫描器和安装有二维码解码软件. 下面主要介绍基于软件的二维码识别的发展现状。二维码扫描器的生产商主要有ARGOX公司Symbol讯宝公司(2004 年被摩托罗拉公司收购)CIPherlab 公
16、司以及国内的福建新大陆公司ARGOX公司的AS一 950 影像式二维码扫描器具备绿光指引功能。快拍 (QuickMark) 二维码是目前移动终端上最快的一维码二维码解码软件之一,支持 Apple105 Android Windows phone 和 symbian560 四种智能手机平台, 具有快速识别自动解码等功能并针对互联网应用, 增加一维码产品信息查询联网搜索信息二维码生成分享网址URL直接访问等功能。我查查是一款基于图形传感器和移动互联网的商品条形码比价的生活实用类手机应用。 条码扫描支持一维EAN码、 QR码 (二维码)、 二维WEPC码和快递单号( code128码)等。通过我查查
17、,照一照商品条码,哪家店有卖、售价多少、店家的电话地址、营业时间、网址等等信息,马上会显示在手机屏幕上。QR 扫描器为iPhone 及 iPod Touch 而设的一个便携式QR码扫描器。快速及有效的实时自动检测模式。有以下特点- 实时扫描模式- 通过电邮、FaceBook 或Twitter 分享出去 - 综合网页浏览器- 综合地图浏览- 新的界面设计- 创建属于您的 QR码 - MECARD支持- 网膜图形 - 用电邮发送扫描的照片。此外,微信、QQ也有二维码解码功能。二维码解码软件的实现依赖于二维码解码算法, 但是二维码解码算法过程复杂 , 而且使用的相关技术繁多, 所以目前的解码算法的研
18、究主要是对解码算法过程中关键技术的研究。二维码扫描器采用硬件解码, 具有识别效率高可识别多种二维码适应能力强等优点 , 但是技术封闭且价格昂贵; 而二维码解码软件采用软件解码, 具有成本低技术开放等优点, 但是识别效率一般, 对运行平台要求较高, 而且目前仅能识别 QR码 。此外 , 可以通过对二维码进行改造来提高识别效率Microsoft Tag , 即彩色条码可以利用较低的分辨率条码图像来提供较高的数据容量, 与传统二维码相比 , 彩色条码降低了对采集图像分辨率的需求。Ankit Mohan 等结合光学原理和二维码技术, 设计了一种新的载体形式, 取名为 Bokode , 基本原理为在二维
19、码上添加透镜( 或者是具有小孔的隔光片), 实现对Bokode的远距离识别。研究内容本文主要围绕二维码的解码的关键技术进行研究,主要研究基于图像处理的二维码解码关键技术。主要介绍了图像预处理, 二维码定位技术以及数据译码过程中的关键算法。并在此基础上详细设计了基于图像处理的QR码解码算法, 主要对二维码的二值化算法和QR码定位算法进行改进。 本文的主要工作包括 : 分析基于图像处理的二维码解码算法中的关键技术; 详细设计基于图像处理的QR码解码算法 , 对二维码图像的二值化算法和QR码定位算法进行改进。论文组织结构本文一共分为六章,各章的大致内容如下:第一章,绪论。本章首先介绍了本文课题的背景
20、和意义,然后介绍了二维码识别的研究现状。最后介绍本文的研究内容和组织结构。第二章,二维码的编码规则。本章主要从QR Code的数据编码,数据纠错,和图像掩码三个方面介绍QR Code。第三章, 二维码识别系统的总体框架。本章主要介绍了二维码识别系统的目标,功能需求,总体流程和开发条件。第四章,二维码图像预处理模块的设计和实现。本章主要介绍了二维码图像的灰度化,图像的去噪和图像的二值化。并对二值化算法进行了改进。第五章,二维码解码模块的设计与实现。本章在第四章的基础上进行解码。主要介绍了二维码的定位算法,二维码格式信息和版本信息的实现方法,二维码模块的采样方法。二维码解码信息的设计与实现。第六章
21、,系统的调试,运行和测试。本章主要介绍设计本系统遇到的问题和功能测试。第 2 章 QR 码编码规则QR 码符号结构每个 QR 码由名义上的正方形模块构成,组成正方形阵列,它由编码区域和包括寻像图形、分隔符、定位图形在内的功能图形组成,功能图形不能用于数据编码。符号的四周由空区包围。如图2.1 所示。图 2.1 QR 码符号结构符号版本和规格QR码符号共有40 种规格,分别是版本l 搬本 40,版本 1 的规格为21x21 个模块,版本2 为 25x25 模块。以此类推,版本N 的规格每行每列为21+4(N 一 1)个模块。寻像圈形寻像图形包括3 个位置相同的位置探测图形,分别位于符号的左上角、
22、右上角、和左下角,如图2-1 所示。每个位置探测图形可以看作是由3 个重叠的同心的正方形组成,他们分别为7 7 个深色模块、5x5 个浅色模块、3X3个深色模块。位置探测图形的模块宽度比为1 : 1: 3: 1: l 。符号中其它地方遇到类似图形的可能性极小。因此,识别组成寻像图形的3 个位置探测图形,可以明确地确定视场中符号的位置和方向。分隔符每个位置探测图形和编码区域之间有宽度为1 个模块的分隔符,如图 2-1 所示。全部由浅色模块组成。定位图形定位图形是垂直和水平方向一个模块宽的一列和一行,由深色浅色模块交替组成,其开始和结尾都是深色模块,如图2-1 所示。校正图形每个校正图形可看作是3
23、 个重叠的同心正方形,由5 5 个深色模块、3 3 个浅色模块以及位于中心的一个深色模块组成。校正图形的数量由QV,码的版本号决定,版本2 及以上的符号均有校正图形。编码区域编码区域包括表示数据码字、纠错码字、版本信息和格式信息的符号字符。空白区空白区为环绕在符号四周的4 个模块宽的区域,其反射率与浅色模块相同。QR 码标准中编码步骤如图2.2所示图 2.2 QR 码编码步骤QR 码编码方法数据编码将输入的数据转换为一个位流,如果ECI 是缺省的,那么一个数据流将包括模式指示符、字符计数指示符、数据,最后以4 位终止符0000 表示。其结构如图2.3所示。图 2.4 定义了每个模式的模式指示符
24、,图2.5 定义了采用不同版本的字符计数指示符的长度。下面介绍几种常用的编码模式。2.3 数据编码结构图 2.4 模式指示符图 2.5 字符计数指示符数字模式数字模式下,将输入的数据每三位分为一组转化为10 位二进制数,剩余位转化为 7 位或 4 位二进制数。最后将二进制数据连接起来并在前面加上模式指示符和数 字计数指示符。字母模式在字母模式下,将输入的数据以两个字符为一组,将前面字符的值乘以45 与第二个字符的值相加,结果转化为11 位二进制数,若剩余一位,则将其转化为6 位二进制数。最后将二进制数据连接并在前面加上模式指示符和数字计数指示符。(3)8 位字节模式在 8 位字节模式模式下,直
25、接将二进制数连接起来并在前面加上模式指示符和字符指示符。中国汉字模式在中国汉字模式下,每个汉字符由两个字节表示,字符值为GB2312图形字符的内码值。将数据字符两个字节为一组转化为1 3 位二进制数,然后二进制数连接起来并在前面加上模式指示符和字符指示符。纠错编码QR 码采用纠错算法生成一系列纠错码字,添加在数据码字序列后面,使得符号在遇到损坏时不致丢失数据。纠错共有4 个纠错等级,分别是: L 级纠错容量:7;M级纠错容量:15;Q级纠错容量:25;H级纠错容量30。掩膜掩模的目的是均衡地安排深色与浅色模块,以及尽可能地避免位置探测图形的位图 101l101 出现在符号的其他区域。掩模不用于
26、功能图形,用多个矩阵图形连续地对已知的编码区域的模块图形( 格式信息和版本信息除外) 进行XOR操作。对不同掩模图形的结果计分,选择得分最低的掩模方案。第 3 章 二维码识别系统的总体框架二维码识别系统的目标QR码的主要应用的项目可分成四类:自动化文字传输:通常应用在文字的传输,利用快速方便的模式,让人可以轻松输入如地址、电话号码、行事历等,进行名片、进程数据等的快速交换。数字内容下载:通常应用在电信公司游戏及影音的下载,在帐单中打印相关的QR码信息供消费者下载,消费者通过QR码的解码,就能轻易连接到下载的网页,下载需要的数字内容。网址快速链接:以提供用户进行网址快速链接、电话快速调用等。身分
27、鉴别与商务交易:许多公司现在正在推行QR码防伪机制,利用商品提供的 QR码链接至交易网站,付款完成后系统发回QR码当成购买身分鉴别,应用于购买票券、贩卖机等。在消费者端,也开始有企业提供了商品品牌确认的服务,通过QR码链接至统一验证中心,去核对商品数据是否正确,并提供生产履历供消费者查询,消费者能够更明白商品的信息,除了能够杜绝仿冒品,对消费者的 购物更是多了一层保护。二维码识别系统的功能需求本系统是实现二维码的编码与译码。首先根据二维码的编码规则生成二维码,然后采集二维码,将采集的二维码图像郊游解码器进行解码。二维码可以包含许多信息,最常见的是一些产品信息。当然还可以包含一个链接地址;一个短
28、信内容;一个后台应用程序等。本解码器主要实现下面几个功能:显示产品信息如果二维码包含的是这一类信息,就直接显示出来。跳转链接地址如果二维码的信息是一个链接地址,那么本软件就调用相应的浏览器去打开这个链接地址。发送短信如果二维码的信息是一跳短信息,那么本软件就调用发短信的程序去发送这个短信。系统的功能需求流程图如3.1 下所示。图 3.1 系统功能图二维码解码功能的设计二维码识别系统总体流程实现规划二维码识别系统模块之间以及系统总体算法的实现规划,各模块之间以及系统总体算法的流程,如图3.2所示。图 3.2 二维码识别系统框架图首先对拍摄的图像进行图像预处理,预处理的步骤将在下一小节介绍。然后对
29、图像预处理模块流程图像预处理如图3.3,步骤如下:对采样的图像进行灰度化处理对步骤一处理的图像进行去噪处理对步骤二处理的图像二值化处理3.3 图像预处理流程3.3.3 二维码译码模块流程译码模块流程如图3.4,步骤如下:(1)对格式信息译码根据采集得到的二维码模块得到二维码的信息数据,对格式进行纠错和译码。(2)对版本信息译码根据采集得到的二维码黑白模块和版本信息在二维码中的位置得到二维码的版本信息,对版本信息进行纠错和译码。(3)各模式下的数据译码根据得到的数据流就可以对二维码进行模式译码。针对各模式的编码规则对各模式下的二维码数据流尽心数据译码。图 3.4 二维码译码模块流程3.4. 软件
30、开发平台本系统是针对android 系统的,所以开发语言必须是java 。由于二维码识别属jar 包。至于开发平台,本系统选用的是eclipse 。第 4 章 图像预处理模块的设计与实现二维码图像预处理可以分为3 个部分 : 彩色图像的灰度化利用中值滤波进行图像平滑以及利用灰度图像二值化技术分割图像。4.1 彩色图像灰度化实际情况下, 通常直接采集到的是彩色图像, 每个像素有R G B 三个颜色分量 ,每个颜 色分量的取值范围为0 到 255 。 而二维码是以黑白模块构成, 而颜色不包含任何信息( 这里指的是传统二维码, 彩色条码除外) , 所以首先要对采集到得彩色图像进行灰度化处理, 通常采
31、用式4.1 进行灰度化处理。其中Cr,Cg,Cb分别为 R,G,B 分 量的权值, 且满足 Cr +Cg+Cb= 1。W=Cr*R+Cg*G+Cb*B.(4.1)但实际上按上述的公式灰度化得到的灰度图像对光照均匀下拍摄的图像效果较好, 但对光照不均匀的图像处理效果就不是太好。本文采用另一种方法灰度化图像。首先将原始RGB 三通道图像分离成HSV 图像,然后针对色相,饱和度,亮度进行处理。将色相控制在紫色区,饱和度控制在中间区,亮度控制在中间区。消除过亮过暗的区域,消除低饱和度区域。这样得到的图像效果较好。如图4.1.1 是源图像, 图 4.1.2是根据公式4.1 灰度化结果,图 4.1.3是根
32、据分离HVS 得到的结果。4.1.1 原图片4.1.2 式 (4.1) 得到图像4.1.3 由HVS得到的图像4.2 图像去噪设备采集到的图像一般都因受到干扰而含有噪声。条码图像的噪声主要来自两个方面。首先是条码表面的各种形式的污损,这方面噪声只能凭借条码本身的纠错算法进行纠错。噪声的另外一个来源是来自光学采集系统,这部分的噪声是满足泊松分布的盐粒噪声,用适当大小的矩形窗口的中值滤波非常适于条码图像。当然,由于当前各种设备的硬件性能比较好,这方面的噪声还不是很严重,对于OR 这样的块状的条码,可以对每一块区域统计黑白点数,确定是黑、白块的时候直接就会去掉了盐粒噪声的影响,但是对于成像质量不是很
33、高,而条码图像本身比较小的情况下(即最小模块宽度没有超过3 个象素点), 对图像进行滤波去掉噪声就显得比较重要了。中值滤波是抑制噪声的非线性处理方法。对于给定的n 个数,将它们按大小有序排列。当n 为奇数时,处于中间位置的那个数值称为这n 个数的中值。当n 为偶数时,位于中间位置的两个数值的平均值称为这n 个数的中值。中值滤波的方法运算简单,易于实现,而且能较好地保护边界但有时会失掉图像中的细线和小块的目标区域。邻域的大小决定在多少个数值中求中值,窗口的形状决定在什么样的几何空问中取元素计算中值。对二维图像,窗口的形状可以是矩形、十字形等,它的中心一般位于被处理点上。窗口的大小及形状对滤波效果
34、影响很大。一般是 5 5 窗口,过大和过小都会对条码图像产生较大的副作用。本系统直接调用OpenCV 的cvSoomth()函数即可实现。4.3 图像二值化因为二维码是由黑白模块组成的, 本身分割较为明显, 所以二维码的图像分割通常采用二值化方法, 二值化方法具有速度快,容易实现等优点。 二值化方法是通过选取阈值, 然后用阈值来对图像中每个像素进行判断, 如果灰度值大于该阈值 , 则用灰度值的最大值替换该像素值; 相反 , 若果灰度值小于阈值 , 则用灰度值的最小值替换该像素值。 二值化算法过程就是求解阈值的过程 , 根据阈值值选取范围的不同二值化算法又可以分为全局阈值值算法和局部阈值算法。全
35、局阈值算法是选用唯一且固定的阈值对整幅图像进行二值化处理, 当图像的灰度直方图具有明显双峰时全局阂值算法处理结果较好; 局部阈值算法是通过将图像划分为若干局部窗口, 然后对每个窗口分别计算阈值并进行二值化处理, 局部阈值算法对于复杂图像 ( 亮度不均,有噪声或是背景灰度变化比较大 ) 二值处理效果好,但是增加算的复杂度。本文采用的是局部阈值进行图像二值化,算法思想是: 将以当前像素为中心的一个邻域内, 灰度值的最大值和最小值的平均值做为该像素的阈值, 然后用该阈值对当这个像素进行二值化, 每个像 素的闭值单独计算, 所 以 算法的复杂度较高。设当前像素坐标为( x ,y) , 邻域 窗 口选用
36、 以当前像素为中心的正方形正方形边长为2w +1. 算法流程如下:(1) 计算图像中各点(x,y)的阈值 w(x,y):w(x, y) 0.5* (max f (x m, y n) min f (x m, y n)( 4.1)w m w, w n w;(2)对图像中的各像素点(x,y)用w(x,y)的值逐点二值化全局阈值算法复杂度最小, 但是对于图像光照不均时处理效果不好; 局部的阈值算法改进了全局阈值算法对光照不均时的处理效果, 但是相应增加了算法复杂度, 而且会在分块边缘产生边缘效应; 上述算法对光照不均的图像处理效果最好, 但是算法复杂度最大。下面对上述算法进行比较 , 其中 N 为图像
37、 的 像素个数, W 为上述算法的正方形窗口边长。表 4.1 二值化算法比较算法全局阈值算法局部阈值算法光照不均匀处理效果较差较好时间复杂度O(N)O(NW2)第 5 章 二维码解码模块的设计与实现二维码解码流程QR 码解码模块的功能架构如图5.1 所示。图 5.1 QR 码解码模块功能架构图QR 码解码过程是编码过程的逆过程,图5.2是该过程的流程。探测图像识别的设计与实现寻找探测图形QR 条码符号是由一系列的正方形模块构成的一个二维条码阵列,已知 QR 码探1: 1: 3 : l : l 深浅交替变换,且这种性质在图像变形不是太严重和任QR 码的位置探测图形特点,采用了边缘信息QR 码符号
38、的四个顶点。假设源图像的主体是QR 码,则可以利用下述方法找到QR 码的四个顶点。5.2 算法流程图对QR码所在图像逐行逐列扫描,。 开辟一个矩阵lengthBufferx 用于储存图像中某行深色或浅色模块的长度,其中第i 个元素表示原图像某一行或某一列,第 x 段模块的长度。遍历矩阵lengthBuffer , 当发现某条线段与其后四条线段的长度满足1: 1:3: 1: 1 时, ( 根据实际情况,每一元素宽度的允许偏差为O 36) 。找到这条线段的起始坐标和终止坐标. 将这条满足的线段保存在一个集合lineAcross 中。5.3 位置探测图形扫描线重复步骤 (1)(2) ,直到所有行列被
39、扫描完。遍历集合lineAcross ,若某条线段的起始坐标与其相邻线段的起始坐标相距不超过4 像素,则认为是一个线段群,记录图像中这类线段群拥有线段数最大数n,当某个线段群的线段个数不小于0.8*n ,则判断其为QR码中符合条件的线段群,并删除不符合的线段群。将 lineAcross 矩阵中记录的点用最小二乘法拟合成一条直线Y=bx+a: 其中2(xi )( yi ) (xi )( xi yi )aN (xi ) (xi )(5.1)b N(xiyi)2 (xi)( 2yi)(5.2)N (xi ) (xi )这条直线就是QR 码所在区域的左侧边缘线用上述方法求出QR 码的边界的四条拟合直线
40、L1,L2,L3,L4. 如图 5.4 所示 .最后求取直线的交点, 作为 Q R 码的四个顶点, 定位结束。5.4 直线拟合结果5.2.2 图像校正上述得到的图像可能会出现倾斜,故还需要进行旋转处理。由上述4 条线就可以得到二维码图像的旋转角度和二维码的中心坐标。根据图像的旋转原理和插值算法就可以校正图像。二维码版本信息确定的设计与实现确定每个模块的宽和高由前面步骤提取出来的QR码的四周已经不再含有多余信息。但在拍摄的时QR码可能会变成了矩形。所以单位模块在X轴方向和在Y轴方向上的边长需要分别确定。首先在符号边缘的水平方向和垂直方向对提取出的QR码进行扫描。当探测到预选区 (遇到深浅模块按照
41、1: 1: 3: 1: 1 变化的地方),注意图像中一行像素与位置探测图形的外边缘相遇的第一点A 和最后一点B。对该图像中的相邻像素行重复探测,记下每条探测线A, B 间的距离以,以及探测线的数量N。直到在中心方块X轴方向所有穿过位置探测图形的直线被全部识别。用同样的方法扫描Y轴方向。如图 5.5 所示。5.5.确定模块宽高所以 QR 码在 X 轴的宽度为:DX1i DX2i DX3i x3 7 (N1x N2x N3x)QR 码在Y 轴的高度为:DY1iDY2iDY3iy3 7 (N1y N2y N3y)5.3.2 二维码粗略版本确定(5.3)(5.4)首先根据QR 码的符号结构确认QR 码
42、的版本号。QR 码共有 40 种版本,分别是版本1、版本2、版本40。版本1 的规格为21 模块 x21 模块,版本2 为 25模块 25 模块。以此类推,每一版本符号比前一版本每边增加4 个模块,直到版本40,规格177 模块 177 模块。假设QR码的版本号为v, QR每行的模块数为n=4*v+17。 则版本号可以由式(5.5)确定。其中,width , height 分别为提取出QR 码的边长。QR 码每边模块数width/x=height/y.height 17vy或4(5.5)width17但是由于计算机的浮点数运算产生误差,公式(5.5)得到的版本号不是太准确,所以本文采用另一种方
43、法确定版本号。如图 5.6 所示,二维码的定位线是由黑白模块交叉组成的,所以可以扫描定位线的黑白模块。从a 点开始扫描,如果当前像素是白色,下一个像素是黑色,则找的一个白色模块,直到遍历到b 点得到白色模块数n。所以即可确定模块总数N=14+(n-1)*2, 版本号 v=(N-21)/4+1.同理扫描垂直方向上的定位线也可以确定版本号。5.6 二维码定位线二维码模块采样的设计与实现一般的方法是利用平均法对OR 码划分 N*N 个网格, 每个网格的中心进行取样,得到归一化的QR 码图像。但是此时许多应该处于网格内的模块发生偏移,有的甚至跨越了2 个栅格,平均法划分QR 码往往会造成误差。这往往是
44、由于计算机的浮点误差产生:图像的长度以像素的个数(整数)计量,而式(5.3)和式(5.4)中 X, Y通常为浮点数,计算机取整数为步长。将会产生累计误差。本文采用另一种方法对二维码模块进行采样。二维码差分图像我们知道二维码是由黑白模块组成的,对二维码图像进行二值化处理后,二维码的每个像素是由0 1 表示。假设0 代表黑色1 代表白色。那么一个黑色模块是由一个区域的0 组成, 一个白色模块是由一个区域的1 组成。 黑白模块的边缘是由0 1像素组成的。这就是说在一个模块的中心附近像素值几乎不变,但是在黑白模块的边缘像素值的变化很大。如图5.7,模块 A B C 的中心附近的像素值不变,但是他们的边
45、缘像素值会变化,从0 变成 1 或从 1 变成0。根据这个特点我们可以对图像做行差和列差运算,就可以得到垂直边缘和水平边缘的信息。这样我们就可以划分二维码。即二维码每个模块的中心位置差分结果变化小,边缘位置变化大。5.7 二维码二进制图像数据二维码模块采样由上述原理我们就可以对二维码进行采样,步骤如下:以行为例对图像做差分运算d(x,y)=|f(x,y)-f(x,y+1)|得到x方向的差分图像imgX,如图5.8。其中 f(x,y) 表示第 x 行 y列的像素值。( 2)以列为例对图像做差分运算d(x,y)=|f(x,y)-f(x+1,y)|得到y方向的差分图像 imgY.( 3)对imgX,
46、imgY做或运算得到二维码差分图像img=imgX|imgY;( 4)通过公式(5.3) ( 5.4)得到的x, y 得到行方向和列方向模块中点的大致取样点,在该取样点左右很小的区域( 本文的区域为9 个像素 ) 滑动如表5-1 ,找到min(p(x,y) ,并记下此位置。表 5-1 像素取样123405678( 5)根据步骤(4)得到的位置,在源图像上寻找对应的点,若该点为黑色此模块就为黑色,反之,此模块就为白色。反复寻找就可归一化二维码。图 5.8 左图为源图像右图为列差图像二维信息解码的设计与实现版本信息的确定版本信息为18位,其中6位数据位,通过BCH( 18, 6)编码计算出12个纠
47、错位。 6 位数据为版本信息,最高位为第一位。12 位纠错信息在6 位数据之后。只有版本7 40 的符号包含版本信息,没有任何版本信息的结果全为0。所以不必对版本信息进行掩模。最终的版本信息应映射在符号中预留的位置,见图5.9。需要注意的是,由于版本信息的正确译码是整个符号正确译码的关键,因此版本信息在符号中出现两次以提供冗余。版本信息的最低位模块放在编号为0 的位置上,最高位放在编号为17 的位置上。版本信息生成步骤见图5.10,版本信息的模块布置见图5.11 。5.9 二维码版本信息5.10 二维码版本信息生成步骤图 5.11 版本信息模块布置由得到的采样图像就可以得到版本信息,存放在ve
48、rsionInfo1,versionInfo2 数组中。 用 versionInfo1 和正确的版本信息比较,如果在误差范围内,取前 6位就可以得到版本信息,如果不在,用 versionInfo2 和正确的版本信息比较,如果在误差范围内,取前 6 位就可以得到版本信息,如果不在,则版本得到信息失败。二维码格式信息的实现如图 5.12 所示,格式信息有15 位数据位组成,其中15 , 14位存放的是二维码纠错等级,13,12,11 位存放的是用于图像掩膜的图像数字。10-1 位是对应的纠 TOC o 1-5 h z 错数据。格式信息的生成步骤下所示.设定纠错级别为M: 00掩膜图形参考: 101
49、数据:00101BCH位 :00110011100掩膜前的位序列:0010100110011100用于XOR操作的掩膜图形:101010000010010格式信息掩膜图形:100000011001110可以用下面的方法得到格式信息,纠错级别,掩膜图像。用上面的采样信息得到格式信息的15 位数据流,保存在数组Info 中, 和正确的 15 位格式信息比较,如果在误差范围内,执行步骤(2), 否则,格式信息获取失败。去除掩膜。将 Info 中的15位数据和101010000010010做异或操作,得到没掩膜之前的格式信息,放在formatInfo 中。取数组 formatInfo 中的前 2 位就
50、可得到纠错级别,取 3-5 位就可得到用于图像掩膜的图形。图 5.12 二维码格式信息图 5.13 二维码格式信息生成去除二维码掩膜的实现由 5.5.2 中得到的掩膜图像可以用于去除二维码上的掩膜图像,得到二维码的原始数据。表 5-2 给出了掩模图形的参考(放置于格式信息中的二进制参考)和掩模图形生成的条件。掩模图形是通过将编码区域(不包括为格式信息和版本信息保留的部分)内那些条件为真的模块定义为深色而产生的。所示的条件中,i 代表模块的行位置, j 代表模块的列位置,( i,j ) =(0,0) 代表符号中左上角的位置。表 5-2 掩模图形的参考掩膜参考图像条件000(i + j) mod
51、2 = 0001i mod 2 = 0010j mod 3 = 0011(i + j) mod 3 = 0100(i div 2) + (j div 3) mod 2 = 0101(i j) mod 2 + (i j) mod 3 = 0110(i j) mod 2+(i j) mod 3) mod 2 = 0111(i j)mod 3 +(i+j) mod 2) mod 2 = 0由上述条件得到每个模块的0 或 1 和未掩膜之前的图像的每个模块进行XOR操作就可以得到原始的二维码数据。得到数据流多数码字在符号中表示为规则的2 4 个模块的排列。其排列有两种方式,垂直布置( 2 个模块宽,4
52、个模块高);如果需要改变方向,可以水平布置(4 个模块宽,2 个模块高)。 当改变方向或紧靠校正图形或其他功能图形时,需用不规则符号字符,如图5.13。我们可以将整个码字序列视为一个单独的位流,将其(最高位开始)按从右向左,按向上和向下的方向交替的布置于两个模块宽的纵列中。并跳过功能图形占用的区域,在纵列的顶部或底部改变方向,每一位应放在第一个可用的位置。这样从右下角遍历图像就可以得到数据流。5.13 版本 2-M 符号的符号字符布置数据纠错QR 码的纠错是按段进行的,根据版本和纠错等级,将数据码字序列分为1 个或多个段,对每段分别进行纠错运算,分段规则可查标准。根据版本和纠错等级将数据码字序
53、列分为n 块。 对每一块,按照纠错码字编码电路计算相应块的纠错码字。数据码字为多项式各项的系数,第一个数据码字为最高次项的系数,第一个纠错码字前的最后一个数据码字是最低次项的系数。纠错码字是数据码字被纠错多项式x)除得的余数。余数的最高次项系数为第一个纠错码字,最低次项系数为最后一个纠错码字。不同的纠错码字数对应不同的纠错多项式甙x),颤x)的具体系数可以参照国家标准。通过纠错可以得到正确的符号信息,接下来就要进行数据译码的工作。各模式下的译码本系统主要针对的是数字模式,字母数字模式和8 位字节模式下的译码。数字模式:数字模式下的编码规则如下所示。在版本1,纠错级别为H 的情况下,编码0123
54、4567.把上述数字分为三组:012 345 67.把它们转换成二进制012-0000001100; 354-0101011001; 67 -1000011.把这三个二进制串起来:0000001100 0101011001 1000011.把数字的个数转换成二进制( V1-H 是 10bits) 8个数字的二进制是:0000001000.把数字编码模式0001 和第四步的编码加到前面:0001 0000001000 00000011000101011001 1000011 TOC o 1-5 h z 译码的过程是编码的逆过程。过程如下:(1)首先得到数字个数n(对于版本1-H)即得到第5-15
55、 位的数据,如果 n=3 执行(2),否则执行(3)(2)接着取10 位数据流,转换成10 进制得到3 个数字str,保存在content中 ,content+=str;并令n=n-3.如果n=3,继续执行(2),否则执行(3)(3)如果n=2,取接下来的7 为数据流,转换成10进制得到2个数字str,保存在content中 ,content+=str;否则执行(4).(4)如果n=1,取接下来的4 为数据流,转换成10进制得到1 个数字str,保存在content中 ,content+=str;否则执行(5).(5)结束。上述算法执行完后就可以得到数字模式下的解码内容。数字字母模式:其编码规
56、则为:将输入的数据分为两个字符一组,用11 位二进制表示。将前面字符的值乘以45 与第二个字符的值相加,将所得的结果转换为11 位二进制数。如果输入的数据的字符数不是2 的整数倍,将最后一个字符编码为6 位二进制数。将所得的二进制数据连接起来并在前面加上模式指示符和字符计数指示符,按表3 的规定在字母数字模式中,字符计数指示符的长度为9、 11 或 13 位,其定义见表3。将输入的字符数编码为9、 11 或 13 位二进制数,放在模式指示符之后,二进制数据序列之前 .如下所示。字母数字模式的编码/译码表如表5-3 所示。表 5-3 字母数字模式的编码/译码表 TOC o 1-5 h z 译码过
57、程如下:首先得到字母个数n(对于版本1-H)即得到第5-15 位的数据,如果n=2 执行步骤 (2),否则执行步骤(3)。接着取 11 位数据流,转换成45 进制得到2 个字母 str,保存在 content中 ,content+=str;并令n=n-2.如果n=2,继续执行(2),否则执行(3).如果n=1,接着取6 位数据流,根据字母数字模式的编码/译码表规则转换成对应的 1 个字母保存在content中 ,content+=str。否则执行(4)结束。8 位字节模式译码在本模式中,一个8 位码字直接表示一个输入数据字符的JIS8字符值,即密度为每个字符8 位。在非缺省的其它ECI 中,它
58、直接表示一个8 位字节的值。将二进制数据连接起来并在前面加上模式指示符和字符计数指示符。8 位字节模式的字符计数指示符为8 位或 16 位,将输入字符数转换为8 位或 16 位二进制数据放在模式指示符之后,二进制数据序列之前。 TOC o 1-5 h z 8 位字节模式译码如下:(1)首先得到字母个数n(对于版本1-H)即得到第5-12位的数据,如果 n=1 执行步骤 (2),否则执行步骤(3)。接着取 8 位数据流,转换成10 进制得到对应的ASCII 值 str,保存在content中 ,conternt+=str;并令n=n-1.如果n=1,继续执行(2),否则执行(3).结束。第 6章
59、系统的调试、运行与测试软件在开发完毕后,将进行整合与测试。然而系统测试是保证系统质量和可靠性的关键一步,是针对于系统开发过程成功与否的测试阶段。系统测试有着很多种方法,更需要时效性。系统测试作为软件开发过程中的最后一个关键,关系到了软件质量、软件的可交付性和软件项目的实施周期,系统测试在开发工程中有着不可获取的一部分。系统开发过程中的问题与解决方法关于寻像图形的寻找在扫描图像的时候有些像素点不在图像图像中,可是也在一定程度上满足1:1:3:1:1 ,原因就在于对这个比例误差范围的规定。如果误差过大,会出现很多不满足的线段;如果误差过小,有些寻像图像线段又找不到,所以必须寻找合适的误差范围。经过
60、反复测试发现误差在0.2-0.37 之间具有较好的效果。关于二维码的版本信息由于二维码有很多版本信息,每个版本包含的信息由数据码字,总码字,纠错码字,块数,容量等信息。这些信息的读取直接影响程序的结果。故另外设计了一个类用于存储这些信息。只要用的这些信息就可以调用该对象,虽然占用了一些内存,但是提高了运行速度。二维码模块的采样本文采用的是根据二维码的定位线采样二维码模块。由于二维码的探测图形附近并没有定位线。对探测图形附近的模块本文采用的是根据模块的平均高宽进行取样。由于平均高宽是浮点型,计算机浮点型运算会产生误差。所以这一区域的取样可能会产出错误。加载静态库由于要应用OpenCV的jar 包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品安全相关法律介绍
- 提供交流平台的CFA试题及答案
- 小班图形宝宝课件
- 汉语连词“或者”“还是”“要么”和英语“or”的对比分析与教学策略
- 2024年特许金融分析师考试课后练习题及答案
- 特许金融分析师分析框架与试题及答案
- 自主学习在小学高段英语词汇教学中的应用研究
- 特许金融分析师考试定价理论试题及答案
- 大班安全教育防溺水课件
- 彩平操作流程分享
- 2025年温州职业技术学院单招职业技能考试题库必考题
- 惜水在心节水在行-(3月22日世界水日)课件2024-2025学年高二下学期节约用水主题班会
- 2025年高考物理模拟试卷1(广东卷)及答案
- 部编版五年级下册第二单元快乐读书吧:读古典名著,品百味人生《西游记》整本书阅读推进课教学设计
- 第16课《大家排好队》第一课时
- 患者隐私保护培训课件
- 仿制药政策法规跟踪与解读行业深度调研及发展战略咨询报告
- 天津市部分区2022-2023学年七下期中考试数学试卷(原卷版)
- 2025年度人力资源服务外包项目验收与交付合同范本
- 加气站气瓶充装质量保证体系手册2024版
- 2025新人教版七下英语单词默写表
评论
0/150
提交评论