二维码编码规则
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二维码编码规则
(1)QR码符号结构
设计中,每个QR码由一个个正方形模块构成,排列组成正方形阵列,其中有编码区域和功能区域,符号的四周是空区。
如图所示:
1.符号规格和版本
QR码总共有40种规格的符号,根据标准,编号分别为规格1到规格40,规格1为21*21个模块,规格2为25*25模块,以此类推。
版本N的规格每行每列为21+4(N-1)个模块。
2.寻像图形
一般来说,寻像图形会分布在3个位置,且图形均相同。
这些图形分别位于符号的、右上角和左下角,如图2-1所示。
以三个重叠的同心的正方形组成探测图形,这些图形的模块宽度比为1:1: 3: 1: 1,分别为7*7个深色模块、5*5个浅色模块、3*3个深色模块。
由于该符号中在其它地方遇到类似图形的可能性极小,所以组成寻像图形的3个位置探测图形可以明确地确定视场中符号的位置和方向[5]。
3.分隔符
探测图形所在的位置和编码区域之间分隔符宽度为1个模块,如图2-1所示。
全部由浅色模块组成。
4.定位图形
定位图形有列和行在垂直和水平方向,组成色由深色浅色交替。
深色模块在开始和结尾,如图2-1所示。
5.校正图形
3个重叠的同心正方形组成校正图形,由5*5个深色模块、3*3个浅色模块以及位于中心的一个深色模块组成。
校正图形的数量由QR码的版本号决定,版本号2及以上的符号均有校正图形,本设计采用的版本号为7。
6.编码区域
在设计中规定有编码区域,编码区域中有多种符号字符,包括数据码字、纠错码字、版本信息和格式信息等。
7.空白区
空白区即为环绕在符号四周的区域,它有4个模块宽的区域,空白区反射率与浅色模块相同。
(2)QR 码编码方法
国家对QR 码规定有一定的标准,其中编码步骤如图所示:
1.数据编码
在数据编码过程中,将输入的数据转换为一个位流,若ECI 为缺省状态,那么一个数据流将包括模式指示符、字符计数指示符和数据,最终以4位终止符0000表示。
其结构如图所示:
(1)数字模式
在本次设计中的数字模式下,必须将待输入的数据转化为二进制数,具体方法为每三位分为一组,剩余位转化为7位或4位二进制数。
把指示符和数字计数指示符加在前面并将二进制数据连接起来。
(2)字母模式
在本次设计中的字母模式下,具体方法为:将前面字符乘以45之后再与第二个字符相加,再将其结果转化为11位二进制数,并将输入的数据以两个字符分为一组,若剩余一位,则将其转化为6位二进制数。
最后把指示符和数字计数指示符加在前面并将二进制数据连接起来即可。
(3)8位字节模式
在8位字节模式下,把指示符和数字计数指示符加在前面并直接将二进制数据连接起来。
2. 纠错编码
QR 纠错码字采用纠错算法,为了符号在遇到损坏时不至丢失数据,把纠错码添加在数字码字序列的后面。
纠错等级共有四级,分别为:L 级纠错容量:7%;M 级纠错容量:15%;Q 级纠错容量:25%;和H 级纠错容量:30%。
3. 构造最终信息
在该步骤中,在确定规格之后,必须按次序把产生的序列放入每一分块中,再按规定将数据
分块,之后再对每一块进行单独计算。
在得出相应的纠错码字区块后,
按顺序把纠错码字区块排列,构成一个序列,添加到数据码字序列后面
[6]。
如D1,D12,D25,D35
,D2,, (11)
D22,D33,D45,D34,D46,E1.E23,E45,E67,E2,E24,...
4. 构造矩阵
在这一步中,需要将探测图形、分隔符、定位图形、校正图形和码字模块放入同一矩阵中,并把算出的序列填充到相应区域中。
5. 掩模
掩模的作用主要是安排深色与浅色模块,除此之外还要尽可能地避免位置探测图形的位图1011101出现在符号的其他区域。
具体使用过程中,我们需要对不同掩模图形的结果进行计分,最后选择得分最低的掩模方案,这样便最可靠。
6. 格式和版本信息
二维码上包含版本信息共18位,均放在两个位置。
例如:6*3的矩阵,其中6位是数据位。
本次设计主要目的是实现QR的编码,图像采集以及译码功能。
QR编码是QR生成的主要方式。
通过对数据进行分析、编码、纠错、确定格式版本信息等几大主要步骤。
编码语言采用Java,使用MyEclipse 10软件编程,需要下载使用QR code.jar包,生成二维码的版本是版本号7,最终生成的图片需要保存为bmp格式[6];在这生成的二维码必须要采集到相应的上位机上进行图像采集,采集过程中用STM32开发板驱动OV7670摄像头进行拍照,拍照后的图片缓存到摄像头自带的缓存器中,编辑程序实现FIFO读写功能,利用USB数据线将图片数据以截图方式输出到上位机中;QR码的识别系统功能主要作用是对采集到的二维码图片进行译码,一次来还原出QR码所携带的信息,编程语言为Java。