• 1. 二维码基础及应用培训 --QR码进阶 Inspur
  • 2. 纲 要二维码简介及应用 QR码特点 纠错编码的基本原理 QR码标准 QR码的编码 QR码的解码
  • 3. 二维码简介及应用 二维条码/二维码 (2-dimensional bar code) 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化等特点。 二维条码/二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息。 与一维条码一样,二维条码也有许多不同的编码方法,或称码制。就这些码制的编码原理而言,通常可分为以下三种类型 : 1. 线性堆叠式二维码 是在一维条码编码原理的基础上,将多个一维码在纵向堆叠而产生的。典型的码制如: Code 16K、Code 49、PDF417等。 2. 矩阵式二维码 是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。典型的码制如: Aztec、Maxi Code、QR Code、 Data Matrix等。 3.邮政码 通过不同长度的条进行编码,主要用于邮件编码,如: Postnet 、 BPO 4-State 。
  • 4. 二维条码/二维码的特点 二维码简介及应用 1.高密度编码,信息容量大:可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。 2.编码范围广:该条码可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用条码表示出来;可以表示多种语言文字;可表示图像数据。 3.容错能力强,具有纠错功能:这使得二维条码因穿孔、污损等引起局部损坏时,照样可以正确得到识读,损毁面积达50%仍可恢复信息。 4.译码可靠性高:它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分之一。 5.可引入加密措施:保密性、防伪性好。 6.成本低,易制作,持久耐用。 7.条码符号形状、尺寸大小比例可变。 8.二维条码可以使用激光或CCD阅读器识读。
  • 5. 二维码简介及应用 二维条码目前应用 二维条码具有储存量大、保密性高、追踪性高、抗损性强、备援性大、成本便宜等特性,这些特性特别适用于表单、安全保密、追踪、证照、存货盘点、资料备援等方面。 表单应用:   公文表单、商业表单、进出口报单、舱单等资料之传送交换,减少人工重覆输入表单资料,避免人为错误,降低人力成本   保密应用:   商业情报、经济情报、政治情报、军事情报、私人情报等机密资料之加密及传递。   追踪应用:   公文自动追踪、生产线零件自动追踪、客户服务自动追踪、邮购运送自动追踪、维修记录自动追踪、危险物品自动追踪、後勤补给自动追踪、医疗体检自动追踪、生态研究自动追踪等。   证照应用:   护照、身份证、挂号证、驾照、会员证、识别证、连锁店会员证等证照之资料登记及自动输入,发挥「随到随读」、「立即取用」的资讯管理效果。   盘点应用:   物流中心、仓储中心、联勤中心之货品及固定资产之自动盘点,发挥「立即盘点、立即决策」的效果。   备援应用:   文件表单的资料若不愿或不能以磁碟、光碟等电子媒体储存备援时,可利用二维条码来储存备援,携带方便,不怕折叠,保存时间长,又可影印传真,做更多备份。
  • 6. 二维码简介及应用 手机二维条码应用 手机扫描二维码技术简单的说是通过手机拍照功能对二维码进行扫描,快速获取到二维条码中存储的信息,进行上网、发送短信、拨号、资料交换、自动文字输入等,手机二维码目前已经被各大手机厂商使用开发。    手机二维码是二维码的一种,手机二维码不但可以印刷在报纸、杂志、广告、图书、包装以及个人名片上,用户还可以通过手机扫描二维码,或输入二维码下面的号码即可实现快速手机上网功能,并随时随地下载图文、了解企业产品信息等。
  • 7. II. QR码-快速矩阵二维条码特点 QR码是由日本Denso公司于1994年9月研制的一种矩阵二维码符号,QR码除具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点外,QR码还具有如下主要特点: 普通的一维条码只能在横向位置表示大约20位的字母或数字信息,无纠错功能,使用时候需要后台数据库的支持,而QR码二维条码是横向纵向都存有信息,可以放入字母、数字、汉字、照片、指纹等大量信息,相当一个可移动的数据库。如果用一维条码与二维条码表示同样的信息,QR二维码占用的空间只是条码1/11的面积。 QR 码 (2D 符号) 在横向和纵向上都包含有信息,而 条码只有一个方向上包含有信息。QR 码能够包含的信息比条码多得多                                                                
  • 8. QR码比其他二维码相比,具有识读速度快、数据密度大、占用空间小的优势。QR码的三个角上有三个寻象图形,使用CCD识读设备来探测码的位置、大小、倾斜角度、并加以解码,实现360度高速识读。每秒可以识读30个含有100个字符QR码。QR码容量密度大,可以放入1817个汉字、7089个数字、4200个英文字母。QR码用数据压缩方式表示汉字,仅用13bit即可表示一个汉字,比其他二维条码表示汉字的效率提高了20%。QR具有4个等级的纠错功能,即使破损或破损也能够正确识读。QR码抗弯曲的性能强,通过QR码中的每隔一定的间隔配置有校正图形,从码的外形来求得推测校正图形中心点与实际校正图形中心点的误差来修正各个模快的中心距离,即使将QR码贴在弯曲的物品上也能够快速识读。QR码可以分割成16个QR码,可以一次性识读数个分割码,适应于印刷面积有限及细长空间印刷的需要。此外微型QR码可以在1厘米的空间内放入35个数字或9个汉字或21个英文字母,适合对小型电路板对ID号码进行采集的需要。 多到 7,089 数字可以被编码。                                                     II. QR码-快速矩阵二维条码特点 300 个字符或数字被编进这样大小的QR码里面同样的数据只有条码的十分之一大小
  • 9. II. QR码-快速矩阵二维条码特点 超高速识读: 从QR Code码的英文名称Quick Response Code可以看出,超高速识读特点是QR Code码区别于四一七条码、Data Matrix等二维码的主要特性。由于在用CCD识读QR Code码时,整个QR Code码符号中信息的读取是通过QR Code码符号的位置探测图形,用硬件来实现,因此,信息识读过程所需时间很短,它具有超高速识读特点。用CCD二维条码识读设备,每秒可识读30个含有100个字符的QR Code码符号;对于含有相同数据信息的四一七条码符号,每秒仅能识读3个符号;对于Data Martix矩阵码,每秒仅能识读2~3个符号。QR Code码的超高速识读特性是它能够广泛应用于工业自动化生产线管理等领域。 全方位识读: QR Code码具有全方位(360°)识读特点,这是QR Code码优于行排式二维条码如四一七条码的另一主要特点,由于四一七条码是将一维条码符号在行排高度上的截短来实现的,因此,它很难实现全方位识读,其识读方位角仅为±10°. 能够有效地表示中国汉字、日本汉字: 由于QR Code码用特定的数据压缩模式表示中国汉字和日本汉字,它仅用13bit可表示一个汉字,而四一七条码、Data Martix等二维码没有特定的汉字表示模式,因此仅用字节表示模式来表示汉字,在用字节模式表示汉字时,需用16bit(二个字节)表示一个汉字,因此QR Code码比其它的二维条码表示汉字的效率提高了20%。                                                     
  • 10. II. QR码-快速矩阵二维条码特点 编码字符集: 1、数字型数据(数字0~9); 2、字母数字型数据(数字0~9;大写字母A~Z;9个其他字符:space ,$, %, *, +, -, ., /, :); 3、8位字节型数据; 4、日本汉字字符; 5、中国汉字字符(GB 2312对应的汉字和非汉字字符)。 QR码符号的基本特性 符号规格 21×21模块(版本1)-177×177 模块(版本40) (每一规格:每边增加4个模块) 数据类型与容量(指最大规格符号版本40-L级) · 数字数据 :7,089个字符 · 字母数据 :4,296个字符 · 8位字节数据 :2,953个字符 · 中国汉字、日本汉字数据 :1,817个字符 数据表示方法 深色模块表示二进制“1”,浅色模块表示二进制“0”。
  • 11. II. QR码-快速矩阵二维条码特点 纠错能力 · L级:约可纠错7%的数据码字 · M级:约可纠错15%的数据码字 · Q级:约可纠错25%的数据码字 · H级:约可纠错30%的数据码字 结构链接可用1-16个QR Code码符号表示一组信息 掩模 可以使符号中深色与浅色模块的比例接近1:1,使因相邻模块的排列造成译码困难的可能性降为最小。 扩充解释这种方式使符号可以表示缺省字符集以外的数据(如阿拉伯字符、古斯拉夫字符、希腊字母等),以及其他解释(如用一定的压缩方式表示的数据)或者对行业特点的需要进行编码。 独立定位功能 QR码QR Code可高效地表示汉字,相同内容,其尺寸小于相同密度的PDF417条码。目前市场上的大部分条码打印机都支持QR code条码,其专有的汉字模式更加适合我国应用。因此,QR码在我国具有良好的应用前景。
  • 12. Ⅲ.纠错编码的基本原理 为了方便对差错编码原理进行叙述,下面先介绍一些基本术语。 信息码元——指进行差错编码前送入的原始信息编码。 监督码元——指经过差错编码后在信息码元基础上增加的冗余码元。 码字(组)——由信息码元和监督码元组成的,具有一定长度的编码组合。 码集——不同信息码元经差错编码后形成的多个码字组成的集合。 码重——码字的重量,即一个码字中“1”码的个数。通常用W表示。 例如:码字10011000的 码重W=3,而码字00000000的码重W=0。 码距——所谓码元距离就是两个码组中对应码位上码元不同的个数(也称汉明距)。码距反映的是码组之间的差异程度,比如,00和01两组码的码距为1;011和100的码距为3。11000 与 10011之间的距离d=3。码字10011001和11110101之间的码距为4。 最小码距——码集中所有码字之间码距的最小值即称为最小码距,用 表示。 例如:若码集包含的码字有10010,00011,和11000,则各码字两两之间的码距分别如下:基本概念
  • 13. 10010和00011之间 10010和11000之间 00011和11000之间 因此该码集的最小码距为2,即 。 000、001、110三个码组相比较,码距有1和2两个值 最小码距是码的一个重要参数, 它是衡量码检错、纠错能力的依据。Ⅲ.纠错编码的基本原理 Ⅲ.纠错编码的基本原理 基本概念
  • 14. Ⅲ.纠错编码的基本原理 分组码kr 分组码一般可用(n,k)表示。其中,k是每组二进制信息码元的数目,n是编码码组的码元总位数,又称为码组长度,简称码长。n-k=r为每个码组中的监督码元数目。简单地说,分组码是对每段k位长的信息组以一定的规则增加r个监督元, 组成长为n的码字。在二进制情况下,共有2k个不同的信息组,相应地可得到2k个不同的码字,称为许用码组。其余 2n-2k个码字未被选用,称为禁用码组。如:(7,4) (9,5)
  • 15. Ⅲ.纠错编码的基本原理 编码纠检错能力与最小码距之间的关系 数字通信系统中送入信道的信息都是“0”“1”组合的数字信号,例如:待传送的信息是“晴”和“雨”,则只需一位数字编码就可以表示。若用“1”表示“晴”,“0”表示“雨”。当“0”“1”形式的信息在信道中传输时将0错成1或将1错成0时,由于发生差错后的信息编码状态是发送端可能出现的状态,因此接收端无法发现差错。 但是如果发送信息送进信道之前,在每个编码之后附加一位冗余码,变成用两位编码“11“表示”晴“,“00”表示“雨”,则在传输过程中由于干扰造成信息编码中一位码发生差错,错成“10”(或“01”)时,由于“10”或“01”都是发送端不可能出现的编码,接收端就能发现差错,但此时并不能判断出差错是第一比特还是第二比特,因此不能自动纠错 许用码组 00、11 禁用码组 10、01
  • 16. Ⅲ.纠错编码的基本原理 编码纠检错能力与最小码距之间的关系 若继续增加冗余码位数,用“111”表示“晴”,“000”表示“雨”,当编码在传输中出现1位或2位码差错(如错成001或101等编码)时,接收端都能检测到,并能确定只有1位码差错时错误码位的位置,此时这种编码方式可以检测1位或2位差错,并能纠正单个的误码。 许用码组:000, 111 禁用码组:001 010 011 100 101 110 由上例的分析可见,冗余码位数增加后,编码的抗干扰能力增强。这主要是因为冗余码位数增加后,发送端使用的码集中,码字之间最小码距 增大。由于 反映了码集中每两个码字之间的差别程度,如果 越大,从一个编码错成另一个编码的可能性越小,则其检错、纠错能力也就越强。因此最小码距是衡量差错控制编码纠、检错能力大小的标志。
  • 17. Ⅲ.纠错编码的基本原理 检错和纠错能力码的最小距离d0直接关系着码的检错和纠错能力;任一(n,k)分组码,若要在码字内: (1) 检测e个随机错误,则要求码的最小距离d0≥e+1; A 0 1 2 3 B A 0 1 2 3………………e B(2) 纠正t个随机错误, 则要求码的最小距离d0≥2t+1;(3) 纠正t个同时检测e个随机错误,则要求码的最小距离d0≥t+e+1。 (e ≥ t)例如: d0=3, 或者4, 或者5 检1位纠1位 检出2位,纠正1位 检2纠2
  • 18. Ⅲ.纠错编码的基本原理 编码纠检错能力与最小码距之间的关系 用差错控制编码提高通信系统的可靠性, 是以降低有效性为代价换来的。我们定义编码效率R来衡量有效性:R=k/n 其中, k是信息元的个数,n为码长。 对纠错码的基本要求是: 检错和纠错能力尽量强; 编码效率尽量高;编码规律尽量简单。实际中要根据具体指标要求,保证有一定纠、检错能力和编码效率,并且易于实现。
  • 19. Ⅲ.纠错编码的基本原理 奇偶监督码奇偶监督码是一种最简单的差错编码又称奇偶检验码。 编码方法:奇偶监督码是在原信息码后面附加一个监督元,使得该码字中连同监督码在内的“1”的个数为奇数(称为奇校验)或偶数(称为偶校验)。或者说,它是含一个监督元,码重为奇数或偶数的(n,n-1)系统分组码。 例如:对码组01101001进行偶校验的监督码位为0,对码组10100000进行奇校验的监督码为1。 设 是同一码组内各位码元, 是监督码元,其余码位都是信息码元,则偶校验时应满足。
  • 20. Ⅲ.纠错编码的基本原理 奇偶监督码 接收端译码时,对各码元进行模二加运算,其结果为0(偶监督码)如果传输过程中码组任何一位发生了错误,则收到的码组不满足偶检验关系,因此就能发现错误。 偶监督码的编码规则可以用公式表示 (设码组长度为n,表示为 ) 监督码元a0的取值(0或1)可由下式决定 对于奇校验码必须保证 因此式中的监督码可以用下式求出 奇偶监督码的编码效率R为
  • 21. Ⅲ.纠错编码的基本原理 在接收端按照相同的规律进行检测,若检测到与规律不符,则说明传输中有差错产生,奇偶监督码的检错能力为只能检出奇数位差错,不能检测出偶数位差错,也不能判断出差错的具体码元,故奇偶检验码只有一定检错能力而不具备纠错能力。但利用奇偶检验码检测单个差错的效果还是令人满意的,因此在计算机数据传输及SDH传输技术中得到广泛的应用。 奇偶监督码1 0 1 0 0 0 1 0 有错 1 1 1 0 0 1 1 0 有错 1 0 1 0 0 1 1 0 不能确定1 0 1 1 0 0 1 0
  • 22. Ⅲ.纠错编码的基本原理 二维奇偶监督码 又称行列奇偶校验码或者水平垂直奇偶校验码,还称作方阵码,它是将若干信息码字按照每个码字一行排列成若干行,使每个码字中相同的码位均对齐在同一列中,形成矩阵形式。然后对每一行和每一列的码元均进行奇校验或偶校验,并将校验结果附加在每一行及每一列码元之后。方阵码不但能检测出某一行某一列所有奇数个错误, 有时还能检测出某偶数个错误 信息码元 监督码元 信息码元 监督码元 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 监督码元 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 适用于检测突发错误,能纠错:码组中存在仅一行中有奇数个错误时,能够确定错码的位置。
  • 23. Ⅲ.纠错编码的基本原理 但对于以矩阵形式出现的偶数位差错,行列奇偶校验码是检测不出来的。此外,通过水平和垂直两个方向上的校验,它能够确定某一行或列中出现的单个差错码位置,因此行列奇偶校验码具有对单个差错的纠错能力。二维奇偶监督码
  • 24. Ⅲ.纠错编码的基本原理 恒比码的编码原则是从确定码长的码组中挑选那些“1”和“0”个数的比值一样的码组作为许用码组。 这种码通过计算接收码组中“1”的数目是否正确,就可检测出有无错误。 五单位数字保护电码 :码字长度为5,只选用码字中含有三个“1”和两个“0”的码字作为许用码字来表示10个阿拉伯数字1,2,…,9,0,这种码亦称“5中取3码”。恒比码(等重码)数字数字保护电码1 2 3 4 5 6 7 8 9 00 1 0 1 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 0 1 0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 0 1 中文电报编码首先将每一个单字编码为四位十进制数字,再将每一位十进制数字用二进制的五单位数字保护码表示。 通 信 6639 0207 10101 10101 10110 10011 01101 11001 01101 11100 国际电报通信中广泛采用的是“7中取3码”,可分别表示26个字母和其它的一些符号。
  • 25. Ⅲ.纠错编码的基本原理 编码的监督位数目与信息位数目相同,监督码是信息码的重复还是反码, 由信息码中1的个数而定。 例:1011010110 (重复) 0011011001 (反码) 译码:接收码组中信息位和监督位按位模2相加 若接收码组的信息位中有奇数个1,则合成的码组为检验码组 若接收码组的信息位中有偶数个1,则合成的码组的反码为检验码组正反码
  • 26. Ⅲ.纠错编码的基本原理 检验码组全为0,无错码 有4个1,1个0则信息码组中有一位错码,其位置对应检验码组中0的位置 有4个0,1个1则监督码中有一位错码,其位置对应检验码组中1的位置 例:10010 (收到码组为1001010110) 10110 00100 11011 00110 01001 01111 10000 其他组合,错码多于一个 检纠错能力:长度为10的正反码有纠正一位错码的能力,并能检测出全部两位以下的错误,和大部分两位以上的错误。 编码效率:5/10=1/2 正反码
  • 27. Ⅲ.纠错编码的基本原理 正反码发送码字为0101101011,传输中无差错,则合成码组为01011⊕01011=00000,由于接收码字的信息位中有3个“1”,故00000就是校验码组。 若传输中发生了一位差错,接收端收到1101101011,则合成码组为11011⊕01011=10000,由于接收的码字中信息位中有4个“1”,故校验码组为01111。信息位的第1位错,故可将接收到的1101101011纠正为0101101011。 若传输中发生了两位错,接收端收到1101111011,则合成码组为11011⊕11011=00000,而此时校验码组为11111,可判断出为两位或两位以上的差错。
  • 28. Ⅲ.纠错编码的基本原理 正反码又如,若传输中发生了四位错,接收端收到1101011010,则合成码组为11010⊕11010=00000,而此时校验码组也为00000,查表会认为是无差错,也就是说对这种差错是漏捡了。 再如,若传输中发生了三位错,接收端收到1101011011,则合成码组为11010⊕11011=00001,此时校验码组也为00001,查表会认为是冗余位中有一位差错,其位置对应于校验码组中“1”的位置,从而将其误纠为1101011010。 实际上,任何一种检错码,都会发生漏检的情况;而任何一种纠错码,也都会发生误纠的情况。漏检率和误纠率都是差错控制编码的重要技术指标,当然是越小差错控制能力越强。
  • 29. Ⅲ.纠错编码的基本原理 群计数码是将信息码元分组后,计算每组码元中1的个数,然后将这个数目的二进制表示为监督码元,一起送往发送端。 例:一组8位的信息码元为10111001,其中1的个数为5个,于是将101作为监督码元。这样传输的码组为10111001101 收端只要检测监督码元所标示的1的各属于信息码元的1的树木是否相同来判断传输过程中有无错误。 群计数码的检错能力很强,它可以检测除1变0和0变1成对出现的错误以外的其他形式的错误。群计数码
  • 30. Ⅳ. QR码标准 术语和定义校正图形(Alignment Pattern) 用于确立矩阵符号位置的一个固定的参照图形,译码软件可以通过它在图象有中等程度损坏的情况下,再同步图像模块的坐标映象。 字符计数指示符(Character Count Indicator) 定义某一模式下的数据串长度的位序列。 ECI指示符(ECI designator) 6位数字,用于标识具体的ECI任务。 编码区域(encoding region) 在符号中没有被功能图形占用,可以对数据或纠错码字进行编码的区域。 扩充解释(Extended Channel Interpretation (ECI)) 在某些码制中,对输出数据流允许有与缺省字符集不同的解释的协议。 扩展图形(Extension Pattern) 模式1中,不表示数据的一种功能图形。 格式信息(Format Information) 一种功能图形,它包含符号使用的纠错等级以及使用的掩模图形的信息,以便对编码区域的剩余部分进行译码。 功能图形(function pattern) 符号中用于符号定位与特征识别的特定图形。
  • 31. Ⅳ. QR码标准 术语和定义掩模图形参考(Mask Pattern Reference) 用于符号中的三位掩模图形标识符。 掩模(masking) 在编码区域内,用掩模图形对在城内编码区的位图进行XOR操作,其目的是使符号中深色与浅色模块数的比例均衡,并且减少影响图像快速处理的图形出现。 模式(mode) 将特定的字符集表示成位串的方法。 模式指示符(Mode Indicator) 4位标识符,指示随后的数据序列所用的编码模式。 填充位(Padding Bit) 值为0,不表示数据,用于填充数据位流最后一个码字中终止符后面的空位。 位置探测图形(Position Detection Pattern) 组成寻象图形的三个相同的图形之一。 剩余位(Remainder Bit) 值为0,不表示数据,当编码区域不能正好被8位的码字填满时,用于填充最后一个码字后的空位。 剩余码字(Remainder Codeword) 一种填充码字,当所有的数据码字和纠错码字不能正好填满符号的容量时,用于填充一种填充码字所空码字位置,它们紧跟在最后一个纠错码字之后。
  • 32. Ⅳ. QR码标准 术语和定义段(segment) 以同一ECI或编码模式编码的数据序列。 分隔符(Separator) 全部由浅色模块组成的功能图形,宽度为一个模块,用于将位置探测图形与符号的其余部分分开。 终止符(Terminator) 用于结束表示数据位流的位图0000。 定位图形(Timing Pattern) 深色与浅色模块交错的图形,便于决定符号中模块的坐标。 版本(Version) 用于表示符号规格的系列。某一特定版本是根据它在所允许的规格系列中的位置来确定的。QR码所允许规格系列为21×21模块(版本1)~177×177模块(版本40)。它也可同时指示符号所应用的纠错等级。 版本信息(Version Information) 在模式2符号中,包含符号版本的信息及该数据错误纠正纠错位的功能图形。
  • 33. Ⅳ. QR码标准 符号描述QR码为矩阵式二维码,具有如下特征: 编码字符集 数字型数据(数字0~9); 字母数字型数据(数字0~9;大写字母A~Z;9个其他字符:space ,$, %, *, +, -, ., /, :); 8位字节型数据(与JIS X 0201一致的JIS8位字符集(拉丁和假名)); 日本汉字字符(与JIS X 0208转换代码表示法一致的转化JIS字符集。注意:在QR码中的日本汉字字符的值为:8140HEX -9FFCHEX和E040HEX – EBBFHEX,可以压缩为13位。) 中国汉字字符(GB18030-2000) 数据表示法 深色模块表示二进制1,浅色模块表示二进制0。 符号规格(不包括空白区) 21×21模块到177×177模块(版本1到40,每版本符号每边增加4个模块)。 每个符号的数据字符数(最大规格的符号—版本40-L) 数字数据 7089个字符 字母数字数据 4296个字符 8位字节数据 2953 个字符 日本汉字数据 1817个字符 中国汉字数据 2108个字符
  • 34. Ⅳ. QR码标准 符号描述纠错的选择 4种纠错等级,可恢复的码字比例为: L 7% M 15% Q 25% H 30% 符号类型:矩阵 独立定位:是以下QR码特征有些是固有的,有些是可选的: 结构链接(可选) 允许把数据文件用最多16个QR码符号在逻辑上连续地表示。它们可以以任意的顺序扫描,而原始数据能正确地重新连接起来。 掩模(固有) 可以使符号中深色与浅色模块的比例接近1:1,使因相邻模块的排列造成译码困难的可能性降为最小。 扩充解释(可选) 这种方式使符号可以表示缺省字符集以外的数据(如阿拉伯字符、古斯拉夫字符、希腊字母等),以及其他解释(如用一定的压缩方式表示的数据)或者对行业特点的需要进行编码。
  • 35. Ⅳ. QR码标准 符号结构每个QR码符号由名义上的正方形模块构成,组成一个正方形阵列,它由编码区域和包括寻象图形、分隔符、定位图形和校正图形在内的功能图形组成。功能图形不能用于数据编码。符号的四周由空白区包围。下图为QR码版本7符号的结构图。
  • 36. Ⅳ. QR码标准 符号结构 QR码符号共有40种规格,分别为版本1、版本2……版本40。版本1的规格为21模块×21模块,版本2为25模块×25模块,以此类推,每一版本符号比前一版本每边增加4个模块,直到版本40,规格为177模块×177模块。
  • 37. Ⅳ. QR码标准 符号结构
  • 38. Ⅳ. QR码标准 符号结构
  • 39. Ⅳ. QR码标准 符号结构
  • 40. Ⅳ. QR码标准 符号结构
  • 41. Ⅳ. QR码标准 符号结构寻象图形 寻象图形包括三个相同的位置探测图形,分别位于符号的左上角、右上角和左下角,如图2所示。每个位置探测图形可以看作是由3个重叠的同心的正方形组成,它们分别为77个深色色模块、55个浅模块和33个深色模块。如下图所示,位置探测图形的模块宽度比为1:1:3:1:1。符号中其他地方遇到类似图形的可能性极小,因此可以在视场中迅速地识别可能的QR码符号。识别组成的寻象图形的三个位置探测图形,可以明确地确定视场中符号的位置和方向。
  • 42. Ⅳ. QR码标准 符号结构分隔符 在每个位置探测图形和编码区域之间有宽度为1个模块的分隔符,它全部由浅色模块组成。 定位图形 水平和垂直定位图形分别为一个模块宽的一行和一列,由深色浅色模块交替组成,其开始和结尾都是深色模块。水平定位图形位于上部的两个位置探测图形之间,符号的第6行。垂直定位图形位于左侧的两个位置探测图形之间,符号的第6列。它们的作用是确定符号的密度和版本,提供决定模块坐标的基准位置。 求各模块中心坐标的图形。黑白图形相互配置。当QR码歪斜或模块间隔出现误差时用于轴正数据模块的中心坐标。 校正图形 每个校正图形可看作是3个重叠的同心正方形,由5×5个的深色模块,3×3个的浅色模块以及位于中心的一个深色模块组成。校正图形的数量视符号的版本号而定,在模式2的符号中,版本2以上(含版本2)的符号均有校正图形。补正QR码歪斜的图形,求得校正图形的中心坐标,补正QR码的歪斜。在校正图形中配置有孤立的黑模块,使得更容易检测出中心坐标。 编码区域 编码区域包括表示数据码字、纠错码字、版本信息和格式信息的符号字符。 空白区 空白区为环绕在符号四周的4个模块宽的区域,其反射率应与浅色模块相同。
  • 43. Ⅴ. QR码的编码 编码综述第一步 数据分析 分析所输入的数据流,确定要进行编码的字符的类型。QR码支持扩充解释,可以对与缺省的字符集不同的数据进行编码。 第二步 数据编码 将数据字符转换为位流。在当需要进行模式转换时,在新的模式段开始前加入模式指示符进行模式转换。在数据序列后面加入终止符。将产生的位流分为每8位一个码字。必要时加入填充字符以填满按照版本要求的数据码字数。 第三步 纠错编码 按需要将码字序列分块,以便按块生成相应的纠错码字,并将其加入到相应的数据码字序列的后面。 第四步 构造最终信息 在每一块中置入数据和纠错码字,必要时加剩余位。 第五步 在矩阵中布置模块 将寻象图形、分隔符、定位图形、校正图形与码字模块一起放入矩阵。 第六步 掩模 依次将掩模图形用于符号的编码区域。评价结果,并选择其中使深色浅色模块比率最优且使不希望出现的图形最少化的结果。 第七步 格式和版本信息 生成格式和版本信息(如果用到时),形成符号。
  • 44. Ⅴ. QR码的编码 编码综述 版本每边的模块数(A)功能图形模块数 (B)格式及版本信息模块数 (C)除C以外的数据模块数 (D=A2-B-C)数据容量 [码字]* (E)剩余位1212023120826022523531359447329243315677074332513180710075372593110791347641267311383172774539067156819608493986719362420953406672336292010574146727683460116142267323240401265430673728466013694386742565320147361167465158131577619675243655316816276758677333178563567652381531889643677211901319936516779319913209765967868310853
  • 45. Ⅴ. QR码的编码 编码综述 版本每边的模块数(A)功能图形模块数 (B)格式及版本信息模块数 (C)除C以外的数据模块数 (D=A2-B-C)数据容量 [码字]* (E)剩余位2110188267925211564221058906710068125842310989867109161364424113906671179614744251179146712708158842612192267136521706427125930671462818284281291203671537119213291331211671641120513301371219671748321853311411227671858723233321451235671972324653331491243672089126113341531251672209127613351571574672300828760361611582672427230340371651590672556831960381691598672689633620391731606672825635320401771614672964837060
  • 46. Ⅴ. QR码的编码 数据分析 分析输入数据,确定其内容并且选择采用缺省的或者其它适当的ECI以及适当的模式,对每个序列编码。从数字模式到日本汉字模式,每种模式的字符所需的位数依次增加。在符号中可以通过模式的转换使数据的位流长度最短,部分数据用一种模式编码可以比其它部分的编码效率更高。例如:数字序列后跟随字母数字序列。理论上说,用每个数据字符所需的位数最少的模式进行编码是最高效的,但每次模式转换时都需要有相关模式指示符和字符数量指示符等形式的附加开销,因此,对于较少的字符数,模式的转换并不总是能使位流总量最少。同时,由于各个版本的容量的增加是步进的,所以不一定在任何情况下都要达到最高的转换效率。数字模式 数字模式对十进制数字0~9(ASCII值30HEX 至39HEX)编码,通常的密度为每10位表示3个字符。 字母数字模式 字母数字模式对45个字符的字符集进行编码,即:10个数字0~9(ASCII值30HEX 至39HEX),26个字母字符A~Z(ASCII值41HEX 至5AHEX)以及9个符号SP、$、%、*、+、-、.、/、:(ASCII值分别为20HEX,24HEX,25HEX,2AHEX,2BHEX,2DHEX,2EHEX,2FHEX,3AHEX)。通常情况下,两个输入字符用11位表示。 8位字节模式 8位字节模式用于表示与JIS X 0201一致的8位拉丁/假名字符集(字符值为00HEX 至FFHEX),其编码密度为每个字符8位。
  • 47. Ⅴ. QR码的编码 日本汉字模式 日本汉字模式用于表示与基于JIS X 0208的转换JIS系统一致的日本汉字字符。转换JIS值由JIS X 0208转换而来。具体内容见JIS X 0208附录1转换代码表示法。每个双字节字符由13位二进制码字表示。 中国汉字模式 混合模式 QR码符号可以包含以8.3.1到8.3.5中描述的多种模式所表示的混合数据序列。 结构链接模式 结构链接模式用于把一个数据文件分开表示为多个QR码符号的序列,要求所有的符号可以识读并且数据可以按正确的顺序重新建立。每个符号都要有一个结构链接头,以标识这个序列的长度及该符号在其中的位置,并且检验是否所有识读的符号属于同一个文件。结构链接模式的编码详见第9章。 FNC1模式 FNC1模式用于表示按UCC/EAN应用标识标准或国际AIM协会已经同意的具体行业标准格式化的数据。数据分析
  • 48. Ⅴ. QR码的编码 数据编码 输入的数据转变为一个位流,如果最开始的ECI不是缺省的ECI,其前面要有ECI标头,后面为一个或多个不同模式的段,如果以缺省的ECI开始,位流的开头为第一个模式的指示符。 ECI标头(如果有)应包含如下内容: ——ECI模式指示符(4位) ——ECI指定符(8,16或24位) 位流的其余部分的第一段由以下内容组成,它们包含: ——模式指示符(4位) ——字符计数指示符 ——数据位流 ECI标头由ECI模式指示符的最高位开始,以ECI指定符的最低位结束。每个模式段以模式指示符的最高位开始,以数据位流的最低位结束。由于段的长度已经由采用模式的规则以及数据字符数明确地确定,段与段之间没有特定的分隔。
  • 49. Ⅴ. QR码的编码 数据编码模式指示符ECI0111数字0001字母数字00108位字节0100日本汉字1000中国汉字1101结构链接0011FNC10101 (第一位置) 1001 (第二位置)终止符 (信息结尾)0000版本数字模式 字母数字模式8位字节模式日本汉字模式中国汉字模式1~91098810~261211161027~4014131612模式指示符 字符计数指示符的位数 整个符号的结束由4位终止符0000表示,当符号数据位流后所余的容量不足4位时,终止符将被截短。终止符本身不是模式指示符。
  • 50. Ⅴ. QR码的编码 数据编码扩充解释(ECI)模式 本模式用于按可选的字节值解释(例如不同的字符集)对某类数据进行编码,可选的字节值解释应符合AIM ECI规范中对该类数据进行预处理的规则。模式用模式指示符0111引入。不需要引入QR码缺省扩充解释(ECI头000020,对应于JIS8/转换JIS字符集),尤其是在任何符号的开始。 ECI只能用于识读器可以传送符号标识的情况,不能传送符号标识的识读器无法从包含ECI的符号中传输数据。 输入的ECI数据需要编码系统作为一系列8位字节的值进行处理。 ECI序列中的数据可以一种或几种模式对其字节值进行最高效编码,而不必考虑其实际意义。例如:值为30HEX 到39HEX的数据序列可以当作一个数字0-9序列,用数字模式进行编码,即使也许实际上它并不表示数字数据。字符计数指示符由字节的数量决定(在日本汉字模式中为双字节、中国汉字模式中为双字节)。ECI指定符 每个扩充解释被分配一个6位的任务号,它为紧接在QR符号的ECI模式指示符后的1个、2个或3个码字。ECI模式指示符编码为ASCII/JIS8字符5CHEX (\或ISO 646 IRV中的反斜线,¥或JIS8中的日圆符号),其后跟随6位任务号。如果ASCII/JIS8字符5CHEX 本身是作为数据的内容,在应用ECI协议的符号中编码前,应在数据串中重复该字符。
  • 51. Ⅴ. QR码的编码 数据编码ECI 任务号码字数码字值000000 至 00012710bbbbbbb000000 至 016383210bbbbbb bbbbbbbb000000 至 9999993110bbbbb bbbbbbbb bbbbbbbbb……b是ECI任务号的二进制值在译码时,第一个ECI指定符码字(ECI模式中模式指示符后的码字)的二进制图形,确定ECI指定符序列的长度。第一个“0”前面的“1”的个数量表示ECI任务号的第一个码字后的附加码字的数量。第一个“0”后面的各位,是ECI任务号的二进制表示。较低的ECI任务号有多种编码方式,最短的方式为首选的。 例如:假设编码的数据为希腊字母,字符集为ISO 8859-7(ECI000009),符号版本为1-H。 要编码的数据 (字符值 A1HEX, A2HEX, A3HEX, A4HEX, A5HEX) 符号中的位序列: ECI模式指示符 0111 ECI任务号(000009) 00001001 模式指示符(8位字节) 0100 字符计数指示符(5) 00000101 数据: 10100001 10100010 10100011 10100100 10100101 最终的位串: 0111 00001001 0100 00000101 10100001 10100010 10100011 10100100 10100101
  • 52. Ⅴ. QR码的编码 数据编码数字模式 将输入的数据每三位分为一组,将每组数据转换为10位二进制数。如果所输入的数据的位数不是3的整数倍,所余的1位或2位数字应分别转换为4位或7位二进制数。将二进制数据连接起来并在前面加上模式指示符和字符计数指示符。数字模式中字符计数指示符如表3中定义的有10、12或14位。输入的数据字符的数量转换为10、12或14位二进制数后,放置在模式指示符之后,二进制数据序列之前。 例1 (符号版本1-H) 输入的数据: 01234567 1) 分为3位一组: 012 345 67 2) 将每组转换为二进制: 012→0000001100 345→0101011001 67 →1000011 3) 将二进制数连接为一个序列:0000001100 0101011001 1000011 4) 将字符计数指示符转换为二进制(版本1-H为10位): 字符数为:8→0000001000 5) 加入模式指示符0001以及字符计数指示符的二进制数据: 0001 0000001000 0000001100 0101011001 1000011
  • 53. Ⅴ. QR码的编码 数据编码例2 (符号版本1-H) 输入的数据: 0123456789012345 1) 分为3位一组: 012 345 678 901 234 5 2) 将每组转换为二进制: 012→0000001100 345→0101011001 678→1010100110 901→1110000101 234→0011101010 5→0101 3) 将二进制数连接为一个序列: 0000001100 0101011001 1010100110 1110000101 0011101010 0101 4) 将字符计数指示符转换为二进制(版本1-H为10位): 字符数为:16→0000010000 5) 加入模式指示符0001以及字符计数指示符的二进制数据: 0001 0000010000 0000001100 0101011001 1010100110 1110000101 0011101010 0101 数字模式中位流的长度计算公式如下: B = 4 + C + 10(D DIV 3) + R 其中:B=位流的位数 C=字符计数指示符的位数(根据表3) D=输入的数据字符数 R=0 当(D MOD 3)=0 R=4 当(D MOD 3)=1 R=7 当(D MOD 3)=2
  • 54. 将输入的数据分为两个字符一组,用11位二进制表示。将前面字符的值乘以45与第二个字符的值相加,将所得的结果转换为11位二进制数。如果输入的数据的字符数不是2的整数倍,将最后一个字符编码为6位二进制数。将所得的二进制数据连接起来并在前面加上模式指示符和字符计数指示符,按表3的规定在字母数字模式中,字符计数指示符的长度为9、11或13位。将输入的字符数编码为9、11或13位二进制数,放在模式指示符之后,二进制数据序列之前。Ⅴ. QR码的编码 数据编码字母数字模式 按照下表,每个输入的字符赋于一个数值V,它的值为0到44。字符值字符值字符值字符值字符值字符值字符值字符值0066C12I18O24U30SP36.421177D13J19P25V31$37/432288E14K20Q26W32%38:443399F15L21R27X33*3944A10G16M22S28Y34+4055B11H17N23T29Z35-41
  • 55. Ⅴ. QR码的编码 数据编码例(符号版本1-H) 输入的数据: AC-42 1)根据表5查出字符的值: AC-41→(10,12,41,4,2) 2)将结果分为2个一组: (10,12)(41,4)(2) 3)将每组数据转换为11位二进制数: (10,12)10*45+12→462→00111001110 (41,4)41*45+4→1849→11100111001 (2)→2→000010 4)二进制数据顺次连接: 00111001110 11100111001 000010 5)将字符计数指示符转换为二进制(版本1-H为9位): 输入的字符数 5→000000101 6)在二进制数据前加上模式指示符0010和字符计数指示符: 0010 000000101 00111001110 11100111001 000010 字母数据模式的二进制位流位数由下式计算: B=4+C+11(D DIV 2)+6(D MOD 2) 其中:B=位流的位数 C=字符计数指示符的位数 D=输入的字符数
  • 56. Ⅴ. QR码的编码 数据编码8位字节模式 在本模式中,一个8位码字直接表示一个输入数据字符的JIS8字符值,即密度为每个字符8位,如下表所示。在非缺省的其它ECI中,它直接表示一个8位字节的值。 将二进制数据连接起来并在前面加上模式指示符和字符计数指示符。8位字节模式的字符计数指示符为8位或16位,将输入字符数转换为8位或16位二进制数据放在模式指示符之后,二进制数据序列之前。 8位字节模式的位流的位数计算公式如下: D = 4 + C + 8D 其中:B=位流的位数 C=字符计数指示符的位数 D=输入数据的字符数
  • 57. Ⅴ. QR码的编码 数据编码日本汉字模式 在转换JIS系统中,两个字节表示一个日本汉字字符。字节的值由JIS X 0208的值转换而来。将输入数据字符按下面定义转换为13位二进制码字。随后将二进制数据连接起来并在前面加上模式指示符和字符计数指示符。日本汉字模式的字符计数指示符的位数按表3规定为8、10或12位,将字符计数指示符转换为相应的8、10或12位二进制数,放在模式指示符之后,二进制数据序列之前。 1. 对于转换JIS值为8140HEX 到 9FFCHEX之间的字符: 将转换JIS值减去8140HEX; 将高位字节乘以C0HEX; 将b的结果加上低位字节; 将结果转换为13位二进制串。 2. 转换JIS值为E040HEX 到EBBFHEX之间的字符: 将转换JIS值减去C140HEX; 将高位字节乘以C0HEX; 将b的结果加上低位字节; 将结果转为13位二进制串。
  • 58. Ⅴ. QR码的编码 数据编码例:3.对于所有的字符: 在输入的数据字符的二进制队列前加上模式指示符(1000)和字符计数指示符的二进制表示(8,10或12位); 日本汉字模式的位流的位数由以下公式计算: B = 4 + C + 13D 其中:B=位流的位数 C=字符计数指示符的位数 D=输入的数据字符数
  • 59. Ⅴ. QR码的编码 数据编码混合模式 根据数据内容的要求或者为了增加编码密度,可以从一种模式转换到另一种模式来表示数据。每一段数据按以上数据编码中给出的相应模式进行编码。基本结构为模式指示符/字符计数指示符/数据,其后紧跟下一段的模式指示符开始另一段。下图为有N段数据的结构。段1段2……段 n模式指示符1字符计数指示符数据模式指示符 2字符计数指示符数据……模式指示符 n字符计数指示符数据FNC1模式 FNC1描述的是类别信息,此处不做具体介绍。 终止符 符号的数据结尾由紧跟在最后一个模式段后面的终止符序列0000表示,当数据位流数量正好填满符号的容量时,它可以省略,或者当符号所余的容量不足4位时它可以截短。
  • 60. Ⅴ. QR码的编码 数据编码位流到码字的转换 每个模式段的位流需要按顺序连接在一起,最后添加终止符,除非数据位流正好填满符号容量。所得的数据位流将被分为一个个码字;所有的码字的长度都是8位,如果位流长度最后一个码字不足8位,则用二进制值为0的填充位填充至8位,填充位应加在数据位流最后1位(最低位)的后面。然后按定义的版本和纠错等级交替添加填充码字11101100和00010001,将数据位流扩展,以填满符号的数据容量,所得结果的数据码字序列加入纠错码字。为了正好填满符号容量,有些版本也许需要在信息的最后添加3、4或7个剩余位(全为0)。
  • 61. Ⅴ. QR码的编码 数据编码符号字符数和数据容量
  • 62. Ⅴ. QR码的编码 纠错QR码采用纠错算法生成一系列纠错码字,添加在数据码字序列后,使得符号可以在遇到损坏时不致丢失数据。纠错共有4个纠错等级,对应四种纠错容量。 纠错等级恢复的容量 % (近似值)L7M15Q25H30纠错码字可以纠正两种类型的错误,拒读错误(错误码字的位置已知)和替代错误(错误码字位置未知)。一个拒读错误是一个没扫描到或无法译码的符号字符,一个替代错误是错误译码的符号字符。由于QR码是矩阵型符号,如果一个缺陷使深色模块变成浅色模块或将浅色模块变成深色模块,将符号字符错误地译码为表面上有效,但却是另一个不同的码字。这种数据替代错误需要两个纠错码字来纠正。可纠正的替代和拒读错误的数量由下式给出: e + 2t ≤ d – p 其中:e=拒读错误数 t=替代错误数 d=纠错码字数 p=错误译码保护码字
  • 63. Ⅴ. QR码的编码 纠错例如:版本6-H符号中共有172个码字,其中有112个纠错码字(其余60个为数据码字)。这112个纠错码字可纠正56个替代错误或112个拒读错误,即符号纠错容量为56/172或32.6%。 在上面的公式中,版本1-L符号的p=3,版本1-M符号和版本2-L符号的p=2,版本1-H、1-Q和3-L符号的p=1,其他情况下p=0。p>0(即1,2或3)时,有p个码字作为错误检测码字,防止从错误超过纠错容量的符号传输数据。e必须小于d/2。例如,在版本2-L符号中码字总数为44,其中数据码字为34个,纠错码字为10个。从表13中可以看出纠错容量为4个替代错误(e=0)。代入上面公式: 0 +(2×4)= 10 – 2 这就意味着纠正4个替代错误只需要8个纠错码字,剩余的2个纠错码字可用于检测(不能纠正)其他错误,如果超过4个替代错误,则译码失败。 根据版本和纠错等级,将数据码字序列分为1个或多个块,对每一个块分别进行纠错运算。如果某一符号版本需要剩余位填充符号容量中剩余的模块,剩余位都应为0。
  • 64. Ⅴ. QR码的编码 纠错(c, k, r): c =码字总数 k =数据码字数 r =纠错容量 † 纠错容量小于纠错码字数的一半,以减少错误译码的可能性
  • 65. Ⅴ. QR码的编码 纠错纠错码字的生成 将数据码字(必要时包括填充码字在内)按照上表分为相应数量的块,每一块分别计算出纠错码字并添加到数据码字后。 QR码的多项式算法用位的模2算法和字节的模100011101算法。这是加罗瓦域28以100011101表示主模块多项式:X8+X4+X3+X2+1。 数据码字为多项式各项的系数,第一个数据码字为最高次项的系数,最低次项的系数是第一个纠错码字前的最后一个数据码字。 纠错码字是数据码字被纠错码多项式g(x)除得的余数。余数的最高次项系数为第一个纠错码字,最低次项系数为最后一个纠错码字,也是整个块的最后一个码字。构造信息的最终码字序列 最终码字序列中的码字数应总是与上表所列的符号能够表示的码字总数相同。 按如下步骤构造最终的码字序列(数据码字加上纠错码字,必要时加上剩余码字)。 1)按表13-22,根据版本和纠错等级将数据码字序列分为n块。 2)对每一块,计算相应块的纠错码字。 3)依次将每一块的数据和纠错码字装配成最终的序列:数据块1的码字1;数据块2的码字1;数据块3的码字1;以此类推至数据块n-1的最后的码字;数据块n的最后的码字;随后,纠错块1的码字1,纠错块2的码字1,…以此类推至纠错块n-1的最后的码字;纠错块n的最后的码字。QR码符号所包含的数据和纠错块通常正好填满符号的码字容量,而在某些版本中,也许需要3、4或7个剩余位,添加在最终的信息位流中以正好填满编码区域的模块数。
  • 66. Ⅴ. QR码的编码 纠错最短的数据块应在序列的最前面,所有的数据码字在第一个纠错码字的前面。例如,版本5-H的符号由4个数据和纠错块组成,前两个块分别包括11个数据码字和22个纠错码字,第3、4个块分别包括12个数据码字和22个纠错码字。在此符号中,字符的布置如下,表中的每一行对应一个块的数据码字(表示为Dn)和相应块的纠错码字(表示为En);符号中字符的布置可以通过由上向下逐列读表中的各列得到。版本5-H符号的最终码字序列为: D1, D12, D23, D35, D2, D13, D24, D36, ... D11, D22, D33, D45, D34, D46, E1, E23, E45, E67, E2, E24, E46, E68, ... E22, E44, E66, E88。如果需要,在最后的码字后面加上剩余位(0)。
  • 67. Ⅴ. QR码的编码 纠错码字在矩阵中的布置 1、符号字符表示 在QR码符号中有两种类型的符号字符:规则的和不规则的。它们的使用取决于它们在符号中的位置,以及与其他符号字符和功能图形的关系。 多数码字在符号中表示为规则的2×4个模块的排列。其排列有两种方式,垂直布置(2个模块宽,4个模块高);如果需要改变方向,可以水平布置(4个模块宽,2个模块高)。当改变方向或紧靠校正图形或其他功能图形时,需用不规则符号字符。 2、功能图形的布置 按照与使用的版本相对应的模块数构成空白的正方形矩阵。在寻象图形、分隔符、定位图形以及校正图形相应的位置,填入适当的深色浅色模块。格式信息和版本信息的模块位置暂时空置,它们对所有版本都是相同的。 3、符号字符的布置 在QR符号的编码区域中,符号字符以2个模块宽的纵列从符号的右下角开始布置,并自右向左,且交替地从下向上或从上向下安排。下面给出了符号字符以及字符中位的布置原则。 位序列在纵列中的布置为从右到左,向上或向下应与符号字符的布置方向一致。
  • 68. Ⅴ. QR码的编码 纠错b)每个码字的最高位(表示为位7)应放在第一个可用的模块位置,以后的放在下一个模块的位置。如果布置的方向是向上的,则最高位占用规则模块字符的右下角的模块,布置的方向向下时为右上角。如果先前的字符结束于右侧的模块纵列,最高位可能占据不规则符号字符的左下角模块的位置。c)如果符号字符的两个模块纵列同时遇到校正图形或定位图形的水平边界,可以在图形的上面或下面继续布置,如同编码区域是连续的一样。 d)如果遇到符号字符区域的上或下边界(即符号的边缘, 格式信息,版本信息或分隔符),码字中剩余的位应改 变方向放在左侧的纵列中。e)如果符号字符的右侧模块纵列遇到校正图形或版本信息占用的区域,位的布置形成不规则排列符号字符,在相邻校正图形或版本信息的单个纵列继续延伸。如果字符在可用于下一个字符的两列纵列之前结束,则下一个符号字符的首位放在单个纵列中。
  • 69. Ⅴ. QR码的编码 纠错还有另一种可供选择的符号字符布置方法,可得到相同的结果,将整个码字序列视为一个单独的位流,将其(最高位开始)按从右向左,按向上和向下的方向交替的布置于两个模块宽的纵列中。并跳过功能图形占用的区域,在纵列的顶部或底部改变方向,每一位应放在第一个可用的位置。 当符号的数据容量不能恰好分为整数个8位符号字符时,要用相应的剩余位填充符号的容量。在进行掩模以前,这些剩余位的值为0。版本2-M符号的符号字符布置
  • 70. 版本7-H符号的符号字符布置 Ⅴ. QR码的编码 纠错
  • 71. Ⅴ. QR码的编码 掩模 为了QR码阅读的可靠性,最好均衡地安排深色与浅色模块。应尽可能避免位置探测图形的位图1011101出现在符号的其他区域。为了满足上述条件,应按以下步骤进行掩模。 1)掩模不用于功能图形 2)用多个矩阵图形连续地对已知的编码区域的模块图形(格式信息和版本信息除外)进行XOR操作。XOR操作将模块图形依次放在每个掩模图形上,并将对应于掩模图形的深色模块的模块取反(浅色变成深色,或相反)。 3)对每个结果图形的不合要求的部分记分,以评估这些结果。 4)选择得分最低的图形。 下表给出了掩模图形的参考(放置于格式信息中的二进制参考)和掩模图形生成的条件。掩模图形是通过将编码区域(不包括为格式信息和版本信息保留的部分)内那些条件为真的模块定义为深色而产生的。所示的条件中,i代表模块的行位置,j代表模块的列位置,(i,j)=(0,0)代表符号中左上角的位置。掩模图形参考条件000(i + j) mod 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
  • 72. Ⅴ. QR码的编码 掩模版本1符号的所有的掩模图形,用掩模图形参考000到111的掩模结果。
  • 73. Ⅴ. QR码的编码 掩模符号的掩模过程
  • 74. Ⅴ. QR码的编码 掩模在依次用每一个掩模图形进行掩模操作之后,要通过对每一次如下情况的出现进行罚点记分,以便对每一个结果进行评估,分数越高,其结果越不可用。在下表中,N1到N4为对不好的特征所罚分数的权重(N1=3,N2=3,N3=40,N4=10),i为紧邻的颜色相同模块数大于5的次数,k为符号深色模块所占比率离50%的差距,步长为5%。虽然掩模操作仅对编码区域进行,不包括格式信息,但评价是对整个符号进行的。特征评价条件分数行/列中相临的模块的颜色相同模块数 = (5 + i)N1 + i模块块的颜色相同 颜色相同的模块组成*块块尺寸 = m×nN2× (m - 1)×(n - 1)在行/纵列中出现1:1:3:1:1(深浅深浅深)图形 N3整个符号中深色模块的比率50±(5×k)% 到 50±(5×(k + 1))%N4×k应选择掩模结果中罚分最低的掩模图形用于符号掩模。
  • 75. Ⅴ. QR码的编码 BCH码BCH(15,5)码用于纠错。 以数据位串为系数的多项式被生成多项式G(x)=X10+X8+X5+X4+X2+X+1除,所得剩余多项式的系数串应追加到数据位串上形成(15,5)BCH码字符串。最后,通过用101010000010010对位串进行异或(XOR)运算进行掩模,来保证掩模图形和纠错等级的任意组合的格式信息位图不全为0。 例:纠错等级M;掩模图形101 二进制字符串: 00101 生成多项式: X2+1 将次数升至(15-5): X12+X10 被G(X)除后得 = (x10 + x8 + x5 + x4 + x2 + x + 1)x2 + (x7 + x6 + x4 + x3 + x2) 把上面的剩余多项式的系数字符串附加至格式信息数据串。 00101+0011011100 → 001010011011100 用掩模图形进行XOR运算: 101010000010010 结果: 100000011001110
  • 76. Ⅴ. QR码的编码 格式信息格式信息为15位,其中有5个数据位,10个是用BCH(15,5)编码计算得到的纠错位。 纠错等级二进制指示符L01M00Q11H10格式信息数据的第3到第5位的内容为掩模图形参考。 按上述方法计算10位纠错数据,并加在5个数据位之后; 将15位格式信息与掩模图形101010000010010进行XOR运算,以确保纠错等级和掩模 图形合在一起的结果不全是0; 格式信息掩模后的结果应映射到符号中为其保留的区域内。需要注意的是,格式信息在符 号中出现两次以提供冗余,因为它的正确译码对整个符号的译码至关重要。 格式信息的最低位模块编号为0,最高位编号为14,位置为(4V+9,8)的模块总是深色, 不作为格式信息的一部分表示,其中V是版本号。
  • 77. Ⅴ. QR码的编码 格式信息例: 设定纠错等级为M:00 掩模图形参考: 101 数据: 00101 BCH位: 0011011100 掩模前的位序列: 001010011011100 用于XOR操作的掩模图形:101010000010010 格式信息模块图形: 100000011001110
  • 78. Ⅴ. QR码的编码 版本信息版本信息为18位,其中,6位数据位,通过BCH(18,6)编码计算出12个纠错位。6位数据为版本信息,最高位为第一位。12位纠错信息在6位数据之后。 只有版本7~40的符号包含版本信息,没有任何版本信息的结果全为0。所以不必对版本信息进行掩模。 最终的版本信息应映射在符号中预留的位置。需要注意的是,由于版本信息的正确译码是整个符号正确译码的关键,因此版本信息在符号中出现两次以提供冗余。版本信息的最低位模块放在编号为0的位置上,最高位放在编号为17的位置上。 例: 版本号: 7 数据: 000111 BCH位: 110010010100 格式信息模块图形:000111110010010100 6行×3列模块组成的版本信息块放在定位图形的上面,其右侧紧临右上角位置探测图形的分隔符,3行×6列模块组成的版本信息块放在定位图形的左侧,其下边紧临左下角位置探测图形的分隔符。
  • 79. Ⅴ. QR码的编码 版本信息
  • 80. Ⅴ. QR码的编码 结构链接可将多达16个QR码符号以一定的结构方式链接起来,如果一个符号是一个结构链接信息的一部分,那么,它用位于最前边的三个符号字符组成的标头来指示。 结构链接模式指示符0011放在第一个符号字符中的四个高位。 结构链接模式指示符之后,紧接两个结构链接码字,它们分布在第一个符号字符的四个低位、第二个符号字符的八位以及第三个符号字符的四个高位。第一个码字是符号序列指示符,第二个码字是奇偶校验数据,它在结构链接信息的所有同一链接的QR码符号中是相同的,用以确认所有阅读的符号是同一结构链接信息的一部分。结构链接头后紧接以第一个模式指示符开始的符号的数据码字。如果采用ECI缺省模式之外的一个或多个ECI模式,那么,每一个由ECI模式指示符与ECI模式指定符组成的ECI标头应紧接在结构链接头后。 下图中的左半部分给出一个结构链接符号的示例,它与右半部分的QR符号表示相同的数据信息。=
  • 81. Ⅵ. QR码的解码 从识读一个QR码符号到输出数据字符的译码步骤是编码程序的逆过程。 1、定位并获取符号图像。深色与浅色模块识别为“ 0”与“1”的阵列。 2、识读格式信息(如果需要,去除掩模图形并完成对格式信息模块的纠错,识别纠错等级与掩模图形参考。) 3、识读版本信息,确定符号的版本。 4、用掩模图形掩模图形参考已经从格式信息中得出对编码区的位图进行异或处理消除掩模。 5、根据模块排列规则,识读符号字符,恢复信息的数据与纠错码字。 6、用与纠错级别信息相对应的纠错码字检测错误,如果发现错误,立即纠错。 7、根据模式指示符和字符计数指示符将数据码字划分成多个部分。 8、最后,按照使用的模式译码得出数据字符并输出结果。
  • 82. Ⅵ. QR码的解码
  • 83. Ⅵ. QR码的解码 译码算法参考译码算法在图像中寻找符号并进行译码,译码算法参照图象中的深色浅色状态。 1、选择图象的反射率最大值与最小值之间的中值确定阈值,使用阈值将图象转化为一系列深色与浅色像素。 2、确定寻象图形,在QR码中的寻象图形由位于符号的4个角中的3个角上的3个相同的位置探测图形组成。每一位置探测图形的模块序列由一个深色—浅色—深色—浅色—深色次序构成,各元素的相对宽度的比例是1∶1∶3∶1∶1。对本译码算法,每一元素宽度的允许偏差为0.5(即单个模块的方块的尺寸允许范围为0.5~1.5,3个模块宽度的方块的宽度允许尺寸范围为2.5~3.5)。 a、当探测到预选区时,注意图像中一行像素与位置探测图形的外边缘相遇的第一点和最后一点A和B(如下图)。对该图像中的相邻象素行重复探测,直到在中心方块X轴方向所有穿过位置探测图形的直线被全部识别。位置探测图形扫描线
  • 84. Ⅵ. QR码的解码 译码算法b、重复步骤a,在图象的Y轴方向,识别穿过位置探测图形中心方块的所有象素行。 c、确定探测图形中心,通过在X轴方向穿过位置探测图形中心块的最外层的象素线上A、B两点连线的中点连一直线,用同样方法在另一垂直方向上划一直线,两条直线的交点就是位置探测图形的中心。 d、重复步骤a至c,确定其它两个位置探测图形的中心位置。 3、通过分析位置探测图形中心的坐标,识别哪一个位置探测图形是左上角图形以及符号的旋转角度来确定符号的方位。 4、确定:a、 距离D,是左上角位置探测图形中心与右上角位置探测图形中心之间的距离,b、 两个探测图形的宽度,WUL和WUR。上部位置探测图形
  • 85. Ⅵ. QR码的解码 译码算法5、计算符号的名义模块宽度尺寸X X=(WUL+WUR)/14 6、初步确定符号的版本 V = [(D/X) - 10] / 4 7、如果初步确定的符号版本等于或小于6,那么该计算值即为版本号。如果初步确定的符号版本等于或大于7,那么版本信息应按下列步骤译码: a、用7除以右上角位置探测图形的宽度尺寸WUR,得到模块尺寸CPUR CPUR=WUR/7 b、由A,B和C找出通过三个位置探测图形中心的导向线AC、AB。根据与导向线相平行的直线、位置探测图形的中心坐标和模块尺寸CPUR 确定在版本信息1区域中每一模块中心的取样网格。二进制值0和1根据采样网格上的深色浅色的图形来确定。位置探测图形与版本信息
  • 86. Ⅵ. QR码的解码 译码算法c、通过检测并纠错确定版本,如果有错,根据BCH纠错原理,对版本信息模块出现的错误进行纠错。 d、如果发现错误超过纠错容量,那末计算左下方位置探测图形的宽度尺寸WDL,并按上述步骤a,b,c对版本信息2进行译码。 8、对于没有校正图形的版本1符号,继续以下的算法的第7步和第8步进行译码,然后转至本算法的第9步。版本2以及更高版本的符号的译码要求由定义的坐标决定的每一校正图形的中心坐标来确定取样网格。7、重新确定定位图形中,深色和浅色模块的中心点的水平平均间距X。用类似的方法,计算左边定位图形中,深色与浅色模块的中心点的垂直平均间距Y。 8、建立一个取样网格:(a)穿过上部定位图形的水平线,以及与之平行以Y值为垂直间距的水平线,在水平参考线之上形成六条与之平行的水平线,水平参考线下方与之平行的水平线的数量由符号版本要求决定。(b)通过左边定位图形的垂直线,以及与之平行的以X值为水平间距的垂直线,在垂直参考线左边形成与之平行的六条垂直线,垂直参考线右边与之平行的线的数量由符号的版本决定。
  • 87. Ⅵ. QR码的解码 译码算法位置探测 图形与校 正图形 校正图形的中心坐标 a、左上角位置探测图形的宽度WUL除以7,计算模块尺寸CPUL CPUL=WUL/7 b、根据左上角位置探测图形PUL的中心A的坐标,平行于从第7c)得到的导向直线AB和AC的直线以及模块尺寸CPUL初步确定校正图形P1和P2的中心坐标。 c、从初定的中心坐标的象素开始,扫描校正图形P1和P2中的空白方块的轮廓,确定实际的中心坐标Xi和 Yj d、根据左上角位置探测图形PUL的中心坐标和在c中得到的校正图形P1和P2的实际中心坐标值,估计校正图形P3的初步中心坐标。
  • 88. Ⅵ. QR码的解码 译码算法e、按照c中同样的步骤找到校正图形P3的实际中心坐标。 f、确定LX和Ly,LX是指校正图形P2和P3两中心之间的距离,Ly是指校正图形P1和P3两中心之间的距离。用校正图形的已定义的间距除Lx和Ly,获得位于符号左上角区域下边的模块节距CPX和右边的模块节距CPy值。 CPx=Lx/AP CPy=Ly/AP 其中,AP是校正图形中心的模块间距 以同样方式,找出Lx,和Ly,,Lx,是左上部位置探测图形PUL与校正图形P1的中心坐标之间的水平距离。Ly,是左上部位置探测图形PUL的中心坐标与校正图形P2的中心坐标之间的垂直距离。由下面给出的公式计算符号左上角区域中上边的模块节距CPx和左边的节距CPx,值。 CPx,=Lx,/(校正图形P1的中心模块的列坐标 — 左上部位置探测图 形PUL的中心模块的列坐标) CPy,=Ly,/(校正图形P2的中心模块的行坐标 — 左上部位置探测图 形PUL的中心模块的行坐标)(符号的左上区域)
  • 89. Ⅵ. QR码的解码 译码算法校正图形中心的模块间距(AP)
  • 90. Ⅵ. QR码的解码 译码算法校正图形中心的模块间距(AP)
  • 91. Ⅵ. QR码的解码 译码算法g、依据代表符号左上区的每一边的模块节距值CPx,CPx,,CPy和CPy,,确定覆盖符号的左上区的采样网格。 h、在同样方式下,确定符号右上区(被右上角位置探测图形PUR,校正图形P1,P3和P4所覆盖)和符号左下区(被右上区位置探测图形PUR,校正图形P2,P3和P5覆盖)的采样网格。 i、对校正图形P6,由校正图形P3、P4和P5的间距,穿过校正图形P3和P4,P4和P5的中心的导向直线以及这些图形的中心坐标值得到的模块间距CPx,和CP符号右下区 ,值,估计它的初步的中心坐标。(符号右下区) j、重复步骤e—h,确定符号右下区的采样网格。 k、用同样原则确定符号未覆盖区的采样网格。
  • 92. Ⅵ. QR码的解码 译码算法9、对网格的每一交点上的图象象素取样,并根据阈值确定是深色块还是浅色块,构造一个位图,用二进制的“1”表示深色的象素,用二进制的“0”表示浅色的象素。 10、对与左上区位置探测图形相邻的格式信息译码,得到纠错等级和用于符号的掩模图形。如果检测出错误超过格式信息的纠错容量,那么,采用同样的程序对与右上部和左下部位置探测图形相邻的格式信息进行译码。 11、用掩模图形对符号编码区进行异或(XOR)处理,解除掩模并恢复表示数据和纠错码字的符号字符。这与在编码程序中采用的掩模处理过程的作用正好相反。 12、根据符号字符的布置中的排列规则确定符号码字。 13、根据符号版本和纠错等级需求,按照码字序列构造的交替处理的逆过程,重新将码字序列按块排列。 14、执行错误检测与纠错译码程序,纠正替化错误与拒读错误,直到符号版本和纠错等级所规定的最大纠错容量。 15、通过重新组配数据块序列,恢复原始信息的位流。 16、将数据位流分成若干段,每一段由模式指示符开始,段的长度由在模式指标符后的字符计数指示符确定。 17、根据采用的模式的规则,对每一段进行译码。
  • 93. 谢谢大家!