食品溯源系统编码的自动生成

更新时间:2024-05-12 12:26:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1

Food Traceability System Automatically Generates Code

ABSTRACT

As the most economical and practical automatic identification technology up to now,bar code technology was proposed in the early 1 970s,which has been widely used in many different fields.In order to satisfy the requirement of expressing more types and greater information capacity in the limited area,twos dimensional bar code came into being,which can make up the inadequacy of ones dimension bar code in expressing information.The study of 2-dimensional barcode abroad was far earlier than the domestic one,so they have possessed many kinds of code core technology such as PDF4 1 7、QR code、Code 49,etc.On the contrary,only few domestic companies have owned our national intellectual property rights of two—dimensional barcode. The key and difficult part of two-dimensional barcode technology is the distinguishing of the barcode.Because of its characteristics such as big capacity, high density ,strong error correcting ability and high security intensity ,its distinguishing technology is much more complicated than one-dimension bar code.Therefore, the research on the encoding and distinguishing technology is very important to reduce the application cost of two-dimensional barcode and to develop its wide application in our country.

As one kind of two-dimensional barcode technology ,Quick Response code (QR code) shows the prosperous future due to its merits such as big information capacity, quick reading speed, directional reading ability and specific data compression pattern on expressing Chinese characters and Japanese characters Having chosen the QR code as the research object, by the analysis of its sign structure, this thesis discusses in detail the encoding rules and error correction coding algorithm, and realizes QR code encoding and decoding software, and puts forward effective image. preprocessing and distinguishing algorithm according to the characteristics the QR code sign.

Keywords:2-Dimensional barcode;QR code;Image Processing

2

目录

第1章 绪论 ............................................................................................................. 1 1.1 研究背景 ......................................................................................................... 1 1.2 国内外发展状况 ............................................................................................. 2 1.3 研究意义 ......................................................................................................... 3 第2章 二维条码技术概述 ..................................................................................... 4 2.1 一维条码 ......................................................................................................... 4 2.2 二维条码 ......................................................................................................... 4 2.2.1 二维条码特性 ........................................................................................... 4 2.2.2 二维条码的分类 ....................................................................................... 6 2.3 QR CODE简介 .................................................................................................. 6 2.3.1 QR码的码图结构 ..................................................................................... 7 2.3.2 QR码的编码模式 ..................................................................................... 8 第3章 QR码的编码设计及实现 ........................................................................ 12 3.1 QR码编码系统的概要设计 ......................................................................... 12 3.2 QR码编码流程详述 ...................................................................................... 12 3.2.1 数据分析和编码 ..................................................................................... 13 3.2.2 模式选择 ................................................................................................. 14 3.2.3 纠错编码 ................................................................................................. 14 3.2.4 构造最终的信息 ..................................................................................... 15 3.2.5 在矩阵中布置模块 ................................................................................. 16

3

3.2.6 掩模 ......................................................................................................... 18 3.2.7 格式信息 ................................................................................................. 19 3.3 编码程序介绍 ............................................................................................... 19 第4章 QR码的译码设计 .................................................................................... 21 4.1 QR码译码原理 .............................................................................................. 21 4.2 图像预处理和识别 ....................................................................................... 22 4.3 纠错和译码 ................................................................................................... 24 第5章 QR CODE码技术在食品溯源中的应用 ................................................ 25 第6章 总结 ........................................................................................................... 27 致谢 ......................................................................................... 错误!未定义书签。 参考文献 ................................................................................................................. 29

4

第1章 绪论

1.1 研究背景

食品安全问题关系到广大人民群众的身体健康和生命安全,关系到经济发展和社会稳定,历来受到高度的关注与重视。然而近年来食品安全问题日益突出,国际上疯牛病、口蹄疫和禽流感等疾病相继爆发和传播,而国内也发生了苏丹红、永年大蒜和劣质奶粉等食品质量问题。究其原因是食品的生产过程存在众多问题,产品生产、物流信息,检疫检测信息等均有太多人工参与,各操作环节均容易产生错误/虚假信息,且各个不相关环节间很难做到信息核实,影响产品整体管理及信息查询;另外产品生产、物流、经销、检疫检测等各环节相对独立,每一环节往往只能有效查看其上下游接口环节的操作信息,难以做到信息流整体的监察管理;无法将监察管理信息传递到普通市民手中,真正在食品安全卫生上做到安心、放心、舒心。

食品一旦出现问题,直接危害到广大人民群众的身体健康和生命安全,同时对厂家来说也会蒙受重大损失,品牌形象受损,甚至企业倒闭。如果能引入食品原材料追溯系统,即使上市的食品出现问题,食品厂家也能快速找出原因,可以只追回部分的问题食品而无需追回所有产品,可见食品追溯的重要性。

二维条码与普通的—维条码相比可以放入大量的信息,容易实现信息化管理,一旦食品发生质量问题,马上可以确认食品的生产过程,食品问题原因所在,及时召回问题食品,将企业的经济损失、信誉损失降低到最小范围。

二维条码是目前全球应用的最广泛的技术之一,该技术具有存储量大、性价比高、数据采集与识读方便等优点。二维条码技术是一种基于光学识读图像的编码技术,它涉及到光、机电、印刷、信息安全、标识等多个领域。

