二维码生成与识别.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京航空航天大学
课程设计题目二维码的生成及识别
何俊豪韩怀晓晋晓飞小组成员:
瞿诗华薛莉
二〇一五年十一月
第一章QR码简介
QR码是由日本Denso公司与1994年制定出来的一种矩阵二维码符号,它除了具有信息容量大、可靠性高、可表示汉字及图像信息、保密性强等优点外,还具有超高速响应、全方位识别等特点。
QR码符号是由正方形的细小模块构成,分为功能区和编码区。功能图形包括位置探测图形、分隔符、定位图形、校正图形、格式信息、版本信息等,编码区域包括数据编码块和纠错码图形。普通QR码基本图形及区域功能对照图如图1.1所示。
图1.1 QR码基本结构
1.1 QR码的密度标识图形
位于两个“回”字标识符之间的黑白相间的条纹,用红色线标注的,这个区域可以用于确定QR码符号的像素方块的密度(即一个像素的大小),标识识别模块如图1.2所示。
图1.2 QR码密度标识图形
1.2 位置探测图形
位置探测图形由三个重叠的同心正方形构成,如图1.3所示。通过探测位置探测图形可以迅速的从背景图像中判断出QR码符号的大致位置。
图1.3 QR码探测图形
二维码定位就是找到二维码符号的位置探测图形,对有明显条码特征的区域进行定位,然后根据图形结构特征值对不同的条码符号进行进一步的处理。通过QR码的定位图形,可以得到左上角位置探测图形的边界点和左下角位置探测图形的边界点如图1.4(a)所示,因此可以采用鲁棒性较好的算法拟合条码左边框,然后通过直线拟合得到条码的上边框直线。在此基础上构建直角三角形,寻找出图形中心,如图1.4(b)所示,并可以得到第四个交点,如图1.4(c)所示。
(a)确定左边界和上边界(b)确定探测图形中心(c)确定第四个交点
图1.4 条码图像初步定位流程
1.3 版本信息
QR码符号共有40种规格,版本1的规格为21模块×21模块,版本2为25模块×25模块,以此类推,每一版本符号比前一版本每边增加4个模块,直到版本40,规格为177模块×177模块。QR码的版本信息图形在整个二维码图像中的位置如图1.5所示,QR码最高版本40可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。
图1.5 版本信息图形
1.4 纠错码
QR码具有“纠错能力”,即使在使用过程中遇到污损、折叠等现象,也可以自动恢复数据。这一“纠错能力”具备四个级别,级别越高,纠错能力越高,但是数据量也会增加,
编码尺寸也会变大。QR码各级别纠错码纠错能力如表1.1所示。
表1.1 纠错码级别纠错能力对照表
QR码的纠错能力
级别L 约7%
级别M 约15%
级别Q 约25%
级别H 约30%
第二章QR码编码规则介绍
将输入的数据转变为一个位流,如果最开始的模式指示符不是默认的,其前面要用ECI 标头,如果以默认的开始,位流的开头为第一个模式的指示符,如表2.1 所示,该表定义了不同模式下的模式指示符。表2.2定义了不同模式和符号版本下的字符计数指示符的长度。
表2.1 模式指示符
模式指示符
ECI 0111
数字0001
字母数字0010
8位字节0100
日本汉字1000
中国汉字1101
结构链接0011
FNCI 0101(第一位置)1001(第二位置)
终止符(信息结尾)0000
表2.2 字符计数指示符的位数
版本数字模式字母数字模式8位字节模式中国汉字模式1~9 10 9 8 8
10~26 12 11 16 10
27~40 14 13 16 12
2.1 数字模式编码实现
将输入的数据从左至右每三位转化成一个10位的二进制数,剩余的一位或者两位数据分别转化成4位或7位二进制数。然后在转换后的二进制数据前加上模式指示符和字符计数指示符。例如输入数据:88899966,编码步骤如图2.1所示。
输入数据:888 999 66
888--1101111000999--111110011166--1000010
1101111000 1111100111 1000010
0001 0000001000 1101111000 1111100111 1000010
转换为二进制
连接序列
添加模式指示符和字符计数指示符
图2.1 数字模式编码流程
2.2 字母模式编码实现
字母模式编码规则与数字模式编码规则类似,不过首先要根据对应的字母模式编码转换表2.3将字符转化为相应的数值,再将每两个字母分为一组,前面字符的值乘以与第二个字符的值相加,所得的结果转换为位二进制数。
表2.3 字母模式编码转换表 字符 值 字符 值 字符 值 字符 值 字符 值 字符 值 字符 值 字符 值 0 0 6 6 C 12 I 18 O 24 U 30 SP 36 . 42 1 1 7 7 D 13 J 19 P 25 V 31 $ 37 / 43 2 2 8 8 E 14 K 20 Q 26 W 32 % 38 : 44 3 3 9 9 F 15 L 21 R 27 X 33 * 39 4 4 A 10 G 16 M 22 S 28 Y 34 + 40 5 5
B
11
H
17
N
23
T
29
Z
35
-
41
2.3 中国汉字模式编码实现
GB2312标准规定的汉字字符为双字节表示。QR 的汉字编码模式将16位的转换为13位二进制字符序列,提高了编码效率。编码具体步骤:
(1)将第一字节值减去0xA6; (2)将(1)的结果乘以0x60; (3)将第二字节值减去0xA1; (4)将(2)的值加上(3)的值; (5)将结果转化成13位二进制。
2.4 纠错编码
按需要将码字序列分块,并根据纠错等级和分块的码字,产生纠错码字,并把纠错码字