计算机技术在当今的社会中起着重要的作用,但是计算机有着数据输入速度慢、容易出错的“缺点”。自动识别技术能提供快速、准确地数据采集,从而解决上面的“缺点”。自动识别技术可以提高数据质量和录入数据速度,同时可以消除人为干扰,其中比较突出的技术有条码技术、生物识别技术、光学识别技术、声音识别及视觉识别等技术,这些技术都是集计算机、光、机、电、通信技术为一体的高新技术。

二维条码技术与其它识别技术相比具有信息载体的成本低、信息量大、保密性强、抗污染性好等优势,因此具有良好的推广价值和应用前景。

与其它识别技术相比,条码识别技术具有以下几个优点: (1) 高速

条码识读容易,用光电设备并将条码信息录入比人工键盘输入数据的方法要快得多。键盘输入12位数字需要6秒钟,而用条码扫描器输入则只有0.2秒。

(2) 可靠性

用光电扫描设备识读条码的错误率很低,并且大多数条码具有自校验和自纠错功能,在实际应用中,条码输入的错误率约在百万分之一以下,而人工输入的错误率则高的多。条码的正确识读率达99.99-99.999%。

(3) 成本低

条码标签制作容易且成本低,对印刷的设备和材料无特殊要求。与其它自动识别技术相比,价格便宜,具有很好的实用价值。

1

PDF417很难实现全方位识读。

(3) 能够有效地表示中国汉字、日本汉字

QR code表示汉字的效率是在全部的二维条码中是最高的。QR code通过一种特定的压缩方法表示日本汉字和中国汉字,表示一个汉字只需要“13bit”。而PDF417,Data Matrix等二维条码表示汉字时只能使用字节表示模式“16bit”。因此,与其它的二维条码相比,QR code在表示汉字上提高了近20%的效率。

QR code除具有基本的二维条码优点,还具有高效的表示汉字,在表示同样的数据信息时,QR码具有更小的尺寸,更适合在我国推广和使用。因此,在我国使用和推广QR code具有光明的前景。 2.3.1 QR码的码图结构

QR码符号是一个方形模块组成的正方形阵列,该阵列包括编码区域(由格式信息、版本信息以及数据和纠错码字组成)和功能图形(由寻像图形、分隔符、定位图形以及校正图形组成),编码区域是用于对数据或纠错码字进行编码的区域,而功能图形是指符号中用于符号定位与特征识别的特定图形。符号周围是空白区,以版本7的QR码为例,它的符号结构图如图2-2所示。

图2-2 QR码符号结构图

(1) 寻像图形

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

7

图2-3 位置探测图形结构

(2) 分隔符

在每个位置探测图形和编码区域之间有宽度为1个模块的分隔符,它全部由浅色模块组成。分隔符用于将位置探测图形与符号的其余部分分开。

(3) 定位图形

水平和垂直的定位图形分别为一个模块宽的一行和一列,由深色与浅色模块交替组成,其开始和结尾都是深色模块。水平定位图形位于符号上侧的两个位置探测图形之间,在第7行;垂直定位图形位于符号左侧的两个位置探测图形之间,在第7列。定位图形能提供决定模块坐标的基准位置。

(4) 校正图形

校正图形是用于确定矩阵符号位置的一个固定的参照图形,在图像有一定程度损坏的情况下,译码软件可以通过它同步图像模块的坐标映像。每个校正图形可看作是3个重叠的同心正方形,由5×5个深色模块、3×3个浅色模块以及位于中心的一个深色模块组成,校正图形的数量根据QR码符号的版本号而定,版本2以上(含版本2)才有校正图形。

(5) 格式信息

格式信息是包含符号所使用的纠错等级以及掩模图形信息的功能图形,用于对编码区域的剩余部分进行译码。它在符号中出现两次以提供冗余,因为它的正确译码对整个符号的译码至关重要。格式信息为15位,其中有5个数据位,包括纠错等级指示符和掩模图形参考;10个是用BCH(15,5)编码计算得到的纠错位。

(6) 版本信息

版本信息用于表示符号规格的系列,同时也可指示符号所应用的纠错等级。它是一个由6个数据位和12个BCH纠错位组成的18位的序列。由于版本信息的正确译码是整个符号正确译码的关键,因此版本信息在符号中也出现两次以提供冗余。6行×3列模块组成的版本信息块放在水平定位图形的上侧,其右侧紧邻符号右上角位置探测图形的分隔符,3行×6列模块组成的版本信息块放在垂直定位图形的左侧,其下侧紧邻符号左下角位置探测图形的分隔符。

(7) 空白区

空白区为环绕在符号四周的4个模块宽的区域,其反射率应该与浅色模块相同。 2.3.2 QR码的编码模式

QR码的编码字符集包括数字型数据、字母数字型数据、8位字节型数据和中国汉字字

8

符。对应不同的字符集,QR码采用不同的模式来进行编码。

(1) 扩充解释(ECI)模式

扩充解释(ECI)协议允许输出的数据流有与缺省的字符集不同的解释。ECI协议在一些码制中有一致的定义。QR码支持以下4类:(1)国际字符集;(2)用于诸如加密或压缩等一般目的的解释;(3)闭环系统中用户自定义的解释;(4)无缓冲模式中用于结构链接的控制信息。

ECI协议在AIM ECI规范中有全面的定义,协议提供了一个对印刷前和译码后的字节值进行详细解释的方法。QR码缺省的解释是ECI000020,表示ASCII字符集。如果最初的ECI不是缺省的ECI,则将输入数据转换为一个位流时,在其前面要有ECI标头,后接一个或多个不同模式的段,每段的结构包括模式指示符、字符计数指示符和数据位流。如果是以缺省的ECI开始,位流的开头则为第一个模式的指示符。

ECI标头应包含ECI模式指示符和ECI指定符。表2.1给出了每个模式的模式指示符,表2.2出了采用不同模式和符号版本的字符计数指示符的长度。

表2.1 模式指示符

模式 ECI模式 数字模式 字母数字模式 8位字节模式 中国汉字模式 结构连接 FNCI 指示符 0111 0001 0010 0100 1101 0011 0101(第一位置) 1001(第二位置)

表2.2 字符计数指示符的长度

版本 1-9 10-26 27-40 数字模式 字母数字模式 8位字节模式 10 9 8 12 11 16 14 13 16 中国汉字模式 8 10 12

由于本课题研究的编码算法中采用的编码模式都是根据缺省的ECI有关的字符值与任务定义的,故对ECI模式不再详述。

(2) 数字模式

数字模式对十进制数字0-9编码,通常的密度为每10位二进制数表示3个字符。数字模式编码将输入的数据每三位分为一组,将每组数据转换为10位二进制数。如果输入数据的长度不是3的整数倍,剩余的1位或2位数字应分别转换为4位或者7位二进制数。转换后将得到的二进制数据序列连接起来并在前面加上模式指示符(0001)和字符计数指示符。数字模式中,字符计数指示符的长度如表2.2中定义的有10、12或14位,输入数据字符的数量转换为10、12或14位二进制数后,放置在模式指示符之后,二进制数据序列之前。

例如符号版本1.H,输入的数据为0123456789 分为3位一组:012 345 678 9

将每组转换为二进制数:012->0000001 100 345->010101 1001 678->1010100110 9->1001

9

将二进制数连接为一个序列:0000001100 0101011001 1010100110 1001

将字符计数指示符转换为二进制(版本1.H为l0位):输入字符个数10->0000001010加入模式指示符0001以及字符计数指示符后的二进制序列为:0001 00000010100000001100 0101011001 1010100110 1001

数字模式中位流长度计算公式为:

B=4+C+10(D div 3)+R ( 2.1 )

其中B=位流的长度;C=字符计数指示符的长度(见表2.2);D=输入数据的字符个数;当D mod 3=0时R=0;当D mod 3=1时R=4;当D mod 3=2时R=7。

(3) 字母数字模式

字母数字模式对45个字符进行编码,即10个数字(0-9)、26个字母字符(A~Z)以及9个符号(space,$,%,·,+,-,.,/,:)。通常情况下两个输入字符用11位表示。该模式对每一个输入的字符赋予一个数值,它的值为0到44。

字母数字模式将每两个输入的数据分为一组,用11位二进制表示,将第一个字符的值乘以45与第二个字符的值相加,再将所得的结果转换为1l位二进制数。如果输入数据的字符数不是2的整数倍,将最后一个字符编码为6位二进制数。转换完成后将所得的二进制数据连接起来并在前面加上模式指示符(0010)和字符计数指示符,在字母数字模式中,字符计数指示符的长度为9,11或13位。

例如(符号版本1.H),输入的数据为:PDF 417(注:F与4之间有space)

根据附录A的表A-1查出字符的值:PDF 417->(25,13,15,36,4,1,7) 将结果分为2个一组:(25,13)(15,36)(4,1)(7) 将每组数据转换为11位二进制数

(25,13)25*45+13=1138->10001110010 (15,36)15*45+36=711->010110001l1 (4,1)4*45+1=181->000101 10101 (7) 7->00011l

将二进制数据顺次连接得到的位流:10001110010 01011000111 00010110101 00011l 将字符计数指示符转换为二进制(版本1.H为9位):输入字符个数7->000000111

在二进制数据前加上模式指示符0010和字符计数指示符后得到的二进制序列为:0010000000111 10001110010 01011000111 00010110101 000111

字母数字模式的位流长度计算公式为:

B=4+C+11(D div 2)+6(D mod 2) ( 2 .2 )

其中B=位流的长度;C=字符计数指示符的长度(见表2.2);D=输入数据的字符个数。 (4) 8位字节模式

8位字节模式用于表示ASCII字符集(字符值为00HEX~FFHEX),其编码密度为每个字符8位。在本模式中一个8位码字直接表示一个输入数据字符的ASCII字符值。在非缺省的其他ECI中,它直接表示一个8位字节的值。

8位字节模式将输入数据的ASCII码值依次转换为二进制数据,将二进制数据连接起来并在前面加上模式指示符(0100)和字符计数指示符,按表2.2的规定,8位字节模式的字符计数指示符长度为8位或者16位,将输入字符个数转换为8位或16位二进制数据放在模式指示符之后,二进制数据序列之前。

例如(符号版本1.H),输入的数据为:QR Code(注:两个单词之间有space) 查ASCII表得到字符值为:QR Code->(81,82,32,67,111,100,101)

将每个字符值转换为8位二进制数得到位流01010001 01010010 00100000 01000011 01101111 01100100 01100101

10

将字符计数指示符转换为二进制(版本1.H为8位):输入字符个数7->000001l1l

在二进制数据前加上模式指示符0100和字符计数指示符后得到的二进制序列为:0010 00000111 01010001 01010010 00100000 0100001l 01101111 01100l00 01100101

8位字节模式的位流长度计算公式为:

B=4+C+8D ( 2.3 )

其中B=位流的长度;C=字符计数指示符的长度(见表2.2);D=输入的数据字符个数。 (5) 中国汉字模式

中国汉字模式用于表示GB2312规定的双字节表示的中国汉字和非汉字字符,其字符值为GB2312规定字符对应的内码值,详见GBl8030,每个双字节字符由13位二进制数表示。GB2312中规定的中国汉字和非汉字字符共7445个,其中汉字字符6768个。

中国汉字模式将输入数据字符值按下述方式转换为13位二进制数。随后将二进制数据连接起来并在前面加上模式指示符(1101),中国汉字子集指示符(GB2312的子集指示符为0001)和字符计数指示符。中国汉字子集指示符为4位二进制数,字符计数指示符的长度按表2.2规定为8,10或12位,将字符计数指示符转换为相应的8,10或者12位二进制数,放在模式指示符之后,二进制数据序列之前。

方式l:对于第一字节值在A1HEX到AAHEX范围,第二字节值在A1HEX到FEHEX范围的字符:(第一字节值--A1HEX)×60HEX+(第二字节值--A1HEX)->将结果转换为13位二进制串。

方式2:对于第一字节值在B0HEX到FAHEX范围,第二字节值在A1HEX到FEHEX范围的字符:(第一字节值--A6HEX)×60HEX+(第二字节值--A1HEX)->将结果转换为13位二进制串。

例如(符号版本1.H),输入的数据为:“安”,其内码值为B0B2 采用方式2:(B0-A6)X 60+(B2-A1)=3C0+1l=3D1 将结果转换为13位二进制数0001 1 l 1010001 中国汉字模式的位流长度计算公式为:

B=4+4+C+13D (2.4) 其中B=位流的长度;C=字符计数指示符的长度(见表2.2);D=输入的数据字符个数。 (6) 混合模式

QR码符号可以包含多种模式表示的混合数据序列。根据数据内容的要求或者为了增加编码密度,可以从一种模式转换到另一种模式来分段表示数据,每一段数据按照各自采用的模式所给出的编码规则进行编码。混合模式的基本结构为模式指示符、字符计数指示符、数据,其后紧跟下一段的模式指示符。图2-4为有n段数据的混合模式的结构。

图2-4 混合模式数据结

11

第3章 QR码的编码设计及实现

QR Code是一种矩阵型二维条码,它具有存储信息容量大、可靠性高、超高速全方位识读的特点,可表示汉字、图像等多种类型的信息,并由于其用特定的数据压缩模式表示汉字,使得QR码比其他二维条码表示汉字的效率更高,更加适合我国的应用需求;国标GB/T 18284-200—快速响应矩阵码的制定更为QR码在我国的推广应用奠定了基础。

3.1 QR码编码系统的概要设计

QR码的计算机编码方式非常复杂。从编码模式来看,它含有多种不同的模式,每种模式的处理方法都不相同,所产生的数据码字也不同,程序需要对用户的输入数据信息进行分析并选择适当的编码模式,并能在各种编码模式之间进行灵活的切换;从编码携带的内容方面,它不仅本身是一个流动的数据文件,有大量的主信息内容,而且还包含很多附加信息,如版本的选择、纠错级别的选择、模式指示符、数据长度指示符、纠错码字、填充码字等,需要程序识别并一一对应编码。程序还需要将各种数据信息按照标准置入QR码符号矩阵中的相应模块。此外程序还应该具备条码符号图形显示的功能。

3.2 QR码编码流程详述

QR码编码系统的流程如图3-1所示。

图3-1 数据编码流程图

12

3.2.1 数据分析和编码

QR码的编码字符集包括:数字型数据(数字0-9)、字母数字型数据(数字0-9,大写字母A-Z,9个特殊字符:space,$,%,*,+,-,.,/,:)、字节型数据(8位ASCII字符集)、中国汉字字符。

QR码的数据编码主要通过采用选定的数据模式及模式所对应的数据变换规则,将数据字符转换为位流。在编码时应首先分析所输入的数据流,确定要进行编码字符的类型。对于不同的字符集,QR码使用不同的模式进行编码,各模式编码时采用的方式不同,编码时可以在不同模式之间进行转换,以便高效地将不同的字符子集数据转换为二进制位流。另外,用户还可以根据需要选择合适的错误检测和纠正等级,如果没有指定所采用的符号版本,则选择与数据相适应的最小的版本。编码过程中若需要进行模式转换,则在新的模式段开始之前加入模式指示符进行模式转换,并在数据序列后面加入终止符。编码后的二进制位流有一个或多个不同模式段组成,其中每一段包括:模式指示符(4位)、字符计数指示符和数据位流,将产生的位流分为每8位一个码字进行划分,必要时可加入填充字符以填满按照版本要求的数据码字数。

表3.1为QR码全部符号版本及其容量。

表3.1 QR码全部符号版本及其容量

版本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 每边的模功能图形块数(A) 模块数(B) 21 202 25 235 29 243 33 251 37 259 41 267 45 390 49 398 53 406 57 414 61 422 65 430 69 438 73 611 77 619 81 627 85 635 89 643 93 651 97 659 101 882 105 890 109 898 格式及版本信息模块数(C) 31 31 31 31 31 31 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 13

除C意外的数据模块数(D=A2-B-C) 208 359 567 807 1079 1383 1568 1936 2336 2768 3232 3728 4256 4651 5243 5867 6523 7211 7931 8683 9252 10068 10916 数据容量[码字](E) 26 44 70 100 134 172 196 242 292 346 404 466 532 581 655 733 815 901 991 1065 1156 1258 1364 剩余位 0 7 7 7 7 7 0 0 0 0 0 0 0 3 3 3 3 3 3 3 4 4 4 24 113 25 117 26 121 27 125 28 129 29 133 30 137 31 141 32 145 33 149 34 153 35 157 36 161 37 165 38 169 39 173 40 177 注:码字的长度为8位。 3.2.2 模式选择

906 914 922 930 1203 1211 1219 1227 1235 1243 1251 1574 1582 1590 1598 1606 1614 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 11796 12708 13652 14628 15371 16411 17483 18587 19723 20891 22091 23008 24272 25568 26896 28256 29648 1474 1588 1706 1828 1921 2051 2185 2323 2465 2611 2761 2876 3034 3196 3362 3532 3706 4 4 4 4 3 3 3 3 3 3 3 0 0 0 0 0 0 QR码数据码字的编码模式主要有扩展解释模式(ECI)、数字模式(NC)、字母数字模式(AC)、8位字节模式、中国汉字模式等几种。将数据信息转化为二进制的位流序列的方法是按照每8位一个码字,将位流序列转化为码字序列的。如果最开始的ECI模式不是缺省的ECI模式,其前面要有ECI标头,后面为一个或多个不同模式的段;如果以缺省的ECI开始,位流的开头为第一个模式的指示符。

ECI标头应包含的内容:ECI模式指示符(4位)和ECI指定符(8,16或24位)。 位流的其余部分的第一段应包含:模式指示符(4位)、字符计数指示符和数据位流。ECI标头由ECI模式指示符的最高位开始,以ECI指定符的最低位结束。每个模式段以模式指示符的最高位开始,以数据位流的最低位结束。段与段之间没有特定的分隔,因为段的长度已经由相关模式中的数据字符数明确的确定了。 3.2.3 纠错编码

QR码采用纠错算法生成相应的纠错码字,添加在数据码字序列之后。QR码具有的强检错和纠错能力使得条码标签在实际应用中遇到损坏时可以恢复数据。QR码纠错分4个等级,分别对应四种纠错容量。

(1) 纠错等级的选择

QR码的纠错等级及所对应的纠错能力见表3.2。编码时,根据QR码符号的使用环境及用户的要求选择合适的纠错等级。

表3.2 不同纠错等级所对应的纠错能力 纠错等级 L 14

回复容量%(近似值) 7 M 15 Q 25 H 30 (2) 纠错码字的计算 QR码采用Reed-Solomon算法来实现纠错编码,因此具有很强的纠错能力。纠错编码的实现过程为将得到的码字按照不同的版本和纠错等级分块,每一块分别计算出纠错码字并添加到数据码字后;数据码字为多项式各项的系数,第一个数据码字为最高次项的系数,最后一个数据码字是最低次项的系数;生成按降幂排列的多项式,然后用纠错码字生成多项式g(x)去除该多项式,所得到的余数多项式的系数,就是各个纠错码字。也即余数的最高次项系数为第一个纠错码字,最低次项系数为最后一个纠错码字,也是整个块的最后一个码字。QR码的多项式算法用位的模2算法和字节的模100011 101算法。这是加罗瓦域28以100011 101表示主模块多项式:X8+X4+X3+X2+1。用于生成纠错码字的多项式有31个,详见QR码国家标准GB/T 18284-2000。 3.2.4 构造最终的信息

纠错码字生成后,连接数据码字和纠错码字以形成最终位流序列。最短的数据块应在序列的最前面,所有的数据码字应在第一个纠错码字的前面。排列标准为:

数据块l的码字1, 数据块2的码字1, 数据块3的码字l,

数据块n的码字1,数据块1的码字2, 数据块2的码字2,

数据块n-1的最后一个码字,数据块n的最后一个码字, 纠错块1的码字1,纠错块2的码字1, 纠错块n-1的最后一个码字, 纠错块n的最后一个码字。

QR码符号所包含的数据块和纠错块在某些版本下不能填满符号的码字容量时,可以添加3、4或7个剩余位在最终的信息位流中,以填满编码区域的模块数。

例如,版本5.H的符号由4个数据和纠错块组成,前两个块分别包括11个数据码字和22个纠错码字,第3、4个块分别包括12个数据码字和22个纠错码字。在此符号中,字符的布置如下,表中每一行对应一个块的数据码字(表示为Dn)和相应块的纠错码字(表示为En);符号中字符的布置可以通过由上向下逐列读表3.3中的各列得到。

表3.3 码字序列排列

数据字码 纠错字码 块1 D1 D2 ?? D11 E1 E2 ?? E22 块2 D12 D13 ?? D22 E23 E24 ?? E44 块3 D23 D24 ?? D33 D34 E45 E46 ?? E66 块4 D35 D36 ?? D45 D46 E67 E68 ?? E88 从表可读出最终的码字序列为:D1,D12,D23,D35,D2,D13,D24,D36, D1 1,D22,D33,D45,D34,D46,El,E23,E45,E67,E2,E24,E46,E68, E22,E44,E66,E88。(如果需要,在最后的码字后面加上剩余位0)

15

3.2.5 在矩阵中布置模块

(1) 符号字符表示

QR码中符号字符分为两种:规则的和不规则的,其使用取决于它们在符号中的位置,以及与其他符号字符和功能图形的关系。

码字在符号中表示大多数为规则的2×4个模块的排列。在垂直方向和水平方向上构成两种排列方式:垂直布置(2个模块宽,4个模块高)和水平布置(4个模块宽,2个模块高)。不规则符号字符用在需要改变方向或紧靠校正图形或其他功能图形时。

图3-2 QR码规则符号字符的排列

(2) 布置功能图形 QR码的版本不同,对应的图形矩阵也不同,应按照使用版本相对应的模块数构成空白的正方形矩阵。在功能图形区域中的寻像图形、分隔符、定位图形以及校正图形相应的位置,填充深色和浅色的模块。其中,校正图形随各版本不同,图形的数量和位置存在较大的不同,但每一版本的校正图形数量和每一校正图形的中心模块的坐标是确定的。格式信息和版本信息的模块位置暂时空置,到最后定。

(3) 布置符号字符

在QR符号的编码区域中布置符号字符时,以2个模块宽的纵列从符号的右下角开始,并自右向左,且交替地从下向上或从上向下排列,在遇到功能字符时绕开。符号字符的布置原则如下:

① 纵列方向上,位序列从右到左进行布置,向上或向下应与符号字向保持一致。 ② 第一个可用的模块位置放置每个码字的最高位(即位7),后续的位放在下一个模块 的位置。如果布置方向向上,则最高位占用规则模块字符的右下角的模块;若置 方向向下,则占用右上角的模块。如图3-3。如果先前字符结束于右侧的模块列,最高位可能占据不规则符号字符的左下角模块的位置。

16

图3-3 向上或向下的规格自付的位的布置

③ 在布置符号字符过程中,若两个模块纵列同时遇到校正图形或定位图形的水平边界,则可在图形的上面或下面继续布置,此时视编码区域是连续的。

④ 如果遇到符号字符区域的上边界或下边界(即符号的边缘,格式信息,版本信息或分隔符),应改变方向将码字在左侧的纵列或分隔符。

图3-4 布置方向改变的符号字符位步置示例

⑤ 如果符号字符的右侧模块纵列遇到校正图形或版本信息占用的区域,位的布置形成不规则排列符号字符,在相邻校正图形或版本信息的单个纵列继续延伸。如果字符在可用于下一个字符的两列纵列之前结束,则下一个符号字符的首位放在单个纵列中。

另一种可供选择的符号字符布置方法,可得到与以上方法相同的结果:将整个码字序列视为一个单独的位流,从最高位开始自右向左,分别按向上和向下的方向交替布置于两个模块宽的纵列中,并跳过功能图形占用的区域,在纵列的顶部或底部改变方向,每一位放在第一个可用的位置上。如版本1中符号的布置方法。

17

图3-5 版本1符号的符号布置

3.2.6 掩模

在QR码符号中加入掩膜信息是为了提高QR码识读的可靠性,并尽可能地避免位置探测图形出现在符号的其它区域。掩模不用于功能图形,只对编码区域进行掩膜。

掩膜的实现过程为:先用多个矩阵图形(掩膜图形)连续地对编码区域模块图形(格式信息和版本信息除外)进行XOR操作。XOR操作将模块图形依次放在每个掩模图形上,并将对应于掩模图形的深色模块的模块取反(浅色变成深色,或相反);接着评价各个掩膜的结果,选择得分最低的图形。

QR码提供8种掩模图形,通过将编码区域(除格式信息和版本信息之外)内条件为真的模块定义为深色而产生。如果用户选定其中一种,则按用户选择的进行掩模添加;如果用户不特定选择掩模,则需要自动选择合适的掩模。表3.4为掩模图形参考和相应的掩模图形的生成条件,其中i代表模块的行位置,j代表模块的列位置, (i,j)=(0,0)代表符号中左上角的位置。

对8种掩模添加后的结果图形进行评价的原则是选择得分最低的图形,即评分标准认为的深浅色模块最均衡图形。掩模结果的评估详见QR码国家标准GB/T l 8284-2000。

表3.4 掩模图形生成条件

掩模图形选择 000 001 010 011 18

条件 (i+ j)mod 2=0 i mod 2=0 j mod 3=0 (i+ j) mod 3=0 100 101 110 111 3.2.7 格式信息

(i div 2)+(j div 3) mod 2=0 (i+ j)mod 2+ (i+ j)mod 3=0 ((i+ j)mod 2+ (i+ j)mod 3)=0 ((i + j) mod 3+(i + j) mod 2) mod 2=0 QR码格式信息共15位,包含5个数据位,其中前2位为纠错等级,后3位为掩模图形号码,剩余10位是用BCH(15,5)编码计算得到的纠错位。将得到的15位格式信息与掩模图形101010000010010进行异或运算,以确保纠错等级和掩模图形合在一起出现全是0的情况。

QR码版本信息共18位,包含6位数据位,为版本信息,通过BCH(18,6)编码计算出12个纠错位放在数据位之后。

因为格式信息和版本信息的正确译码是整个符号正确译码的关键,因此QR码提供了格式信息和版本信息的冗余,它们在符号中均出现两次。

3.3 编码程序介绍

QRCodeEncoder类主要的数据成员及成员函数: public Class QRCodeEncoder//编码类

{public enum ENCODE-MODE{ALPHA-NUMERIC,NUMERIC,BYTE,CHINA};//四种模式数字、字母数字、字节、汉字

public enum ERROR-CORRECTION{L,M,Q,H};//四种纠错等级 internal ERROR-CORRECTION qrcodeErrorCorrect;//纠错变量 internal ENCODE-MODE qrcodeEncodeMode;//编码模式变量 internal int qrcodeVersion;//版本号

internal int qrcodeStructureappendN;//参数N internal int qrcodeStructureappendM;//参数M

internal int qrcodeStructureappendParity;//奇偶校验位 internal Color qrCodeBackgroundColor;//背景颜色 internal Color qrCodeForegroundColor;//前景颜色

internal int qrCodeScale;//矩阵码符号每个模块的像素大小

internal String qrcodeStructureappendOriginaldata;//要进行原始数据流 public QRCodeEncoder(){??} //编码类的构造函数

public virtual void setStructureappend(int m,int n,int p){??} //设置编码的扩充解释模式

public virtual int calStructureappendParity(sbyte [] originaldata) {??}//编码的扩充解释模式中的奇偶校验位产生函数

public virtual bool[][]calQrcode(byte[] qrcodeData ) {??} //根据要编码的数据得到布尔型二维矩阵

private static sbyte[]divideDataBy8Bits(int[] data,sbyte[]bits, int maxDataCodewords) //把位流按码字分组

19

private static sbyte [] calculateRSECC(sbyte[]codewords,sbyte rsEccCodewords,sbyte[]rsBlocdorder,int maxdataCdewords maxcodewords){??}//计算数据的纠错

码函数,codewords为要纠错的码字,resEccCodewords为纠错码字,rsBlockorder纠错码字块,maxDataCodewords最大信息数据码字.最大数据码字 prirate static sbyte selectMask( sbyte[][]matrixContent int maxCodewordsBitWithRemain)//选择掩模图像函数

public virtual Bitmap Encode(String content, Encoding encoding) //把要编码的数据以及根据它的编码模式的类别来生成图像 public virtual Bitmap Encode(String content)

//根据给定的原始数据函数未构造QR码的符号图像 private String GB2312(string str)

{Encoding gb=Encoding.Get Encoding(“gb2312”); byte[]bytes=gb.GetByte(str);

string low ode=System.Convert.ToString(bytes[0],16); //取出元素1编码内容(两位16进制)

string hightCode=System.Convert.ToString(bytes[1],16); //取出元素2编码内容(两位16进制) string encode=lowCode+hightCode return encode;

//函数返回汉字的GB2312值内码(四位16进制) } }

20

第4章 QR码的译码设计

4.1 QR码译码原理

QR的译码是从识读一个QR码符号到输出数据字符的过程,是编码的逆过程。这个过程主要分为三部分:图像预处理和QR码识别、QR码纠错、QR码译码。

图像预处理过程主要是在采集的图像中定位QR码图像,QR码识别过程主要是通过图像识别得到单元模块的条码符号矩阵,并将符号矩阵转化成一维字节流的形式,纠错是应用检测和纠错译码程序来纠正替代错误与拒读错误,直到规定的纠错容量。然后通过QR码解码操作,得到存储在QR码符号矩阵中的信息数据。

从识读一个QR码符号到输出数据字符的译码步骤是编码程序的逆过程,图4-1为该过程的流程:

(1) 定位并获取符号图像。深色和浅色模块识别为由“0”与“1”组成的阵列。

(2) 识读格式信息(按需要去除掩模图形并完成对格式信息模块的纠错,识别纠错等级与掩模图形参考)。

(3) 识别版本信息(如果应用),确定符号的版本。

(4) 用掩模图形(掩模图形参考己经从格式信息中得到)对编码区域的位图进行异或处理,消除掩模。

(5) 根据模块排列规则,识读符号字符,恢复信息的数据与纠错码字。

(6) 用与纠错等级信息相对应的纠错码字检测错误,如果发现错误,则进行纠错。 (7) 根据模式指示符和字符指示符将数据码字划分成多个部分。 (8) 最后,按照使用的模式进行译码,得出数据字符并输出结果。

21

第6章 总结

本文针对QR code条码的码制标准、RS和BCH纠错码原理、QR code条码编解码流程进行了研究和编程实现,并实现了条码的可变打印系统,主要工作如下:

(1) 文章简要概述了有关一维、二维条码的起源、发展和应用前景,说明了研究本课题的现实意义。

(2) 深入研读了QR code条码的标准文档,并用C#语言实现了QR code条码的生成过程,输入原始信息能够准确地生成代表该信息内容的二维条码符号。根据对国标GB/T18284- 2000《快速响应矩阵码》标准中传统编码模式做出的改进来实现编码方案使得编码更简单。

(3) 研究RS、BCH纠错码在QR code条码编解码中的应用算法,总结归纳出通用的RS编码和译码算法,并将其应用在QR code条码编解码系统。

(4) 用C#语言实现了QR code条码的编

解码系统。编码系统能完成从输入数据到生成相应QR code条码符号的功能,解码系统能完成对QR code条码编码系统生成的QR code条码图像进行解码,得到QR code条码所携带的信息。

对于二维条码的研究,本论文中尚有需要改进和完善的工作:

(1) 对于高版本大容量QR code条码的编、解码算法还需要进一步优化和补充,才能使编、解码处理时间满足我们实际生产生活中的需要。同时为了使条码应用系统能广泛用到市场中,还需要将其系统硬件化。

(2) 对于QR code条码解码过程的图像预处理还需要更深入的研究与编程实现。

(3) 二维条码作为载体,还可以结合生物识别技术,在个人身份防伪上发挥重要作用。生物特征识别技术包括指纹、虹膜、人脸、掌纹、耳形等识别技术。二维条码可加密存储大容量信息,因此可以把指纹、虹膜、掌纹等个人身份特征信息加入到二维条码中,印在个人证件上。验证时,通过二维条码解码出证件上的个人特征信息,比对现场采集的个人生理信息(如采集虹膜、指纹),就可做到校验个人身份的真伪。这些方面是以后更深入研究的动力。

27

28

参考文献

[1] 王江.食品生产溯源技术再规范[J].农产品市场周刊,2009年50期.

[2] 张涵,李素彩.应用条码技术进行食品溯源的可行性分析[J].物流技术,2006年01期.

[3] 秦玉青,耿全强,晏绍庆.基于食品链的食品溯源系统解析[J].现代食品科技,2007年11期. [4] 陈志峰,王峥,施连敏,贾海天.水产品溯源信息平台的研究[J].江苏技术师范学院学报,2009

年03期. [5] 杨明,吴晓萍,洪鹏志,解万翠,蒋志红,邓锐,彭银桥.可追溯体系在食品供应链中的建立[J]. 食

品与机械,2009年01期.

[6] 尹超.我国农产品供应链管理信息系统的构建研究[D].长春理工大学,2011年.

[7] 范海芹.农产品供应链及其管理信息系统关键技术研究[D].武汉理工大学,2008年. [8] 董强.QR码识别技术及在手机中的应用[D].青岛大学,2006.

[9] 吕文红.二维条形码的编码与识别[J].现代电子技术,2002年第7期. [10] 戴扬.二维条形码编译码原理与应用研究[D] .南京航空航天大学,2004. [11] 郑风田,赵阳.我国农产品质量安全问题与对策[J].中国软科学,2003.

[12] 李勇,任国元,杨万江.安全农产品市场信息不对称及政府干预[J].农业经济问题,2004. [13] 食品安全影响农业和食品工业竞争力的关键[J] .农产品加工,2003 . [14] 白健风.二维条码技术应用研究[J].条码与信息系统,2000.4.

[15] 徐杰民,肖云.二维条码技术现状及发展前景[J].计算机与现代化,2004.12.

[16] 刘志海,万丽荣,宋作玲.条码技术及程序设计案例[J].化学工业出版社,2009.10. [17] 张宗橙.纠错编码原理和应用[J].电子工业出版社,2003.4. [18] 容观澳.计算机图像处理[M].北京:清华大学出版社,2000. [19] 张球英.二维条码—QR code研究及应用[D].华北工学院,2003. [20] 万菁.二维条码的编解码及系统实现[D].上海交通大学,2007.

[21] 黄红,黄才骏.条码的奥秘[M].北京:中国铁道出版社,2000:88~102. [22] 方炎等.我国食品安全追溯制度研究.农业质量标准,2005.01.

[23] 张成海,郭卫华.QR code--种新型的矩阵符号.中国标准出版社,2000. [24] 增田裕生.QR码的应用条码与信息系统[J].2003年第4期. [25] 章毓晋.图像工程[M].清华大学出版社,2000年.

[26] Llard DH,Brown C M.Computer Vision.Prentice·Hall,Englewood QifEs,NJ,1982. [27] Kenneth RCastleman.Image Processing[M].Englewood Cliffs,NJ:Prentice Hall.1998.

[28] Hiramoto J.Past&present future of 2-dimension code technique[M].Monthly Barcode。1996(3):35

—39.

[29] Information encoding two dimensional bar codes PavlidisT Swartz J,Wang YP.IEEE Computer

Magazine 1992.

[30] Zhu Suxia JiZhou Can Zhiyan “Application of RS Codes in Decoding QR Code HIGN

TECHNILOGY,LETTERS VOL.9 NO.4.

29

本文来源:https://www.bwwdw.com/article/fj3g.html

Top