• 2.11 MB
  • 2022-04-22 13:47:22 发布

GBT27766-2011二维条码网格矩阵码.pdf

  • 63页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'ICS35.040L71a雷中华人民共和国国家标准GB/T27766--20112011-12-30发布二维条码网格矩阵码Two-dimensionalbarcode---Gridmatrixcode2012-05-01实施宰瞀鹃紫瓣警矬瞥星发布中国国家标准化管理委员会口‘1” 标准分享网www.bzfxw.com免费下载GB/T27766--2011目次前言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯I引言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯Ⅱ1范围⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12规范性引用文件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13术语、定义、缩略语和约定⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯l4符号描述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯25符号结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··46符号生成⋯⋯⋯·⋯·⋯·⋯⋯⋯⋯⋯·⋯⋯⋯⋯··⋯⋯⋯⋯⋯···⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯67符号印制⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯218符号质量⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯229译码过程⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯2310数据传输⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯24附录A(规范性附录)码字分块参数C语言源代码⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯26附录B(资料性附录)位流长度的优化⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯30附录C(资料性附录)GM码印制的用户导则⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯40附录D(规范性附录)纠错生成多项式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43附录E(资料性附录)参考译码算法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯50参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯59 标准分享网www.bzfxw.com免费下载刖罱本标准按照GB/T1.1—2009给出的规则起草。本标准由中华人民共和国工业和信息化部提出。本标准由全国物品编码标准化技术委员会(SAC/TC287)归口。本标准起草单位:武汉矽感科技有限公司、中国电子技术标准化研究所。本标准主要起草人:张伟、张也平、刘波、张得煜、樊旭川。GB/T27766--2011 标准分享网www.bzfxw.com免费下载GB/T27766--2011引言本文件的发布机构提请注意,声明符合本文件时,可能涉及第5章、第6章、第9章、第10章相关的专利的使用。本文件的发布机构对于该专利的真实性、有效性和范围无任何立场。该专利持有人已向本文件的发布机构保证,他愿意同任何申请人在合理且无歧视的条款和条件下,就专利授权许可进行谈判。该专利持有人的声明已在本文件的发布机构备案。相关信息可通过以下联系方式获得:专利所有人:武汉矽感科技有限公司地址:武汉市东西湖区吴家山经济开发区金一路武汉矽感光电产业园邮政编码:430040网址:http://www.syscantech.crl联系人:何柳青联系电话:027—61675589传真:027-61675592E-mail:helq@syscangroup.tom请注意除上述专利外,本文件的某些内容仍可能涉及专利。本文件的发布机构不承担识别这些专利的责任。Ⅱ 标准分享网www.bzfxw.com免费下载1范围二维条码网格矩阵码GB/T27766--2011本标准规定了网格矩阵码的符号结构、信息编译码方法、纠错编译码方法、信息排布方法、参考译码算法以及符号质量要求等技术内容。本标准适用于网格矩阵码的生成与识读。2规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T1988信息技术信息交换用七位编码字符集GB/T12905条码术语GB18030信息技术中文编码字符集GB/T23704信息技术自动识别与数据采集技术二维条码符号印制质量的检验ISO/IEC15424信息技术自动识别与数据采集技术数据载体标识符AIM国际技术规范扩展解释:第1部分:识别方案与协议(简称“AIMECI规范”)3术语、定义、缩略语和约定3.1术语和定义GB/T12905中界定的以及下列术语和定义适用于本文件。3.1.1纠错块errorcorrectioncodewordblock对码字分组后用于纠错的一组码字。3.1.2边框frame宏模块的最外20个单元模块,这些单元模块同为深色(低反射率)或同为浅色(高反射率)。3.1.3层layer环绕中心宏模块的宏模块圈。3.1.4层标识号layerIDnumber赋予宏模块左上角的两个单元模块的值,该值根据纠错等级以及宏模块所在的层号确定,可用于指明GM码的方向。3.1.5宏模块macromoduleGM码的子结构,由8×6个单元模块组成。】 标准分享网www.bzfxw.com免费下载GB/T27766--20113,1.6单元模块module组成GM码的基本单元,每个单元模块表示一个二进制位。3.1.7填充位paddingbit用于填充数据位流最后一个码字后面容量的无含义位,其值为0。3.1.8填充码宇paddingcodeword当数据码字和纠错码字不能填满GM码的容量时,用于填充GM码的剩余容量的码字。填充码字不表示有效数据,但参与Reed-Solomon纠错运算。3.1.9版本version用于表示GM码规格的序列号。3.1.10功能码functioncode用于指示属于特定应用或特定功能的GM码符号的代码。3.1.11纠错等级errorcorrectionlevel指明GM码中纠错码字所占比例的参数。3.2缩略语下列缩略语适用于本文件:ABs——绝对值(AbsoluteValue)DIV——整除运算(Division)ECI——扩展解释(ExtendedChannelInterpretation)FNC——功能码(FunctionCode)GF——伽罗瓦有限域(GaloisField)GM码——网格矩阵码(GridMatrixCode)MO卜模运算,求整除后的余数(Modulus)3.3约定下列表示适用于本文件:(⋯)一——表示括号中的内容使用二进制表示(⋯)。。——表示括号中的内容使用十六进制表示LzJ——表示不超过z的最大整数rzl——表示不小于z的最小整数4符号描述4.1基本特征4.1.1可编码信息GM码可编码以下信息2 a)数字字符(数字o~9,GB/T1988中值48至57);b)大写字母(字母A~z,GB/T1988中值65至90);c)小写字母(字母a~z,GB/T1988中值97至122)}d)汉字字符(GB18030);e)8位字节型数据。4.1.2数据表示法深色单元模块表示二进制“1,,,浅色单元模块表示二进制“0”。4.1.3符号规格GB/T27766--2011GM码的规格为3×3宏模块到27×27宏模块,对应予版本1到版本13,每一版本C-M码比前一版本每边增加2个宏模块,见表l。表1各版本GM码的结构单元模块效层数总码字数版本宏模块数(不包括空白区)(不包括中心宏模块)(数据+纠错码字)13×318×1811825×530X3025037×742×4239849×954x544162511×1166×665242613×1378×786338715X1590x907450817X17102×1028578919×19114×1149722io21×21126×126lO8821123×23138x1381110581225×25150×1501212501327×Z7162×1621314584.1.4符号容量使用最低纠错等级的最大版本GM码(纠错1级版本13)的容量如下:a)2751个数字,b)1836个大写字母;c)1836个小写字母;d)1529个数字字母混合字符;e)705个GB18030双字节1区或双字节2区内的字符,或571个GB18030双字节字符,或285个GB18030四字节字符;f)1143个字节。3 GB/T27766--20114.1.5纠错等级版本1的GM码有2级到5级纠错,版本2到版本13的GM码有I级到5级纠错,每级中纠错码字数占总码字数的比例为:a)1级;10%(不适用于版本1);b)2级:20%;c)3级:30%;d)4级:40%;e)5级:50%。纠错码字的个数为总码字个数的上述百分比(向下舍人),见附录A。4.2附加特征4.2.1结构链接允许用不多于16个的GM码在逻辑上连续地表示数据文件。在多顺序扫描状态下应保持原始顺序与数据正确连接。4.2.2支持ECI协议ECI协议(见“AIMECI规范”)使GM码可以表示缺省字符集以外的字符(如阿拉伯字符、古斯拉夫字符、希腊字符等),及其他数据解释(如用一定的压缩方式表示的数据),或者具体应用的编码要求。5符号结构5.1概述GM码由深色边宏模块和浅色边宏模块交错排列而成的正方形宏模块矩阵组成,矩阵每边为奇数个宏模块,且GM码的中心与四个角上均为深色边宏模块,GM码的四周为空白区,见图1。一空自区图1GM码结构圈版本2纠错5级的GM码示意图见图2。层标识号第2码字第1码宇老模块边框 52宏模块结构图2版本2纠错5级的GM码示意图宏模块的内部结构见图3,包括边框、两个7位的码字和层标识号。每个宏模块由6×6个单元模块无缝排列而成,深色边宏模块的最外一吲单元模块全都是深色,浅色边宏模块的最外一圈单元模块全部是浅色。宏模块的最外一圈单元模块不表示数据.用于识别与定位。在20个边框单元模块内部总共有16个单元模块:b。,b∥’b舢每个单元模块表示i位二进制数,深色对应“1”,浅色对应“0”。b。。和b。。单元模块用来表示层标识号,b。。为高位。b。到b。表示第1个码字.b”到br表示第2个码字,bz:和b。分别是码字的最高位。3)镕em☆掇#b)*自mi#堍图3宏模块结构图3中两个宏模块的数据均为(2D)w“和(4A)”cx。图中第1个码字bs—b。为(0101i01)⋯即(2D)⋯第2个码字bl3⋯b:为(i001010)⋯即(4A)~层标识号b⋯b。为(10)蝌,即(2)嘲,3宏模块的分层GM码由边长为奇数个宏模块的方阵组成。见图4,方阵中心的宏模块称为中心宏模块,中心宏模块(第0层)周围的8个宏模块为第1层宏模块,第1层宏模块外侧的16个宏模块为第2层宏模块.⋯⋯,直至最外层宏模块。圈4宏模块的分屡宏模块的层数(不包括中心宏模块)等于GM码的版本(见表1) GB/T27766--2054层标识号每个宏模块都有一个层标识号,层标识号的取值为0~3。同一层宏模块的层标识号相同。宏模块的层标识号由GM码的纠错等级和该宏模块所在的层号共同央定。表2是不同纠错等级的GM码各层宏模块的层标识号。表2层标识号分布纠错等级十o55填充码字当数据码字和纠错码字不能正好填满GM码的容量时,在数据码宇后加^填充玛宇。当宏模块的第1码宇(bs到b。)是填充码宇时,应填充(0000000)州;当第2码字(b,。到bt)是填充码宇,并且是码字流中的第1个填充码字时t应填充(0000000)⋯否则应填充(1111110)洲t见图5。a)填A∞Aem女##b)填R∞&E4%#块图5填充的宏模块56空白医空白区为环绕在GM码四周的不小于6个单元模块宽的区域,其反射率应与浅色单元模块相同6符号生成61生成过程GM码的生成过程包括以下六个步骤:a)数据分析:分析输入的数据,确定数据的数据编码模式。对不同的数据类型.GM码采用不同的数据编码模式进行编码,见63。每种模式有各自的编码规则。b)数据编码:将输人数据按照其编码模式对应的编码规则转换为位流。当需要进行模式切换时,6 GB/T27766--2011在新模式数据编码前输出模式转换码。将编码产生的位流按每7位对应一个码字的方式转换为数据码字流,最后一个码字不足7位时用。填充。c)计算GM码版本:用户应选取可接受的最小纠错等级,根据表1可得到能容纳数据码字和纠错码字的GM码版本。若用户未选取纠错等级,使用推荐的纠错等级(见6.6.2)计算GM码版本。根据该GM码版本,采用可以容纳给定数据的最高纠错等级,并在码字流的最后添加需要的填充码字。d)纠错编码:若数据码字和纠错码字总数大于127,应将数据码字进行分块(见6.6.3)。对每块码字分别生成纠错码宇,并将纠错码字添加到该块数据码字的后面。e)在矩阵中布置网格图形:根据GM码的版本和纠错等级,将每个宏模块的边框以及层标识号排列到矩阵中。f)排列数据码字和纠错码字:若码字被分块,则对各块码字进行交错排列后得到一个单一的码字流。将码字流按顺序排列到矩阵中,完成编码。6.2数据分析对输人数据进行类型分析,按类型划分成多个段,使编码得到的位流尽量短。位流长度优化的一种方法参见附录B。6.3模式指示6.3.1模式分类GM码的编码模式分数据编码模式、ECI模式和功能码模式三类,各种模式由确定的模式指示符指示。表3列出了所有的模式指示符。表3模式指示符模式分类模式名称模式指示符说明汉字模式(o001)耻q每个字符用13位二进制进行编码。见6.4.1数字模式(0010)Ⅲ每3个字符用10位二进制进行编码。见6.4.2小写字母模式(OOll)邮q每个字符用5位二进制进行编码。见6.4.3数据编码模式大写字母模式(0100)Ⅲ每个字符用5位二进制进行编码。见6.4.4数字字母混合模式(0101)m每个字符用6位二进制进行编码。见6.4.5控制字符模式1每个字符用6位二进制进行编码。见6.4.6字节模式(0111)Ⅻ每个字符用8位=进制进行编码。见6.4.7ECI模式ECI(1100)B肿见6.4.8(1000)Ⅻ功能码l,GSl应用标识。见6.4.9.1ENCl(1011)Ⅻ功能码l,AIM应用标识。见6.4.9.1功能码模式FNC2(1001)Ⅻ功能码2,结构链接功能。见6.4.9.2FNC3(1010)B甜功能码3,识读设备初始化数据。见6.4.9.3‘只允许从小写字母模式、大写字母模式或数字字母混合模式进行切换(见6.4.6.2和6.5.1)。6.3.2数据编码模式数据编码模式包括汉字模式、数字模式、小写字母模式、大写字母模式、数字字母混合模式、控制字7 GB/T27766--2011符模式和字节模式,见表3。6.3.3ECI模式ECI模式只能出现在数据的开头或“模式结束”转换码(见6.5.1)之后。ECI模式的模式指示符之后为ECI任务号,编码方法见6.4.8。6.3.4功能码模式功能码分FNCl、FNC2和FNC3三类,其中FNCl包括两种模式指示符,分别对应两种应用标识,见表3。功能码只能在GM码的开头出现。一个GM码使用功能码时,其模式指示符应出现在数据编码位流的前面。一个GM码最多可以使用两个功能码。6.3.5无效的模式指示符模式指示符(0000)。。、(OllO)Bm、(1101)enN、(1110)B,N和(1111)BⅢ表示无效。6.4数据编码模式6.4.1汉字模式6.4.1.1编码字符可编码字符包括:a)GB18030双字节l区及双字节2区的字符(即第一字节值在(A1)HH至(A9)。E)【或(Bo)。。至(F7)nn之间,且第二字节值在(A0)nn至(FF)。一之间的部分);b)“回车换行”(GB/T1988中值13、10的组合);c)数字对“oo”到“99”;d)8位字节型数据。注:GB18030除双字节1区及双字节2区以外的字符不能用汉字模式编码,可用字节模式编码。6.4.1.2编码规则汉字模式采用13位二进制进行编码。当一个GB18030双字节字符第一字节值在(A1)HⅨ至(A9)。Ⅲ之间,且第二字节值在(Ao)HⅨ至(FF)wn之阊时,按式(1)计算该字符的13位编码:N一(C1一(A1)HⅨ)×(80)HD【+(C2一(A0)HⅡ)⋯⋯⋯⋯⋯⋯⋯(1)式中:N——字符的13位编码;cz——GB18030编码的第一字节值;C:——GB18030编码的第二字节值。当一个GB18030双字节字符第一字节值在(B0)。。至(F7)。。之间,且第二字节值在(Ao)。。至(FF)“n之间时,按式(2)计算该字符的13位编码:N一(C1一(Bo)HEx+9)×(60)SEX+(C2一(A0)HEX)⋯⋯⋯⋯⋯⋯⋯(2)式中:N——字符的13位编码;c,——GB18030编码的第一字节值;cz——GB18030编码的第二字节值。式(1)及式(2)定义了0至7775之闻的编码值,以下方式用于定义7776至8191的编码值:8 GB/T27766--2011a)7776赋给“回车换行”符;b)7777至8032赋给8位字节数据(o至255),用于编码混在汉字信息中的非汉字数据,减小个别非汉字模式的数据嵌在一段汉字中导致的模式转换开销;c)8033至8132赋给数字对“00”到“99”;d)8160至8165用于实现模式的转换,见6.5.1;e)编码值8133至8159及编码值8166至8191是无效的。两个编码示例见表4。表4汉字编码示例步骤说明例1例21输人字符¥多2GBl8030编码(A3A4)H既(B6E0)HⅨ((A3)HD【一(A1)H懿)X(60)H疆+((B6)REX一(B0)imx+9)X(60)H既4-3代人公式(1)或公式(2)((A4)H口【一(A0)H既)((EO)眦x一(AO)H矗)4计算结果(C4)H既(5E0)HEx5转化为13位二进制值000001100010000101111000006.4.2数字模式6.4.2.1编码字符可编码字符包括;a)数字0至9(GB/T1988值48~57);b)“空格”(GB/T1988值32);c)“+”(GB/T1988值43);d)“一”(GB/T1988值45);e)“.”(GB/T1988值46);f)。,”(GB/T1988值44);g)“回车换行”(GB/T1988值13、10的组合)。6.4.2.2编码规则以连续的三个数字为一组将数据分组,每3个数字采用10位二进制进行编码。遇到非数字字符则将该字符包含到分组中,每组中最多只能有一个非数字字符,多余的非数字字符不能按数字模式编码。末尾一组不够三个数字用0填充。在输出第一组数字的编码前先输出2位计数器,记录最后一个分组填充的数字个数,译码时根据该计数器丢弃填充数字:a)“00”表示没有填充数字;b)“01”表示有1个填充数字;c)“lo”表示有2个填充数字;d)“11”为无效编码。编码只有数字字符的组时,按式(3)计算该组的10位编码:N一100D1+10D2+D3式中:N——数字组的10位编码; GB/T27766--2011Dt——数字组的第一个数字;Dz——数字组的第二个数字;D。——数字组的第三个数字。当分组中包含非数字字符时,非数字字符出现在分组中的位置有三种情况,分别是(X表示非数字字符):第1位置为xD-DzDs;第2位置为D1xD。D。;第3位置为D。D2xD。。同一个非数字字符处在不同的位置有不同的编码,非数字字符在不同位置时的赋码见表5。表5非数字字符赋码裹字符在分组中的位置编码(十进制数)11000“空格”(GB/T1988值32)210013100211003“+”(GB/T1988值43)210043100511006。一”(GB/T1988值45)210073100811009“.”(GB/T1988值46)2i01031011l1012“,”(GB/T1988值44)21013310141101S“回车换行”(GB/T1988值2101613、lo的组合)31017编码含有非数字字符的分组时,先输出非数字字符的10位二进制编码,然后再按式(3)计算并输出3个数字的10位二进制编码。剩下的编码值1018至1023用于实现模式的转换,见6.5,l。示倒:输人数据:。1,234,567.899”分组:1,234,567.89900编码十进制值}2101312310134561010789900转换为二进制:1011111101010001111011111111010101110010001111110010110001010111100001006.4.3小写字母模式6.4.3.1编码字符可编码字符z7个,包括26个小写英文字母a~z以及“空格”(GB/T1988中值32)。10 6.4.3.2编码规则GB/T27766--2011小写字母模式采用5位二进制进行编码,按顺序从a到z最后“空格”递增编码,字母“a”的编码为(00000)Bn,,。剩下的5个编码值(11011)Bm至(11111)Ⅲ用于实现模式的转换,见6.5.1。示倒:输人数据:编码十进制值转换为二进制6.4.4大写字母模式6.4.4.1编码字符bar“空格”code101726Z14340000100000100011101000010011100001100100可编码字符27个,包括26个大写英文字母A~z以及“空格”(GB/T1988中值32)。6.4.4.2编码规则大写字母模式采用5位二进制进行编码,按顺序从A到z最后“空格”递增编码,字母“A”的编码为(00000)Bn,,。剩下的5个编码值(11011)一至(11111)Bm用于实现模式的转换,见6.5.1。示倒:输人数据:编码十进制值转换为二进制BAR。空格”coDE101726214340000100000100011101000010011i000011001006.4.5数字字母混合模式6.4.5.1编码字符可编码字符63个,包括:a)数字0至9(GB/T1988中值48~57);b)大写英文字母A~z(GB/T1988中值65至90);c)小写英文字母a~z(GB/T1988中值97至122);d)“空格”(GB/T1988中值32)。6.4.5.2编码规则数字字母混合模式采用6位二进制进行编码,按顺序从数字、大写英文字母、小写英文字母最后“空格”递增编码,数字0的编码为(000000)。。。剩下的1个编码值(111111)mN用于实现模式的转换,见6.5.1。示倒:输入数据:编码十进制值转换为二进制0OooooooAlO001010b3710010I“空格”621111106.4.6控制字符模式6.4.6.1编码字符可编码字符64个,包括除以下字符外的GB/T1988字符 GB/r27766--2011a)“空格”(GB/T1988中值32);b)数字字符(GB/T1988中值48至57);c)大写英文字母(GB/T1988中值65至90);d)小写英文字母(GB/T1988中值97至122)e)DEL(GB/T1988中值127)。6.4.6.2编码规则控制字符模式采用6位二进制进行编码,按字符的GB/T1988中值由小至大顺序编码,第一个字符编码为(000000)nw。该模式的数据长度固定为1,编码后自动切换回之前的数据模式。输人数据的第一个字符不能分类为该模式。控制字符编码见表6。表6控制宇符编码表字符编码字符编码字符编码字符编码NULODLE163248SoH1DCl1733<49STX2DC218#3450ETX3DC319¥35>5lEOT4DC420%3652ENQ5NAK21&37@53ACK6SYN2238[54BEL7ETB23(39|55BS8CAN24)40]56HT9BM254157LFlOSUB26+4,258VT11ESC274350FF12FS2844{60CR】3GS294561So14RS30|46)62SI15US3147636.4.7字节模式字节模式采用8位二进制数编码0到255的字节数据。设输人数据的长度为L个字节,则先输出9位二进制无符号数L一1,用于记录字节数,随后直接输出字节数据本身。当输人数据的长度大于512字节时,将输人数据分割成多个数据段,每段长度不超过512字节,对每段数据分别编码。从第二段开始的每段数据都需要以模式转换码(0111)ⅢN和用9位二进制无符号数编码的该段数据长度开始。6.4.8ECI模式6.4.8.1ECI编码将输入的数据转换为一个位流。以缺省的ECI开始时,位流的开头为第一个数据类型的模式指示12 GB/T27766--2011符,否则,其前面要有ECI标头,后面为一个或多个不同模式的段。ECI标头由ECI模式指示符(1100)mN和ECI任务号组成。ECI的任务号为000000~811799(十进制)之间的6位数。ECI任务号的编码见表7。衰7ECI任务号的编码ECI任务号任务号编码000000~001023Obbbbbbbbbb001024~03276710bbbbbbbbbbbbbbb032768~81179911bbbbbbbbbbbbbbbbbbbb注:b⋯b是ECI任务号的二进制值。ECI模式指示符只能在数据的开头或“模式结束”转换码(见6.5.1)之后出现。输入的ECI数据需要编码系统作为一系列8位字节的值进行处理,可以采用汉字、数字、小写字母、大写字母、数字字母混合、控制字符、字节等一种或几种模式进行最高效的编码,而不必考虑其实际意义。例如,值为30。。到39He。的数据序列可以当作一个数字序列,用数字模式进行编码,即使实际上它并不表示数字字符。示倒:ECI编码表示:ECI任务号:400123待缩码数据的字节值:(31)H臣,(32)H践,(33)H耽,(34)HⅡ’(35)H聪,(36)嗽,(37)㈣(38)H腰,(39)HEX。编码位流:a)ECI模式指示符:1100}b)ECI任务号:1101100001101011111011;c)数据模式指示符(数字){0010;d)数据编码:00000111101101110010001100010101;e)最终的位流:1100110110000110101111101100100000011110110111001000Ii00010101。6.4.8.2ECI与结构链接ECI可以在单个GM码或GM码结构链接符号的任意位置出现。引入的任一ECI一直保持有效直至数据结束或一个新的ECI被引人,ECI将跨结构链接中的两个或多个GM码一直保持有效。6.4.9功能码模式6.4.9.1FNClFNCl模式指示符应在GM码的开头编码。结构链接模式同时被应用时,FNCl的模式指示符只在结构链接的第一个符号出现,并且FNCI的模式指示符在FNC2的模式指示符之前。FNCl模式指示符(1000)em用于标识按GSI系统规则格式化信息的符号。FNCl模式指示符(1011)em用于标识按AIM同意的特定行业或者特定应用规范格式化信息的符号。在第一数据字符位置的字符(a~z,A~z,或两位数字)用于指定特定的应用。6.4.9.2FNC2FNC2功能码用于实现结构链接功能,输入的数据可用最多16个GM码链接起来。每个结构链结中的符号都是由一个4字段(20位)链接控制头开始的:a)第一字段是4位的FNC2模式指示符(1001)。。;b)第二字段是8位的文件签名;13 cs/T27766--201lc)第三字段用4位数n表示链接中的GM码总个数为n+1;d)第四字段用4位数m表示当前GM码在结构链接中的序号。m应小于或等于n,否则该GM码是无效的。文件签名是用某种签名算法对输人的整体数据产生的签名,同一个结构链接中的所有符号的文件签名应相同,防止不同结构链接之间的符号互相串扰。FNC2应是符号中的最后一个功能码,FNC2链接控制头之后应是数据模式指示符或ECI模式指示符。在传输结构链接的符号数据之前,结构链接中的所有符号应全部被解码成功并且将数据还原为正确的顺序。6.4.9.3FNC3FNC3功能码用于实现将符号编码的内容用作识读设备的初始化参数。FNC3的模式指示符(1010)B,N应出现在数据编码位流之前。当FNC3和FNC2同时被应用时,FNC3的模式指示符应在FNC2的模式指示符之前,且只在结构链接的第一个符号出现。FNC3不能与FNCl同时使用。6.5混合模式编码6.5.1编码模式转换数据编码时的模式转换是通过输出模式转换码来实现的,不是任何两个模式都可以转换的。表8列出了全部的模式转换码,括号中是模式转换码的二进制位数。表8数据模式转换码下一编码模式当前编码数字字控制字符模式模式结束汉字数字小写字母大写字母字节母混合(切换)816081618162816381648165汉字(13位)101810191020102110221023数字(10位)27282930124125126小写字母(5位)(s位)(5位)(7位)‘(7位)·(7位)‘27282930124126大写字母(5位)(7位)‘1008100910101011101210141015数字字母混合(10位)0123457字节(4位)注:。*”号表示不允许的模式转换。‘小写字母、大写字母模式到数字字母混合、控制字符、字节模式的7位转抉码是5位的“11111”分别加上2位的“OO”.“01”,“10”。14 GB/T27766--20116.5.2数据编码息流程数据编码流程如下:a)以编码产生的二进制位流最短为目标,将输入数据按类型划分成段,对输人数据的分段进行优化的方法参见附录B。b)对所有数据段按照下面的步骤逐段编码:1)存在功能码时,按表3进行编码;2)当前数据段是第一段时,输出该段数据的模式指示符,见表3;3)按照当前数据模式的编码规则编码当前数据段;4)下一段数据编码前,首先输出当前模式到下一模式的模式转换码,见表8;5)需要编码ECI时,首先输出模式转换码“模式结束”,见表8,然后编码ECI模式指示符(1100)B“及ECI任务号(见表7),之后是下一数据段的模式指示符,见表3}6)最后一个数据段完成后,输出模式转换码“模式结束”,见表8。c)需要填充位时,最后一个码字填充“0”。d)需要填充码字时,第一个填充码字应当取(000000000)B。,后面的填充码字根据5.5规定的规则进行填充。6.6纠错编码6.6.1纠错等级OM码采用伽罗瓦有限域OF(27)的Reed-Solomon纠错算法生成纠错码字,有限域的本原多项式为3;-7+一+l,码字的位长为7位。纠错码字应添加在数据码字流后。GM码有5个用户可选纠错等级,对应的纠错码字容量见表9。裹9纠错码字容量纠错等级I·2st5l纠错码字占总码宇百分比(向下舍入)I10%20%30%40%50%6.6.2纠错的选择根据GM码质量、识读设备精度以及应用的物理环境选择最佳纠错等级。表10给出了各版本GM码的推荐纠错等级。一般情况下,用户不应选择小于表10中给出的最低推荐纠错等级的GM码。纠错等级选择的用户导则参见c.2。衷10推荐的纠错等级版本推荐的纠错等级推荐纠错等级下的数据码字数最低推荐纠错等级最低推荐纠错等级下的敦据码字数l59411243024034591894311411465~133总码宇的70%(向上舍人)1总码字的90“(向上舍人) GS/T27766--2011纠错码字可以纠正两种类型的错误,拒读错误(错误码字的位置已知)和替代错误(错误码字的位置未知)。可纠正的替代错误数和拒读错误数与纠错码字数和错误检测码字数之间的关系由式(4)给出。e+2t—d一声⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(4)式中:e——拒读错误数;t——替代错误数;。d——纠错码字数;声——错误检测码宇数。在一般情况下,p=0。当大部分纠错容量用于纠正拒读错误时,则检不出替代错误的概率增加;当拒读错误的总数大于纠错码字总数的一半时,声一3;当GM码的纠错码字总数小于6时,只允许纠正替代错误(F0,p一1)。6.6.3码宇的分块与纠错码字的分鼠运用Reed-Solomon纠错算法生成纠错码字时码字序列的长度受到所选用有限域的限制,GM码采用的是GF(27)有限域,码字序列的长度应小于128。当数据码字的个数加上纠错码字的个数大于127时需要将数据码字分割成多个纠错块,然后分别对每个纠错块运用纠错算法生成各自的纠错码字。设GM码的总码字容量为c。将c个码字分成B,个长度为N,的块,以及B:个长度为N:的块,满足式(5)。C=B1×Nl+B2×Nz⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(5)总分块数B见式(6)。B=;(C+126)DIV127⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(6)当C是B的整数倍时,码字分块参数为:B。一B,N。=CDIVB,B。一o,N:=0。当c不是B的整数倍时,码字分块参数为:N,=(cDIVB)+1,N:一N1—1,B。=c—B×N:,B2一B—B1。设选定的纠错等级为R(1≤R≤5),需要生成的纠错码字总数E见式(7)。E一(C×R)DIV10⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(7)B个纠错块中,前B。块中每块分配E,个纠错码字,后B.块每块分配E2个纠错码字,分配结果满足式(8)。E;E1×B3+E2×B‘B;Bl+B2=B3+B‘当E是B的整数倍时,纠错码字分配参数为:B。=B,E,一EDIVB,B。=0,E:z0。当E不是B的整数倍时,纠错码字分配参数为:E。=(EDIVB)+1,E。一E。一1,B。=E—B×Ez,Bt—B--B3。GM码码字分块参数表及分块计算法则的c语言源代码见附录A。6.6.4生成纠错码字构造数据码字多项式,多项式系数是数据码字,第一个数据码字为最高次项的系数,依次排列,最后一个数据码字是最低次项(常数项)的系数。设^是纠错码宇的个数,则纠错码字多项式是数据码字多项式乘以≯再除以纠错生成多项式得到的余式。其中余式的最高次项的系数为第一个纠错码字,最低次项的系数为最后一个纠错码字。GM码生成女个纠错码字的生成多项式G(z)见式(9)。G(z)=(工一口1)(z—a2)⋯(z一矿)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(9)16 GB/T27766--2011式中:G(z)——纠错生成多项式;口——有限域GF(27)的生成元;^——要生成的纠错码字个数。计算生成多项式系数的c语言源代码见附录D。纠错码字的生成可用图6的电路实现。寄存器ao到a。的初始值为0,g。到g。为生成多项式由低次到高次的系数。编码分两个阶段完成:a)第一阶段两个开关的位置都向下,n个时钟脉冲后结柬,输入的数据码字被直接导向输出,同时寄存器a。到钆一,的值都被更新。这里n是数据码字的个数。b)第二阶段两个开关的位置都向上,输入保持为零,^个脉冲后寄存器的值被顺序移位输出,从而生成^个纠错码字。说明;o~GF(2碌法。一GF(27)加法6.7生成最终码字流6.7.1生成数据码字图6纠错编码电路编码输人数据生成二进制的位流。将二进制位流分成7位一组即生成数据码字流,位流分组中的第一个位对应于码字的最高位。最后一个码字不足7位时,低位以“0”填充,这样处理后的结果就是数据码字流。6.7.2确定GM码的各项参数6.7.2.1确定GM码版本选择可接受的最小纠错等级R。,计算所需的最小码字数cm.。见式(10)。C~=(10×D)/(10一R一)(向上舍人)⋯⋯⋯⋯式中:D——由6.7.1得到的数据码字数量。查表l选择可以编码C。的对应版本。6.7.2.2确定GM码的实际纠错等级版本V的GM码码字容量c是GM码宏模块数量的两倍,见式(11),0●"( GB/T27766--2011C=2×(2×V+1)2对于确定的版本y,使用的纠错等级R见式(12)。R=E(C—D)×10]DIVC⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(12)当算出的R大于5时,R即为最大值5。6.7.2.3计算填充码字纠错等级为R,纠错码字数E见式(7)。需要加到数据码宇流后的填充码字数P见式(13)。P=C—E—D⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(13)6.7.3纠错块的交错排列当GM码包括不止一个纠错块时,应对纠错块进行交错排列,规则如下:a)从码字流的第一个块的第一个码字开始提取,然后是第二块的第一个码字,直到最后一个块的第一个码字;b)继续提取第一个块的第二个码字,然后是第二块的第二个码字,⋯⋯,直到最后一个块的第二个码字;c)继续提取直到码字流中所有码字被提取完。6.8码字在符号中的排列码字流按照固定的路径填充到宏模块中,每个宏模块先填充第1码字,然后填充第2码字。以GM码的中心宏模块为起点,按顺时针螺旋式依次填充所有宏模块,见图7。HL廿1--}1·。}倒印甲U臼审臼门口宙曰几1eIn囱R120}1-。I{·a}问图7版本2的GM码的码字填充顺序示意围图7所示为版本2的GM码码字填充顺序,从1号宏模块开始,到25号宏模块结束。l号宏模块位于GM码的正中心,2号宏模块在1号宏模块的上方。对于版本3或者更高版本的GM码,接下来的宏模块(26)填充在25上面,依次不断填充,直到GM码所有层填充完毕。6.9编码示例6.9.1数据分析本示例使用推荐的纠错等级编码数据“GridMatrix”生成GM码。根据附录B的选择方法,用数字字母混合模式编码开头6个字符(“GridM”),用小写字母模式编码后续的5个字符。18 6.9.2数据编码编码顺序如下:a)(0101)ⅢN表示数字字母混合模式b)“GridM”编码见表11;表11数据编码GB/T27766--2011字符Gd。空格”M十进制值165344396222l二进制值010000110101101100100111111110010110c)(1lllll0011)Bm(十进制1011)转换编码模式到小写字符d)“atrix”编码见表12;衰12数据编码字符xI十进制值O1917823=进制值00000100111000l0100010111e)(11011)mw(十进制27)表示数据编码结束。编码得到的二进制位流是:(中间空格仅用于方便阅读)01010100001101011011001001111111100101101111110011000001001110001010001011111011分成7位一组的码字后需要4个填充位(圆括号中所示)来填充最后一个码字。01010100001101011011001001111111100101101111110011000001001110001010001011111011(0000)该数据共12个码字。6.9.3确定GM码版本查表10,确定用版本2的GM码编码以上数据(推荐最小纠错等级为4)。由式(11)计算得到版本2的符号容量为:C一2(2V+1)2—2×(2×2+1)。一50。由式(12)计算使用的纠错等级为:R=10(C--D)DIVC=10(50一12)DIV50=7。R>5,应采用5级纠错。由式(7)得出纠错码字的数量为:E=(CXR)DIV10=(50×5)DIV10=25。由式(13)得出填充码字数量为:P—c—E—D=50--25--12—13,紧接在数据后的填充码字为:(0000000)Bm(1111110)BⅣ(0000000)BⅢ(1111110)mN..·(0000000)BⅢ(1111110)BlN(0000000)Bm。6.9.4生成纠错码字十进制的数据码字加上填充码字是:421354391249112165284095480126012601260125012601260相应的25个纠错码字是:123472205411235231008955171014143348629852279927010219 所有码字以二进制表示为:25个数据和填充码宇010101000011010110110010011llllll001011011IIll00li000001001i1000101000i01111101100000000000】111i10000000011111100000000111111000000001111i100000000】11111000000001IIlll00000000加上25个纠错码字iilioil010111100000i000101000110Ii0111000001000lI00ioill1100i00i01100101101110010001li001010000100000111001000010i100000111li0i1000100i101000000010100iiil10111001000i10i100110图9版本2纠错等级5的层标识号696数据码字的排列向宏模块中填人码字的顺序是从中心向外顺时针排列.见圈7。囝lo显示的是排列的头几步20 a)b)c)d)GB/T27766—-2011第一个码字(OlOlOlO)Brs填在中心深色边宏模块的第l码字(b。~b。)位置上第二个码字(0001101)m一填在同一个宏模块的第2码字(b,。~b,)位置上;第三个码字(0110110)Bm填在中间靠上的浅色边宏模块的第1码字位置上第四个码字填在同一个宏模块的第2码字位置上,后续的码字以此顺序依次排列。图10头几个码宇在GM码中的排列图11展示了在GM码中填人码字的过程。填入码字的过程如左图所示:12个数据码字以螺旋排列的顺序填到头6个宏模块中;其后13个填充码字填入到接下来的6巧个宏模块中,在GM码的右上角宏模块的第l码字位置结束;纠错码字从该宏模块的第2码字位置开始填人,在图中仅显示了一部分。填充完毕后,生成了右图。7符号印制7.1尺寸图11编码了数据“GridMatrix”的GM码GM码符号尺寸的确定:x尺寸:单元模块宽度根据应用要求、采用的扫描技术以及符号生成技术来确定。y尺寸:单元模块高度应与单元模块宽度相等。最小空白区:在GM码符号周围的空白区宽度尺寸为6X。 GB/T27766--20117.2供人识读字符GM码可以编码数百个字符,可用描述性的文本而不是全部数据原文与GM码符号同时印制在一起。字符尺寸与字体不作具体规定,可印制在GM码周围的任意区域,但不能影响GM码符号本身及空白区。7.3符号制作指南可用多种不同的技术制作GM码符号,参见附录c。8符号质量8.1符号质量评级GM码符号采用GB/T23704中规定的矩阵式二维条码印制质量测试导则进行质量评级。评级参数包括符号译码、符号反差、调制比、轴向不一致性、网格不一致性、未使用的纠错以及固有图形污损,其中固有图形污损的质量评级方法见8.2。一次扫描获得的符号译码、符号反差、调制比、轴向不一致性、网格不一致性、未使用的纠错以及固有图形污损各参数等级的最低值为单次扫描等级。符号等级为从不同角度进行的5次扫描获得的单次扫描等级的算术平均值。两次扫描译码获得的数据不同时,符号等级为0。符号等级按质量高低以4.o~1.0的数字形式表示,小数点后应保留一位。8.2固有图形污掼质量等级8.2.1需评估的固有图形GM码需要评级的固有图形包括(见图12)a)空白区;b)层标识号区域;c)宏模块边框。说明:A——空白区;B——层标识号区域C——宏横块边框。图12版本1的GM码的固有图形C GB/T27766--2011固有图形污损的质量等级为空白区、层标识号区域和宏模块边框三个质量等级的最低值。8.2.2空白区质量评级空白区环绕在GM码周围,为6个单元模块宽且空白区单元模块均为浅色。空白区内单元模块数量为144+144(2V+1),其中V是GM码的版本。将译码过程中建立的采样网格延拓到空白区,在空白区内统计深色单元模块的数量,求出空白区内深色单元模块占空白区总单元模块数的百分比,评级规则见表13。8.2.3宏模块边框质量评级每个宏模块均有一个边框,每个边框有20个单元模块,当其中任何一个单元模块颜色读取错误时,该边框被视为错误边框,统计错误边框数量,根据错误边框数占总边框数的百分比对边框区域进行评级,见表13。8.2.4层标识号区域质量评级每个宏模块有两个层标识号单元模块,GM码中层标识号单元模块总数为2(2V+1)2,其中y为版本。统计层标识号单元模块错误的数量,根据错误的层标识号单元模块数占总层标识号单元模块数量的百分比确定质量等级,见表13。衰13固定区域损失的评级阈值空白区宏模块边框层标识号等级错误单元模块比率错误边框比率错误单元模块比率O%o%0%4≤10%≤5%≤3%3≤20“≤10%≤7%2≤30%≤15%≤11“1>3G%>15%>11%09译码过程9.1概述GM码的译码过程如下:a)灰阶图像二值化抓取的图像通常是灰阶图像。使用附录E.1中的二值化算法将灰阶图像转化为二值图像。以下的步骤均是在二值图像上实施的。b)获取边界图像及连通分支称二值图像中的一个像素点为边界点是指该像素点本身为白色且其周围的4个像素至少有一个为黑色。由二值图像的所有边界点组成的图像称为其边界图像。分别提取边界图像的所有连通分支(8连通),从边界图像中删去尺寸小的连通分支。c)估计GM码的水平斜率和竖直斜率根据边界图像估计GM码的水平斜率和竖直斜率。d)估计宏模块的面积23 GB/T27766--2011根据边界图像分别估计宏模块的宽度和高度,从而得到宏模块的面积。从边界图像删去所有面积小于该估计面积值70%的连通分支,得到的图像称为框架图像。e)计算宏模块的中心根据框架图像和GM码的水平斜率和竖直斜率计算所有宏模块的中心。f)计算宏模块的顶点对邻近的宏模块中心插值可以计算得到宏模块的顶点。g)数据采样根据宏模块的顶点计算采样网格。黑色像素表示二进制的“1”,白色像素表示二进制的⋯0。h)推导GM码的方向、中心宏模块和纠错等级根据层标识号可以推导得到GM码的方向、中心宏模块和纠错等级。i)还原GM码码字并纠错根据码字排列规则得到GM码码字,进行纠错后得到原始信息的编码位流。j)编码位流解码根据6.3、6.4和6.5定义的编码方法对编码位流进行解码。9.2参考译码算法GM码的参考译码算法参见附录E。10数据传输10.1符号标识符ISO/IEC15424提供了一个标准的程序,根据译码器的设置和GM码的自身特性报告被读取的码制。一旦数据结构(包括使用的ECI模式)被识别,译码器将适当的符号标识符作为一个段首标记追加到被传输的数据上。GM码使用了ECI模式或FNCl功能码时,符号标识符应被传输。GM码的符号标识符是“]gm”,其中:a)]是符号标识符(GB/T1988值为93);b)g是GM码的编码字符;c)m是变数值,取值为表14中的某一值。裹14符号标识符与变数值变数值含义0未使用ECI协议1已使用ECI协议2未使用ECI协议,FNCl用于指示GSI应用3已使用ECI协议,FNCl用于指示GSl应用4未使用ECI协议,FNCl用于指示AIM应用5已使用ECI协议,FNCl用于指示AIM应用10.2扩展信道解释在支持ECI协议的系统中,每一传输都要求传输符号标识符。当遇到ECI模式指示符时,它应作24 GB/T27766--2011为转义字符“¨(GB/T1988中值92)被传输。根据表7定义的规则,将紧跟在ECI模式指示符后的11、17或22位转化为6位数字,这些数字将按其GB/T1988值进行传输(48到57)。应用软件识别到\nnnnnn之后,将所有后续字符解释为来自6位数字的指示符定义的ECI。该解释一直有效直至数据结束或遇到另一个ECI指示符。当字符“\”需要作为被编码的数据时,应按如下方式进行传输:每当字符“\”作为数据出现,应传输两个该值的字节,因此每当单个值出现,总是一个转义字符,连续两次出现她表示真正的数据。示倒:被编码的数据:按ECI123456规则编码Ak\B\C被传输的数据:]91\123456Ak\\\B\\c注:除非GM码确实使用了ECI模式指示符,符号标识符]gl,]93,]95不应被传输,并且反斜杠字符“\”不应被传输两次。10.3FNcl功能码没有对应的字节值,不能被直接传输,应通过相关的符号标识符(]92,]93,]94,]95)指示功能码FNCI被使用的情形(见10.1)。10.4FNC2功能码FNC2用于结构链接,译码器在传输前将数据文件重新链接,不传输结构链接头。如果结构链接中任一GM码读取失败,译码器不传输任何数据。10.5FNC3功能码FNC3甩于指示识读器将该GM码中的数据作为初始化参数,这些数据不应被传输。识读器可以根据GM码中的数据进行初始化。 GB/T27766--2011附录A(规范性附录)码字分块参数C语言源代码6.6.3定义的码字分块参数的c语言源代码如下:|*功能:为指定版本和纠错等级的铡码计算码字分块参数输入:铡码的版本和纠错等级输出:分块结果码字个数为B1的块有Nl块,码字个数为B2的块有N2块前B3块每块纠错码字E1个,后B4块每块纠错码字E2个*f#defineN127intBI,N1,B2,N2;intB3,E1,B4,E4;voidrs-block(intV,/*翩码的版本,1—13*/intR)/*纠错等级,1—5*/{intc;/*例码的总码字数*/int8;/*纠错码字数*/intB,/*总分块数*/c=(2*v+1)*(2*V+1)*2;B=(c+N—1)/N;if(0;=C%B)fB1=B;N1=C/B;B2=0;N2=0;)else(NI=C/B+l;N2=NI一1:BI=C—B*N2:B2=B—B1;)E=(int)(C*0.1*R);if(0==E%B){B3=B;E1=E/B:B4=0:E2=0;)else{El=E/B+1;26 E2=E1—1:B3=E—B*E2:B4=B—B3:return2表A.1列出了所有版本和纠错等级的GM码的分块参数。表A.1GM码分块参数GB/T27766--2011分块参数版本纠错等级码宇总数数据码字数N1B1N2B2E1B3E21341N/A21815181O310l31813181O05104181118107105189181O910150455010O510O250405010101023503550101510450305010O201055025501O251O019889981O091029879981O191O398699810291049859981O03910598499810491O011621468120O82021621308120O1620431621148120O2420O4162988l20322051628120O4114012422181212O01220O224219412l2O2420O5324217012120O3620O42421461212O4820524212120O6l1601 GB/T27766--201表A.1(续)分块参数版本纠错等级码字总数数据码字数N1B1N2B2E1B3E2B413383051132112111302338271113211212312226333823711321121342331433820311321121453O5338169113211215715621450405113ZIlZ212IlI32450360113211222322227345031511321122343331445027011321122454O0545022511321122571563157852111631152122ll3257846311631152235O0835784051163115235334245783471】631】5247l464557828911631152584571722650121Z12041260O272257812121204246O9372250612121204366O0472243412121204486057223611212120461160518827941267O013412328827061267O02612561038826181267038537248825301267O0512505S88244112670O637O1058953118511741261132105884711851174244235113105874l1185117436235741058635118511744790510585291185117459758228 表A.1(续)GB/T27766—2011分块参数版本纠错等级码字总数数据码字数N1B1N2B2E1133E213412501125125lo0135125212501ooo125lOOo25lOO1231250875125lOO38537541250750125lOoO50lOo051250625125100o63562514581313122612161311211214581167122612162532491331458102112261216375367414588751226121649748514587291226121661960329 GB/T27766--2011B.1GM码编码数据类型的分析B.1.1按数据类型分段附录B(资料性附录)位流长度的优化GM码总共有6种基本的数据类型:汉字、数字、小写字母、大写字母、控制字符、字节。首先将需要编码的数据按这6种基本的数据类型进行分段。将输人数据看作字节流,按以下步骤,给每个字节赋予一个类型,连续的相同的数据类型被归为一个数据段。a)遍历字节流,若任意两个连续的字节可以组成一个GB18030双字节1区及双字节2区的字符,则将这两个字节归为汉字类型。对一个或多个连续的“回车换行”字符,如果它们前面的两字节或后面的两字节为汉字类型,则将它们归为汉字类型,否则它们的类型是未定的。若数字对(“oo”到“99”)的前两个字节及后两个字节均为汉字类型,则将该数字对归为汉字类型。b)从“a”到“z”的所有字节归为小写字母类型。c)从“A”到“z”的所有字节归为大写字母类型。d)对一个或多个连续的空格,它们的类型根据这些空格前面的数据类型或后面的数据类型确定:1)若这些空格前面的数据类型是小写字母类型或大写字母类型,则将这些空格归为其前面的数据类型,否则转2);2)若这些空格后面的数据类型是小写字母类型或大写字母类型,则将这些空格归为其后面的数据类型,否则转3);3)这些空格的类型是未定的。e)从“0”到“9”的所有字节归为数字类型。满足6.4.2规定的可以归人数字类型的“空格”、“+”、“一”、“.”、。,”、“回车换行”也同时归为数字类型。f)剩下的所有未归类的字节被归为字节类型。但如果某一段字节类型满足以下所有条件,则该段数据被归为控制字符类型:1)该段数据不是第一个数据段;2)该段数据内的所有字符都是控制字符(见表6);3)该段数据的长度不超过3字节;4)该段数据的前一数据段不是汉字类型。B.1.2数据类型调整根据一个数据段及其邻近数据段编码的位流长度,对一个数据段的类型进行调整。调整的规则为:根据连续的3(或4)个数据段,对所有可能的调整方案计算编码位流的长度,取其中位流最短的方案。调整从第一个数据段开始直至最后一个数据段结束:a)对第一个数据段,考虑它和其后的两个数据段,对所有可能的调整方案计算编码位流的长度,根据位流最短的方案确定第一个数据段的编码类型。b)从第二个数据段开始,考虑4个数据段(前一数据段,当前数据段,其后的两个数据段),前一数据段的编码类型固定,对当前数据段和其后的两个数据段,计算所有可能的调整方案的编码位流长度,根据位流最短的方案确定当前数据段的编码类型。直至最后的三个数据段。30 GB/T27766--2011c)最后三个数据段的编码类型由最后4段数据的位流最短的调整方案确定。如果有几种调整方案得到的编码位流长度是一样的,则根据以下规则选取当前数据段的编码类型:1)若存在一种方案保持当前段数据类型不变,则保持数据段的初始类型不变;2)若几种调整方案当前段数据类型均变化,则根据以下优先级选取当前数据段的编码类型:数字>小写字母>大写字母>数字字母混合>控制字符>字节>汉字。表B.1列出了每一种数据类型允许的编码类型。若数字类型被调整为数字字母混合类型,则数字类型中的非数字字符被调整为控制字符。裹B.1各数据类型可能的编码类型原数据类型可能的编码类型汉字字节数字数字字母混合数字字节汉字小写字母数字字母混合小写字母字节汉字大写字母数字字母混合大写字母字节汉字控制字符字节汉字字节汉字B.2编码数据类型分析的例子以下给出一个编码数据类型分析的例子。输入数据:国外通信教材Matlab6.5输人数据首先被分为4段,见表B.2。表B.2根据数据类型分段国外通信教材(空格)Matlab6.5汉字大写字母小写字母数字 GB/T27766—201对开头的3个数据段(6个汉字、2个大写字母、5个小写字母),表B.3列出了所有可能的调整方案及其编码位流的长度:衰B.3编码位流长度的计算可能的编码方案位流长度计算结果当前段其后第一段其后第二段汉字大写字母小写字母413X6135×255×5135汉字大写字母混合413×6135×276×5142汉字大写字母字节413X6135×279+8x5161汉字大写字母汉字413×6135×2513×5175汉字混合小写字母413×6136×2lO5×5142汉字混合413×6136×206×5137汉字混合字节413x6136×2109+8x5166汉字混合汉字413×6136X2lO13X5182汉字字节小写字母413×6139+8x245×5149汉字字节混合413×6139+8×246×5154汉字字节413×6139+8x2O8×5160汉字字节汉字413×6139+8x2413X5189汉字小写字母413×6013×2135×5146汉字混合413×6O13×2136×5151汉字字节413×6O13×2139+8x5170汉字413×6O13×2O13×5173字节大写字母小写字母49+16x645X255x5153字节大写字母混合49+16×645x276x5160字节大写字母字节49+16x645×279+8x5179字节大写字母汉字49上16x645×2513×5193字节混合小写字母49+16×646×2105×5160字节混合49+16x646×2O6x5155字节混合字节49+16x646×2109+8x5184字节混合汉字49+16x646×2lO13×5200字节小写字母49上16x608×245×5154字节混合49+16×608×246×5159字节49+16X608×2O8×5165字节汉字49+16x6O8×2413×5194字节汉字小写字母49+16x6413×2135×5177字节汉字混合49+16×6413XZ136×5182字节汉字字节49+16×6413×2139+8×520l字节汉字49+16x6413×Z013×S20432 GB/lr27766—2011从表B.3可以看出,编码方案汉字、大写字母、小写字母需要的位流最短,故第一段数据(6个汉字)使用汉字类型进行编码。为了得到第二个数据段的编码类型,固定其前一数据段(第一段)为汉字类型,计算当前段(第二段)和其后两个数据段(第三、四段)所有可能的调整方案的编码位流长度,计算结果列于表B.4。表13,4位流长度计算可能的编码方案位流长度计算结果当前段其后第一段其后第二段大写字母小写字母数字135×255×552+10+101090大写字母小写字母混合135×255×576×2+161098大写字母小写字母字节135×255×579+8×3497大写字母小写字母汉字135×255×5513×3i3110大写字母混合数字135×276×5102+10+1010102大写字母混合135×Z76X5O6×2+161098大写字母混台字节13,5×Z76×5109+8×34107大写字母混合汉字135×276×51013×313122大写字母字节数字135×279+8X542+10+?tOlO115大写字母字节混合135×279+8×546×2+1610121大写字母字节135×279+8×509+8X34116大写字母字节汉字135×279+8×5413×313135大写字母汉字数字135×2513×5132+10+1010138大写字母汉字混合135X2513×5136X2+1610144大写字母汉字字节135×2513×5139+8X34143大写字母汉字135×2513X5O13×313145混合小写字母数字136×2105×552+10+101097混合小写字母混合136×2105×576X2+1610105混合小写字母字节136×2105×579+8X34104混合小写字母汉字136×2105×5513×313117混合数字136×206×5102+10+101097混合136X206×506×2+161093混合字节136X206×5109+8×34102混合汉字136×206×51013×313117混合字节数字136×2109+8×542+10+1010120混合字节混合136×2IO9+8X546X2+16IO126混合字节136X2109+8×509+8×34121混合字节汉字136×2109+8×5413×313140混合汉字数字136X21013×5132+10+1010145弦舍汉字混合136×21013X5136X2+16lO151混合汉字字节136X21013×5139+8X3415033 GB/T27766m201表B.4(续)可能的编码方案位流长度计算结果当前段其后第一段其后第二段混合汉字136X2lO13×5013×3131S2字节小写字母数字139+8×245×552+10+10lO104字节小写字母混合139+8×245×576×2+1610112字节小写字母字节139+8×245×579+8×34111字节小写字母汉字139+8×245×5513×313124字节混合数字139+8×246×5102+lo+lO10114字节混合混舍139+8×246×506X0+1610llO字节混合字节139+8×246×5109+8×34119字节混合汉字139+8×246×5lO13×313134字节数字139+8X209+8×542+10+1010123字节混合139+8×209+8×546×2+1610129字节139+8×2O9+8×5O9+8×34124字节汉字139+8×2O9+8×5413×313143字节汉字数字139+8×2413×5132+10+lOlO152字节汉字混合139+8×2413×5136×2+16lo158字节汉字字节139+8×2413×5139+8×34157字节汉字139+8×2413×5O13×313159汉字小写字母数字013×2135X552+lO+lO10lOl汉字小写字母混合013×2135×576×2+16lO109汉字小写字母字节013×2135×579+8x34108汉字小写字母汉字O13×2135×5513X3】3121汉字混合数字013×Z136×5lO2+10+1010111汉字混合O13×2136×506×2+16lO107汉字混合字节013×2136×5lO9+8X34116汉字混合汉字013×2136×5lO13×313131汉字字节数字O13×Z139+8X542+Io+IO10124汉字字节混合013×2139+8×546×2+16lo130汉字字节013×2139+8×5O9上8x34125汉字字节汉字O13×2139+8X5413X313144汉字数字013×2013×5132+10+1010136汉字混合O13×2013×5136x2+16lO142汉字字节013×2O13×5139+8x34141汉字013×Z013×5013×313143 GB/T27766--2011从表B.4可以看出,编码方案大写字母、小写字母、数字需要的位流最短,故当前段(第二段数据、(空格>M)使用大写字母进行编码。因为这是最后的三个数据段,故第三数据段和第四数据段分别使用小写字母、数字进行编码。最终的编码类型为:汉字、大写字母、小写字母、数字。B.3GM码编码的例子以下是一个GM码编码的示例。输人数据:AAT2556电池充电器+降压转换器200mA至2Atel:8601082512738。将输人数据分为12段并根据B.I的规则对各数据段类型进行调整后结果见表B.5。表B.5各数据段类型编码数据段字符初始数据类型编码数据类型1AAT大写字母混合22556。空格”数字混合3电池充电器+降压转换器汉字4“空格”200数字混合5小写字母混合6A大写字母混合7至汉字82数字混合9A“空格”大写字母混合iotel小写字母1l控制字符1286“空格”OlO“空格”82512738数字第1段数据的编码模式为数字字母混合,首先输出数字字母混合模式指示符“0101”,其后是第1段数据编码结果,见表B.6。衰B.6第1段数据编码第1段数据编码的十进制值编码的二进制值AIo00lOlOAIO0010lOT29011IOI第2段数据的编码模式与第1段相同,故不需要模式转换码,编码结果见表B.7。表B.7第2段数据编码I第2段数据编码的十进制值编码的二进制值I2o00010I5000101 GB/T27766--2011表B.7(续)第2段数据编码的十进制值编码的二进制值50001016000110。空格”62111110第3段数据的编码模式为汉字,首先输出数字字母混合模式到汉字模式的模式转换码“1111110001”,其后是第3段数据的编码结果,见表B.8。表B.8第3段数据编码第3段数据编码的十进制值编码的二进制值电1415001011000011I池12080010010111000充1220001001i000100电14150010110000111器30630101111110111+2030000011001011降2133010000i010101压40570111111011001转46181001000001010换1947001111001101I器30630i0111i110111第4段数据的编码模式为数字字母混合,首先输出汉字模式到数字字母混合模式的模式转换码“1111111100100”,其后是第4段数据编码结果,见表B.9。袭B.9第4段数据编码第4殷数据编码的十进制值编码的二进制值“空格”62111110Z200001000000000O000000第5段数据的编码模式与第4段相同,故不需要模式转换码,编码结果见表&lo。表B.10第5段数据编码第5段数据编码的十进制值编码的二进制值m48110000 GB/T27766--201第6段数据的编码模式与第5段相同,故不需要模式转换码,编码结果见表B.11。表B.11第6段数据编码第7段数据的编码模式为汉字,首先输出数字字母混合模式到汉字模式的模式转换码“1111110001”,其后是第7段数据编码结果,编码结果见表B.12。表B.12第7段数据编码第7段数据编码的十进制值编码的二进制值至45451000111000001第8段数据的编码模式为数字字母混合,首先输出汉字模式到数字字母混合模式的模式转换码“1111111100100”,其后是第8段数据编码结果,编码结果见表B.13。表B.13第8段数据编码I第8段数据编码的十进制值编码的二进制值2000010I第9段数据的编码模式与第8段相同,故不需要模式转换码,编码结果见表B.14。表B.14第9段数据编码第9段数据编码的十进制值编码的二进制值A10001010“空格”62111110第10段数据的编码模式为小写字母,首先输出数字字母混合模式到小写字母模式的模式转换码“1111110011”,其后是第10段数据编码结果,编码结果见表B.15。表B.15第10段数据编码第10段数据编码的十进制值编码的二进制值1910011400100l1101011第11段数据的编码模式为控制字符,首先输出小写字母模式到控制字符模式的模式转换码(shift)“1111101”,其后是第11段数据编码结果,编码结果见表B.16。表B.16第11段数据编码第11段数据编码的十进制值编码的二进制值:47101111 GB/T27766--201第12段数据的编码模式为数字,首先输出控制字符模式到数字的模式转换码“11101”,其后是第12段数据编码结果,编码结果见表B.17。表B.17第12段数据编码第12段数据编码的十进制值编码的二进制值计数(填充数字的个数)21086“空格”o10028601111101010110101110010“空格”8100210811111010100001101]000251Z51001111101l27301000i00018001100100000编码位流的结尾是从数字模式转换到结束的转换码:1111111010。最终的编码位流为(以下空格是为了便于阅读,并非位流的数据):0101001010011i0100001000010100011011111011111100010010110000111001001011i00000100110001000010110000111010111111011100000110010110100001010101011111101100110010000010100011110011011010111111011l11111111001001111100000100000001i0000001010111111000110001110000011111111100100000010001010111110111111001110011001000101111111011011111110110111110101011010111001111101010000110011000011111011010001000111001000001111111010将位流每7位一组分割成码字(总共62个码字),这些码字的十进制值如下:41347866i0205511198442875652466971071236575334212610232811155312512711462406295702815124646962126577295109126111858731405415901710015116指定使用的纠错等级为3级,故要求总码字数至少为89个(89×(1--30%)=62.3),从而需要使用版本3的GM码(总码字数为(3×2+1)×(3×2+1)×2—98)。版本3纠错3级的GM码可以容纳69个数据码字,故需要7个填充码字,这7个填充码字为:0,126,0,126,0,126,0。接下来需要生成纠错码字。GM码使用Reed-Solomon纠错码,使用由本原多项式z7+一+1定义的有限域GF(27)。生成的纠错码字如下:10575256718583810545773822117968477915248670896087305311817最终的码字流如下;4134786610205511198442875652466971071236575334212610232811155312512711462406295702815124646962126577295109126111858731405415901710015116012601260126010575256718583810545773822117968477915248670896087305311817图B.1显示了最终的编码结果:编码数据为“AAT2556电池充电器+降压转换器200mA至2A38 tel:8601082512738”的3级纠错的GM码圈B.1GM码圈GB/T27766--2011 GB/T27766--2011C.1总则附录C(资料性附录)GM码印制的用户导则应将GM码的应用看作整个系统的解决方案。组成系统的各个部分(打印机、标签、识读器)需要作为一个整体来考虑,在该系统的任一环节出现问题,或各环节之间的错误匹配将损害整个系统的运行效果。符合标准要求是保证整个系统成功的关键之一,同时其他因素也会影响系统的运行。以下导则是建议在确定或者采用GM码时应考虑的一些因素。——选择适当的印制密度,使符号的允许偏差是所使用的印制技术能达到的。保证模块尺寸是打印头分辨率的整数倍(在平行和垂直于印刷方向的两个方向),也要保证印制增量的调整,这种调整是通过单个深色模块或毗连的深色模块组边缘(由深色到浅色或由浅色到深色)改变等量的整数像素来实现的,这样可以保证模块中心的间距保持不变,虽然对每个深色(或浅色)模块的位图表示的尺寸进行了调整。——选择识读器,其分辨率应与特定印制技术所生成的符号密度和质景相适应。——保证印制的GM码的光学特性与扫描器光源的波长或传感器的感光特性相适应。——检查在最终标签或外包装上的GM码是否合格。遮盖、透光、弯由或不规则表面都会影响GM码的识读性能。——应考虑光滑的符号表面产生的镜面反射。扫描系统应考虑在深色与浅色特性之间的漫反射的改变量。在某些扫描角度,反射光的镜面反射部分大大地超过希望的漫反射部分,从而改变了扫描特性。如果能改变材料表面或材料表面的某部分,那么,选择粗糙的、非光滑的表面有助于减小镜面效果。否则,应保证识读符号的照明使所希望的对比度达到最佳。C.2纠错等级的用户选择纠错等级的选择与下列因素相关:——预计的GM码质量水平:预计的GM码质量等级越低,应用的纠错等级就应越高;——潜在的GM码损毁可能性:潜在的GM码损毁可能性越高,应用的纠错等级就应越高;——印刷GM码的空间限制了使用较高的纠错等级。纠错等级1、2适用于具有高质量的GM码以及/或者要求使GM码的尺寸尽可能小的情况。等级3、4的GM码具有适中的尺寸和较好的可靠性。等级5适用于一些重要的或GM码印制质量差的场合。对版本1的GM码,推荐使用5级纠错,对版本2、3的GM码,使用4级以上的纠错,对其他版本的GM码,使用3级以上的纠错。注意:GM码的编码过程会自动提高纠错等级以充分利用GM码的码字容量。需要注意的是,当GM码的质量降低到一定程度后,即使提高纠错等级也无法提高GM码的识读可靠性。建议GM码印制后测试GM码的剩余纠错能力,根据测试结果调整纠错等级以使剩余纠错能力处于一个适中的水平,这样可以在保证可靠性的前提下使得GM码的尺寸达到最小。用户应确定合适的纠错等级来满足应用需求。从1级到5级的纠错码字占GM码容量的百分比逐40 GB/T27766--201I渐增加,相应的纠错性能也逐步提高,其代价是对表示给定长度数据的GM码的尺寸逐步增加。表C.1~表C.4列出了各版本和纠错等级的GM码编码各种数据类型时的编码容量。裹C.1GM码容量裹(字节)GM码版本1级纠错的容量2级纠错的容量3级纠错的容量4级纠错的容量5级纠错的容量1119752373228241937557584940412511197836851881671461251036264235205175145735231227323419484534033523012509565503440377313lO69161453746138311830737644551460129808717616525431311431017889761634表C.2GM码容量表(数字)GM码版本1级纠错的容量2级纠错的容量3级纠错的容量4级纠错的容量5级纠错的容量124211812287786657453180159138117964300267234201165545340235130024966335644924203487843750654561465810899668437236009135912091056906753101662147"512931107921111995177315511326110412235520941830156913051327512445213918301524 GB/T27766--2011表C.3GM码容量表(GB18030双字节1区或双字节2区内的字符)GM码版本1级纠错的容量2级纠错的容量3级纠错的容量4级纠错的容量5级纠错的容量16543222201714123464l3530254776860514251161039077636162144126108897216192168144119827924.82161851549348309271232193lO426378331284236115114543973402831260453746940233513705627548469391表C.4GM码窖量表(字母)GM码版本1级纠错的容量2级纠错的容量3级纠错的容量4级纠错的容量5级纠错的容量1191613lo261544740333]22]089480664202180157135111530326923620216764253773302822347565502439376313872764656548440299088077066055031011099868637406151113321]8410358877381215731398】22310488731318361632142712231018 附录D(规范性附录)纠错生成多项式GB/T27766--2011以下c语言源代码用于计算GM码纠错生成多项式的系数://powertableforGF(2‘7)constunsignedcharpow_tab[]={/*forr7+33+l*/1,2,4,8,16,32,64,9,18,36,72,25,50,i00,65,11,22,44,88,57,114,109,83,47,94,53,106,93,51,102,69,3,6,12,24,48,96,73,27,54,108,81,43,86,37,74,29,58,116,97,75,31,62,124,113,107,95,55,ii0,85,35,70,5,i0,20,40,80,41,82,45,90,61,122,125,115,iii,87,39,78,21,42,84,33,66,13,26,52,104,89,59,118,101,67,15,30,60,120,121,123,127,119,103,71,7,14,28,56,112,105,91,63,126,117,99,79,23,46,92,49,98,77,19,38,76,17,34,68,0);//logtableforGF(2^7)constunsignedcharlog_tab[]={/*for37+127,0,1,31,2,62,32,103,3,4,124,8,121,64,79,16,115,34,5,82,125,60,9,44,122,77,65,35,118,12,28,86,25,39,57,106,6,14,83,92,126,30,61,102,10,66,41,68,22,81,59,43,76,18,36,49。119,113,13,91,29,i01,87,107,54,20,74,48,112,90,i00,96,);//multiplicationofGF(2“7)unsignedcharprod(unsignedcharX,unsignedchary){if(x==0Y==0)return0;elsereturnpow—tab[(109-tab[x]+log_tab[y])%1273;}i*obtainingthecoefficientsofgeneratorpolynomials’parameters。g:pointertoarrayofthecoefficientsofgeneratorpolynomialstobecalculated+g[i]isthecoefficentoftermofdegreei*k:numberoferrorcorrectioncodewordstobegenerated.Itequalstothedegreeof*thegeneratorpolynomial.*|433l304659521l5791‘1i462848109l57251469107l3846727l35753703Ol92l45829095813485059/l*,35O75062l684727+鹕,u卯”"踮m卯 GB/T27766--2011voidgenerator_polynomial(unsignedchar+g,intk){inti,J;if(k<=0llk>=127)return;g[o]=1;for(i=1;i<=k;i++)g[i]=0;for(i=1;i<=k;i++)(g[i]=gEl-1];for(J=i_1;J>=1;J一一)(g[j]=g[J一1]‘prod(g[j],po._tab[i]))g[o]=prod(g[o],pow_tab[i]);表D.1给出了GM码使用的所有纠错生成多项式。表D.1纠错生成多项式纠错码字教生成多项式3一+a1“z2+口1”z+矿4一+口94一+a‘1一+一9z+alo5一十a52一+一16一+a11922+a61z+a156∥+口111一+一一+口1“一+a1322+a125z+一17一+a1”z6+口5‘z5+一一+矿一+一一+口12。工+口豹8一+口91一+a“z‘+口“z5+d‘一+a53一+一一+a118z+口”9z9+口1‘一+a7527+a74z‘+一z5+a1”一+a8。一+口1”一+口‘9z+口‘5i0zlo+一一+口Ⅲ一+口106一+口11。z6+口5525+一一+一一+一一+口51z+a5511—1+一zlo+a1。6,+一1一+a2227+a7526+a8125+d”一+口5123+口23一+一8z+口6。12z12+口125工11+d99210+口5一+口5‘一+a1。o士7+矿526+口11325+一一+口“一+一一+口63z+口"13z13+口51212+口29z“+口59210+口1”z9+a7。z8+口56,+a6325+口91矿+一1一+口m矿+一2,+口110+口91z1‘+口1”z“+口7212+一z11+口72。10+a”一+口。828+∥,+扩一+∥z5+口117一+口91一+一2一+a65z14+a105z15+一z“+口1。6z”+∥z12+口1。1211+口5。z1。+a87一+一一+口1‘27+口1“一+a98矿+一。一+口11一+15一722+a1。z+a1”z18+扩z15+一8z“+一z”+口61212+口12211+口38210+口79一+口1。一十a9‘,+口7226+一z5+az一+16口“一+口6322+口77z+口944 表D.1(续)GB/T27766—20”鍪I错码字数生成多项式217+一工1‘+口“015+一z1‘+口39z”+口53z”+口73工11+一“z1。+一5一+a“z8+口11一+口m一+口Ⅲ一+17口12。一+口125一+一一+a‘7z+一6z“+口58217+口67216+口51i”+a12121‘+口50z”+口‘z12+口38—1+一‘z1。+一829+口1。5一+口7‘z7+口。326+18a‘26一+a“一+d38一+口73一+一3z+口“z”+口”z”+口10‘z”+d”z18+口37215+a”z1‘+一z13+口11‘z”+d”一1+一z”+一z9+口“z8+a3927+19口91一十a11325+口20一+口‘5一+z2+a119z+口”—o+口“z19+口9。z18十一£17+口mzl5+a“。15+a”z1‘+口99z“+∥z12+口”一1+口7721。+a9129+口m一+20口35一+一z6+口12士5+a122一十口67一+一一+alo‘z+d“z21+a1。z”+一z19+a126218+口“z‘7+口85216+口660”+a6z“+口26213+一2212+一111+口9‘z1。+口1“z9+21一一+一z7+a38z‘+口”z5+口u0一+一723+∥,+a”z+口‘“z22+一401+口18220+口”z19+一z18+一5217+a19216+d11215+口”z14+口”z13+口123212+姑”+口19210+22口1“29+口30一+口1。327+一一+口。‘一+一o。一+口18一+口¨一十口“z+口126z23+一z22+口9‘z“+口322。+一z19+口1”z18+口6‘z17+口1221‘+口1‘一5+一2214+一1213+a89212+口1“j1123+a5721。+a10229+口”一+口1”一+口”一+口1525+口”一+口。o一十d65一+一z+一2z2‘+一z23+口02z”+口19221+口58220+口¨z19+口“z18+口126217+口日221‘+一5215+口71z“+口“z13+矿z12+24口79211+口121210+口1”z9+口55一+a1“,+口5725+一“一+口12一+口Ⅲ一+口7。一+口”z+一z25+口56工2‘+口52z”+a37z”+口112221+∥z“+口“聋19+a12‘#18+口”z17+a621‘+口。‘z15+一z14+口1“z”25+alozl2+一一‘+一2210+口9’z9+口8925+口”z7+口”#5+口1525+,。一+一一+口71,+口1。1z+口”士26+a25225+a51z“+a103z”+口99z”+口”z21+口122z”+口”工19十一6z”+一192”+一z16+口1“z15+一626工1‘+口101213+一3212+a”z11+口1”z”+口1”z9+口7‘一+a1”z7+d57一+a5225+一一+一”z3+一‘一+口95z+口97工”+a”z“+一2225+口”z2‘+口1”z”+口“22。+口72士。1+a116z”+a7721。+一1218+a82217+口z16+口1”z1527+一5z“+矿9z”+口15212+a71—1+a”z”+口20一+a1“z8+一4,+一8一+口1”z5+一12一+口77一+一z2+口5。z+口124z28+口109≯7+一9z“+扩z“+口”i“+扩2”+口15222+一z“+a15z“+口5‘z19+一z18+口“z17+口1“z1628+口’‘z‘5+口105z“+口63z”+口55z”+矿1士”+口122210+口”一+口62一+一727+口121一+a“z5+口92一+口”:3+一≯+a1。5i+护z29+a71—8+一3227+矿z“+口71225+口”z“+虹“+口mz22+a”#”+一z”+龆19+一z18+一9217+29口20216+口16215+口31z“+一z13+口1。‘z12+口”z11+一zlo+口1”一+a17一+a”一+一一+一11一+一一+口1。oz3+口”,+口95z+一z30+口”,9+口”z25+口”z孔+口”226+口12。z25+a71z“+一z23+口7222+一oz21+口“z20+口1。‘z19+口5721。+30口77217+一7216+口94士”+a”£14+口12z”+a”z12+口101211+口。121。+口99一+口”一+口125,+口9626+a”矿+口102一+口923+一2,+铲z+口“z31+口98210+口37229+口7z“+口“,’+口66,5+口u3225+口76工“+a”z23+口1。02。2+口1‘z21+一1220+口”z1931+口11721。+一z17+口Ⅲz16+口123z”+口7z“+口70z”+一z12+a“z11+a63z”+一一+一一+一一+一z5+一z5+口”一+a26一+一z2+口5‘z+口1”45 GB/T27766—2011表D.1(续)纠错码字数生成多项式z32+一3231+a1‘z3。+a9229+一17228+口52227+一z2。+口93225+∥z2‘+a87z”+一9222+口94221+一1。22032+口mz”+口1“z”+口“z17+口ulz“+口”z15+一z“+一6213+口1”z‘。+一z“+口120z”+一z9+口7628+一z7+口110z‘+口“≯+一一+口57一+口”z2+口60z+一oz”+口“z32+n97—1+a9‘z3。+口1”z29+口12‘z28+盯27+口122226+口“z25+口n5z“+口17223+a110222+一z2133+a1。4220+a79219+a”z18+a125217+a”z16+a51215+一7214+一16213+口61212+a‘3i11+口1“21。+一16一+a99一+a6‘z7+口10‘一+口7一+a17一+一一+铲一+口73z+d53z“+口1“z“+口5z”+口10‘z31+d112230+一z29+z28+a16227+口20225+一。z25+口”z2‘+一z“+口1“z22+34口”z“+口”z抑+口42:”+n49z”+口“一7+口“z“+一”工“+d埘z“+口埘z”+一z1。+一z“+口”zlo+一‘一+一,+口112一+口4一+口7325+a‘9一十口85一+矿2一+一工+口87工35+口8823‘+口39233+口u9z”+口102z“+一z”+口17z“+口mz28+一z”+口103226+口‘z25+口6722‘+口卅35z”+d”z22+口9‘一1+一6z”+口61219十口u5#18+a6217+口mzl6+一9215+a”z1‘+a53213+口51212+a‘7211+口”zlo+一z9+a109一+一1927+a5。z6+口9525+一。一+口5一+一z2+a”z+一”z”+口19235+口77z“+口“z33+d“z“+口7‘i”+口67工30+口7。z29+口“z”+一z27+口125226+一。z25+口1”z2436+口76z”+口75222+口95221+口3622。+口5821。+口“z”+∥z17+口11。z16+一9215+口9621‘+一z”+口“z”+口“z“+一。zlo+a1“一+a‘7一+一627+口326十a‘725+口”一+a‘一+一一+a”z+一z37+口1。7236+口’6235+一z“+口1“z33+口1。828+口76231+一z30+一z”+口”z”+口18z”+口mz“+一37z25+一222‘+a96223+a37—2+一z“+amz2。+口125i19+a”z”+a51i17+a1“z16+一3z“+a13z“+a“‘z”+口17212+口16z”+一7210+口1329+口112一+口1027+口”≯+口1”工5+口”一+一一十口”矿+dloz+口68—8+a”z37+a5236+一2”+a“z“+a1。9z”+口582“+a38士31+一3i30+口1722’+a91i28+一。227+a5‘z26+38一z25+a12522‘+a6223+口23222+一。z“+口9220+口123219+一z”+a117217+a13216+a35215+口‘621‘+口”z”+一3212+口11—1+口61z”+一z9+口101一+口125,+a5’z5+一矿+口1”一+口39一+矿322+口1”z+口105z”+口27238+口”。37+d58236+口11‘z35+一z34+a31工”+一1。z“+a109231+口75一。+a‘7229+a125228+口121227+口”z2‘+口96225+口722‘+a”z23+a28222+a26221+alo。z20+口126219+a“z”+“”+口1“z16+一39z15+口5。z14+一9213+一z12+口84z”+口“2”+口11429+口“z3+口11127+口“工‘+口100一+口”一+口”一+一17≯+口5z+口1。一。+一”z”+一15z”+扩。z37+一6236+一。35+一,‘+矿6—3+一7—2+一一1+一9铲+∥z”+一p+口¨一7+口B2—6+矿9—5+矿5一‘+口”一3+一“一2+∥一1+一一o+d9+一12”+一217+一321‘+一一5+40一‘z1‘+一7—3+口77212+一z11+一zlo+一一+一1一+一一+口1。7一+一8一+一o’一+一一+矿1一+口8z+一z“+一z‘o+口1“z8+口50233+一5237+a”z“+口1”z35+口111工3‘+a9z”+口”z“+a77“+amz30+口95029+a11。z28+口11227+a”z26+口36225+口’。z2‘+口“z”+一≯2+口99221+口120z”+口21219+口“z18+口”z17+41一8216+a57z”+a30工1‘+a52213+a”z”+矿z”+a。7210+一3一+一z8+一3,+口90一+口“,+口”一+一一+d1222+口”z+一z‘2+一z‘1+一z“+a73239+a”#38+口182”+一oz36+口73—5+口78z“+一z”+口111z”+∥z31+口”z”+口97229+口79228+口43227+口‘122‘+口“z25+一oz2‘+a“z”+口Ⅲ≯2+口33221+a27220+一z19+一z18+4Za1。9217+a2221‘+a‘7工15+a126工“+a”z”+口55212+口mzll+口”zlo+口”z9+矿一+一o,+一工6+一z5+口Ⅲ一十a8523+口u1一十n21z+口“ 表D.1(续)GB/T27766—2011壑I错码字数生成多项式z‘3+口“z“+口65z“+虹‘o+a29z”+一z3。+a“z37+口mz”+∥z”+口11923‘+口瑚z”+口37232+口1“z31+a‘7230+一z”+口1”z“+一z27+n85226+口7。225+一z2‘+口7‘z”+一z22+口63z”+口”一。+口52219+43一7215+一9217+一z16+口”z15+口321‘+一z”+口“工12+口118z”+a1。1一。+一z9+a12228+口1。327+一≯+口1”z5+口37一+一z3+口”一十a59z+a57z“+a1。62‘3+口1222‘2+a71—1+口17z‘。+口88239+口10238+口99237+a123z”+a1。一5+a1。1z“+口89—3+一oz”+一5z“+d“z30+口15z“+口17z。8+口1。‘z。7+口2‘z2‘+a11。z25+一z2‘+口61—3+口‘z22+口1。6221+口1“22044+:19+口”z18+口”z17+一z1‘+口76z”+一工1‘+口79213+d99。12+口76z“+一zlo+口8729+口m一+一227+扩一十a9125+a65一+口37一+一一+一z+口101z‘5+矿oz“+a96z“+一z42+虹41+a117z‘。+口3239+口6‘z38+口”z37+一1236+a”z35+奸“+a1“z33+一z32+a113231+口‘6z“+口”z2’+∥z28+口84≯7+口1“z26+a115z”+a5522‘+口‘5矿3+口88222+口124221+口1”45z20+一z19+一7218+口“z”+口“z”+一。z15+口123z“+口58213+d93212+口22211+一”zlo+a12‘29+一一+口15一十一+a”矿+一一+a”一+口23一+d1”z+口19z46+口”z45+a65z“+a70z”+一一2+护一1+口8’一o+一”z3’+一z”+口1“z37+一一‘+d115z”+矿。z3‘+一3z’3+d115z”+一z31+口7223。+口19229+a5。z28+a102227+一一‘+口“≯5+口mz“+一7z。3+一z。2+46a“z21+口”z20+a“#1’+一1工18+一7z”+一。。1‘+一z15+a”z14+口m工”+口99212+a“z11+口6521。+口2一+口128一+a10227+a12‘一+一1325+a”一+口121一+一6工2+口”z+a‘5z‘7+a59—6+口1“一5+一3一‘+口”z“+一。z“+口110241+口”z“+一8239+a110238+a‘1。37+a28z“+a61235+口101234+口12。z33+口”:“+矿3z“+口1。9z”+一8229+口52工28+d100”+a1“z“+口m≯5+口110z“+口7≯47+口”z”+d101:21+口51z”十口‘‘z19+a“4”+口‘ozl7+a1221‘+一z15+a68214+矿7z“+口105z”+口12。211+d“z1。+一矿+a70一+一z7+口‘1一+一7矿+口86一+口Ⅲ,+口12022+口1”z+口112j‘8+口82z‘7+口1“z“+一5z‘5+口”z“+口“z‘3+口15—2+一9z“+a”z4。+一z”+口¨士38+一237+口12‘z“+a”z35+口“z34+口57z”+口“z”+一3z”+一z”+口63z。9+口11。i28+口1。3227+口”z26+一z25+a“z“+48a“z23+口18222+口m221+口”220+a5‘工19+口“z”+口55217+口”z“+口117215+口7‘z1‘+a12‘213+口”z”+d5211+a11。210+一119+口7‘z3+一3一+口826+口Ⅲ一+口1。6一+口98一+a“一十口‘‘z+a33工‘9+a6z“+口58—7+a16—6+虹‘5+一01z“+口1。2z‘3+口55z“+口”z“+一z”+∥z39+口51z”+一3237+a82236+口12235+扩2z“+口1“z33+一z32+a59z“+口1”z30+一z”+z”+一z27+口117225+口”z25+口”,‘49+一z23+口91222+一2“+a16220+a121工1。+一。18+口20217+a”z16+一z15+一z14+扩z“+口”i”+d121211+口1021。+口6‘一+一z8+口‘127+口1126+口60一十口”一十口75一十一02+口38z+a82z”+d15249+一18z‘o+口”z”+一8z‘6+口96z“+a“z“+口“z“+口1“z‘2+一一1+a71z‘o+口”z39+口11。z”+口117z”+口8z“+口’z35+一8z“+一“£33+口z32+口17231+一123。+口71z”+a126228+口‘5227+一z26+口12‘50z25+a5‘z2‘+一oz23+一z22+一1—1+a92220+口”z19+口104工18+口14217+口1”z16+口”z”+口61214+一z”+口11212+一z“+口“z1。+一629+口92一+一z7+一126+一”25+a123一+口7。一+一‘一+口96z+矿?5‘+口6‘05。+一z“+扩1z“+口”z‘7+一z“+口55z‘5+口109z“+一z”+口‘6—2+a”一1+口150‘。+一oz”+a126z”+a。2237+a5423‘+口‘z35+a7023‘+口11:”+一z32+口5’z31+口3923。+口119229+i28+口1。7227+一02‘5l+口‘2225+口58一‘+一z“+一7z”+口19221+一z20+口92219+口20218+一z17+口11721‘+口922”+一521‘+口1‘;13+一7工12+口7211+口”zlo+a”z9+口26一+a55i7+一3一+一z5+口“一+口108一+酊2+一8z+口”47 GB/T27766—2011表D.1(续)纠错码字数生成多项式工52+a80一1+一1‘z5。+口28z“+口71248+口106z“+口6。z‘6+一2‘5+a1。‘z“+一z‘3+一一2+口59z“+a1。9z‘o+口52z”+口117238+一7237+口65236+a62235+口儿oz34+口34233+口84士32+口21—1+a1”z”+口9z”+口78228+52一9227+a11722‘+一2:“+口”z“+口“z”+a61222+口”z21+姑”+口2‘z1’+一‘z‘8+口31z”+口87216+口102215十a118z“+a106i”+口”。12+∥z11+口“zlo+口92一十a“z8+口”#7+口1“一+口7625+口“一+a1。4一+a1”一+扩z+am工53+a”z”+口”z51+口5625。+口1。8z‘9+a67z“+a“z47+口‘oz‘‘+一z‘5+口”z“+口126z”+一z‘2+口1”z‘1+口10‘z‘。+一z39+d15z”+衄37+一z36+口55235+口9623‘+一z33+口118z”+a“z31+一z”+口”z29+一o53z28+a73227+口100z“+口“z“+口5822‘+口”工”+a37222+a3‘z21+口2322。+口1“z19+口16218+一1217+口‘oz”+奸15+n“z“+口71z”+口10212+z11+虹1。+口73一+口112矿+口‘727+一一+口8525+口53一+a55一+口19≯+一z+一z5‘+口77253+口9。z52+口69251+一3250+口11249+a3924。+一。z‘7+一工‘6+a“z‘5+一z“+一z“+口14—2+一z41+口”z”+d65239+口23z”+a56237+口12323‘+一z35+口22z“+口“2”+口52232+a62231+一1z”+口9‘54z”+一,8+口900”+口96z“+口79225+一922‘+一8223+口73222+口90221+一z”+a17z”+口110218+口”z17+口1”z“+一z15+一5z“+一z”+口79212+口“z11+a”士10+一8j9+a33一+a11227+矿1∥+a’825+一一+口119一+矿8一+口110z+口”z55+a1”z54+a‘3253+a112z”+a102251+口1”z50+口29—9+口”z48+a‘8z‘7+口122z“+口732“+口1。o工“+口93z”+一1z“+口”z‘1+口70z‘o+a119239+口1“z38+口12237+a”z36+a572”+护z“+口121233+口1”z“+口”55z“+口mz”+一3z”+口10‘z28+一z27+口50z“+一z25+口”5224+au。j23+一z22+口12221+口“z20+口30工19+口36218+a77z”+az“+一z“+一‘士1‘+口1‘z13+口72z”+一z“+口3721。+a1529+口17一十a7‘z7+口90一+口1。9一+a21一+a67一+a7‘一+一z+口16z56+a1“z55+a8725‘+口63工53+a16252+口“工51+口8工50+口57z“+dⅢz‘8+口57z“+口119246+∥z‘5+alo。z“+一z“+d123z“+口28z‘1+口122z‘o+口91239+口78z”+口76237+口”z3‘+口‘2z”+,z3‘+d52233+口104232+56口”z”+口118230+口。7229+口17228+一z27+口105226+一3225+口78224+d”,5+口95222+一oz21+口1。7z”+口81z”+口13218+a”z17+口“z16+口7215+铲z“+口5z”+一z12+一7—1+矿2”+口12‘z9+口10‘一+一1127+一19一+口9。矿+口114一+口91一+n“z2+口9z+a72z57+一z5‘+口100255+口1”z“+a109253+口1。5252+d”i51+a”z5。+口11。z‘9+a111z“+一z‘7+一z“+一7z“+∥z“+口“z“+一“z”+一5—1+口1“z“+口60z”+一z”+口‘1237+口5223‘+a55235+口loz“+口5。一357+口82232+舻9231+口67230+一2229+a111228+a27227+一7226+一z25+a56z“+a”z”+口“z8+口1“z”+一。z2。+口73219+一z18+口1‘z”+口”z”+一z15+口3821‘+口79工”+a”z12+一z11+a12‘zlo+一一+口29一+a2827+口11526+口7125+口6一+∥一+au3一+口”z+一058+a“z57+口2‘z56+一255+a77z“+d1。7253+口‘5252+口32251+口13工50+a”z”+一z‘8+a121z”+a67z‘6+a“z‘5+一5z“+口113z“+一z‘2+a11。z‘1+口11‘o‘o+一z39+口5123。+a117237+一1236+口37z“+口123一‘58+口”z33+心32+口“z31+口31z”+口85229+口”z2。+口5227+口51z。6+口55z”+口”z“+口“z”+口mz”+一1z”+一4z。o+口3219+虹18+口6‘z17+口95215+口5。z”+一1214+矿工13+一z”+口‘ozll+口10210+一,+一09一+一。z7+a526+口12625+一8一+a5‘一十a93一+一6z+a6。z59+口”z58+口56257+口1。1256+口5255+一z54+一3253+一z5。+z“+口”z”+口”z‘9+口90z“+矿9z“+口7。z“+口“z“+口58z“+口95z‘3+口119z“+矿z“+口‘“z‘o+口75j”+口113工”+口25237+一z“+一z35+口1‘一459+口125233+口1‘9£”+口ulz“+一oz30+口70≯9+口’‘z28+口“z”+口“z“+口3。z25+一,‘+口78z“+口9‘z”+a115工21+口10220+口103z”+口57工1。+口1。7217+口16216+口”z15+一7z“+一工13+口93212+口57211+口10‘zlo+口1。z9+a”一+口”z7+口‘‘26+a27士5+口11一十a‘。一十口65一+一10z十a119 裹D.1(续)GB/1r27766--201纠错码字数生成多项式z60+口95259+口115258+一z57+口106i”+口53255+口7125‘+a55z“+口15252+矿oz51+口30.27”+口52z‘9+口”248+口Ⅲ2‘7+a78z“+口6z“+一z“+口‘1z“+口47z“+一z“+口52z”+口5‘z39+一z”+口57z”+口3sz3‘+一60z35+amz3‘+口”z”+一z32+口”z31+口“z”+口98229+姐28+扩z”+口”2j76+口74225+口”z2‘+a103223+a“z22+口9522‘+∥z20+口7‘z19+口”z18+口72z”+一9216+一2。15+口36z“+z13+一z12+口”z11+口107210+口1。129+一一+一z7+口“z‘+口5‘z5+一1一+口5623+口‘622+一z+口52z“+口72z‘o+a1。z”+aB7258+一2257+口4256+一oz55+口“z5‘+口“o”+a”z52+一。z”+口109z“+a11z“+一z“+a8。z‘7+口3z“+一一5+一一‘+a73z”+一z‘2+一z“+一z“+口1”z”+一z”+z37+一z3‘+61∥z35+口‘“z“+一z”+a”z32+a41z“+口“z30+口2229+口”z28+口67227+口Ⅲ一6+一6225+一:“+口31z“+口2222+一9工21+口10‘z”+口13219+一z‘。+一2217+口1921‘+口75z“+口9521‘+口38z”+a15z”+一211+一9210+口18≯+一2一十口11。z7+口15一+口‘105+一一+一4一+a1”工2+口123z+口mz62+口99261+口“z6。+口8259+口96258+口9‘z”+a12525‘+一z55+a“z54+口11253+口”z5。+口17251+口”z5。+口52z‘9+a1。6—8+一z‘7+口”z“+一z‘5+一z“+一15—3+口10z‘2+a71z“+a91z‘。+口19239+一z”+口”62z37+口“z36+一士35+a15i“+一z”+口69232+口”z31+口sz30+一z29+口77z”+口6z”+一10225+a”z25+a1。‘z“+口15223+一3工22+口65221+一4z”+口109219+口mz‘8+a79217+一z16+a“z”+口“z1‘+一z13+口”z”+口7—1+口11021。+一十口118z。+口“z7+a”z6+一125+一9一+a121一+一一+一z+口“z63+一12z”+口“z“+一5z‘o+一。z59+一4z“+口101z”+口17z”+口”z55+一z“+a12‘z”+一9252+口16251+一2250+a852‘9+a73z”+a86—7+口1“z4‘+a31z‘5+d1”z“+一z“+口Bz42+口”z41+口1324。+矿z39+口125z”+a5‘z”+口101一‘+口39z”+口85—4+z33+口“42”+口”一1+一‘23。+一18229+口9z”+一z27+口2522‘63+口”工25+口101z“+口“z”+口13222+一3z”+a”z”+口32士19+口‘z15+口35z”+一2216+口113215+口“z1‘+口73z”+口1”工12+口91211+口105210+一z9+一5一+口61#7+口“一+a79一+口10一+一1一+一一+一z+一1149 E1灰阶图像二值化附录E(资料性附录)参考译码算法将灰阶图像分割为小块,使用Otsu算法(见参考文献[1])分别计算每块的二值化阈值.对相邻块的二值化阐值进行平均平滑后,各图像块使用各自的阈值进行二值化。将灰阶图像分割为M×M像素的图像块(这里M;40)。如果图像高度或宽度不是M的整数倍,则采取以下分块算法:图像宽度Ⅳ被分为BW份.前B啊份的宽度为M啊,后B吼份的宽度为MⅣ2。图像高度H被分为BH份.前BH,份的高度为MH,,后BHz份的高度为MHzBW=(W+M--1)DIVMMW,=WDIVBWMⅣ2=Mwl+lBW,=BWXMW2WB%=Bw—B啊BH=(H+M1)D1VMMH,=HDIVBHMH,=MH,+1日H1=BH×MH2一HBH2=BH—BHl各图像块的对比度是指该块内最暗与最亮像素问的灰阶差,记对比度最大的图像块的灰阶差为maxsc。若一个图像块的对比度小于max_sc/2,该图像块被认为处于背景区域,整个图像块被二值化为白色并且该块的二值化域值设为o。否则,使用Otsu二值化算法计算该图像块的二值化域值。对相邻块的二值化阈值进行平均平精。所有的二值化阈值组成一个二维数组,所有非0的阐值与其周围8个块的非O阈值参与平均平椅。各图像块闰值的权值模板为:lZ1242l21根据圈值对各图像块进行二值化.灰阶小于圈值的像素被二值化为黑色,其余像索为白色,从而得到二值图像。图E1和图E2分别是灰阶图像和二值化的结果。圈E1GM码灰阶图像图E2二值图像 E.2获取边界图像及连通分支GB/T27766--2011称二值图像中的一个像素点为边界点是指该像素点本身为白色且其周围的4个像素至少有一个为黑色。由二值图像的所有边界点组成的图像称为其边界图像。根据8连通将边界图像分解为连通分支的并。一个连通分支的尺寸定义为它的凸包的面积。删除所有尺寸小于625的连通分支(626是6X5个单元模块的最小面积,本参考译码算法要求单元模块至少应包含5×5个像素)。图E.3是边界图像。图E.4是删去小连通分支后的边界图像。围E.3边界图像E.3估计GM码的水平斜率和竖直斜率图E.4删去小连通分支后的边界图像水平斜率是指GM码图的水平方向与z轴夹角的正切值,竖直斜率是指GM码图的竖直方向与y轴夹角的正切值。水平斜率和竖直斜率应分别进行计算。使用删去小连通分支后的边界图像对水平斜率和竖直斜率进行估算。设当前像素点为(z,,)(下面的矩阵中以“*”号表示),它的8个相邻像素点分别为P。一(z+1,,一1),P。=(z+1,,),P:一(z+1,y+1),P3=(z,y+1),P4一(z一1,y+1),P5一(z一1,了),P6=(z一1,了一1),P7一(z,y一1)。P6P7PoP5*PIPlP3P2定义数组air[s3,这里dir[i]是当前像素与其周围的P.像素点同时为黑色的情形的总数。定义数组“[8][8],这里dd[i]D]是当前像素与其周围的P。及P,像素点同时为黑色的情形的总数。当dir[O]q-dir[2]dd[6][13+dd[5][2]-l-dd[7][4]-l-dd[O][3]时:水平斜率一一(dd[4][1]+dd[5][o])/(dir[1]X2+dd[4][1]+dd[5][o]+1)竖直斜率一(dd[6][3]+dd[7][2])/(dir[3]×2d-dd[6][3]+dd[7][2]+1)当air[O]-t-dir[2]dd[6][1]+daE5][2]+dd[7][4]+dd[o][3]时:水平斜率一一(dir[O]×2)/(dir[O]×2+dd[5][o]+dd[4][1]+1)5】 GB/T27766--201竖直斜率一(air[Z]×2)/(dlr[2]×2+dd[7][2]+dd[6][3]+1)当dir[0]+dir[2]≥dir[1]+dir[3]FIdd[4][1]+ddE5]Eo]+dd[6][3]+dd[7312]≤dd[6][1]+dd[C[Z3+dd[7][4]+dd[o][3]时:水平斜率一(dir[2]×2)/(dir[2]×2+dd[5][2]+dd[6][1]+1)竖直斜率一一(dir[0]×2)/(dir[0]×2+dd[7][4]+dd[o][3]+1)E.4估计宏模块的面积根据删去小连通分支后的边界图像和GM码的水平斜率和竖直斜率可以估算出宏模块的面积。称二值图像中的一个像素点为左边界点是指:——该像素点属于删去小连通分支后的边界图像;——该像素点的“右侧像素点”为黑色。这里像素点(*27,_y)的“右侧像素点”根据GM码的水平斜率和竖直斜率定义如下(o.414是22.5。的正切值):a)当(ABs(竖直斜率)+ABs(水平斜率))≤o.414×2时,(z,y)的“右侧像素点”为(z+1,y);b)当(ABs(竖直斜率)+ABs(水平斜率))>o.414×2且竖直斜率>o时,(z,,)的“右侧像素点”为(z+1,y一1);c)当(ABs(竖直斜率)+ABs(水平斜率))>o.414×2且竖直斜率≤o时,(X,y)的“右侧像素点”为@+l,,+】)。所有左边界点组成的图像称为左边界图像。见图E.5,左边界图像中有一些孤立的像素点,根据以下规则去除孤立像素点:当竖直斜率>o且(z,y一1),(z,y+1),(x--1,y一1),(z+1,,+1)都不是左边界点时,从左边界图像中删去(z,y);当竖直斜率≤o且(z,y一1),(X,y+1),(z+1,y一1),(z一1,,+1)都不是左边界点时,从左边界图像中删去o,,)。图E.6是去除孤立像素点后的左边界图像。/锄,f图E-5左边界图像图E.6去除孤立像素点后的左边界图像去除孤立像素点后的左边界图像分解为连通分支的并,各连通分支的直径定义为该连通分支内匝离最远的两点直接的距离,并四舍五入到最接近的整数。删去直径小于26的连通分支。对右边界图像实施同样的步骤。设ten[i]是左右边界图像中直径为i的连通分支的总个数,P[f]和Q[司的定义分别见式(E.1)和式(E.2)。P[司一∑ten[j]《J《9 Q[i]=∑le"D]XJ2GB/T27766—2011式中:u=L11i/12j口一r13i/12]设QFi。]是满足i≥26且P[i]≥IO的所有Q[f]的最大值,则宏模块高度的估计值见式(E.3)。∑i×lenEi]哪啦h堙h2专五玎一o≤《~式中:“o—L11io/12J‰一r13io/121使用同样的方法可计算得到宏模块的估计宽度apprx_width,宏模块的估计面积为:apprx_area—apprx_heightXapprx_width从边界图像删去所有面积小于apprx—area的70%的连通分支,得到的图像称为框架图像,见图E.7。图E.7框架图像得到框架图像后,使用E.3的方法重新计算GM码的水平斜率和竖直斜率。E.5计算宏模块的中心以下步骤根据框架图像计算宏模块的中心:a)计算初始内部点。为框架图像的重心。若。正好位于框架图像的边上,则从。点开始顺时针方向螺旋向外搜索初始内部点,步长为宏模块边长的一半,初始搜索方向为GM码的竖直方向,直至得到第一个非边界点,仍记为0。b)经过点O以码图的水平方向画一条直线,直线与框架图像左右分别相交于A、B两点。AB的中心记为0-,见图E.8。c)经过点o,以码图的竖直方向画一条直线,直线与框架图像上下分别相交于c、D两点。CD的中心记为O。,见图E.8。d)oz是调整后的宏模块中心。将02作为初始中心重复第b)、c)步,直至调整后的中心与初始中心间的距离不超过2像素。若重复第b)、c)步超过10次后距离仍大于2像素,则认为该宏模块中心搜索失败。e)至此AB为宏模块的宽度,CD为宏模块的高度。如果AB>hli—widthX7/6或ABini_height×7/6或CD<:ini_height×5/6,则认为该宏模块中心搜索失败。D当一个宏模块中心被找到后,根据该宏模块的中心、码图的水平斜率和竖直斜率方向估计其周围8个宏模块的初始中心、初始高度和初始宽度,然后对这8个宏模块分别重复第b)、c)、d)、e)步骤对中心进行调整。E.6计算宏模块的顶点对邻近的宏模块中心插值可以中心可能会丢失。以下给出了5种a)4个宏模块中心:b)3个宏模块中心(置,(置∽陇淑『!磐三氓(『bX一(Xb+X。)/2Y=(yb+yc)/z因为码图可能被污损,部分宏模块K)蚝)K) c)两个对角位置的宏模块中心(置,K)d)两个并排位置的宏模块中心(五,L)X一(X。+Xb)/ZY一(y。+Yb)/2(xb,R)托,h)GB/T27766—2011该顶点根据(x。,y.)、(X-,Y“),宏模块的宽度、高度以及GM码的水平斜率和竖直斜率进行计算。本例中为(墨,E)、(x-,K)的中点沿竖直方向向下走这两个宏模块的平均高度的一半得到(x,y)。e)1个宏模块中心:该顶点根据(x。,L)、宏模块的宽度、高度以及GM码的水平斜率和竖直斜率进行计算。本例中为(x⋯Y)沿水平方向向右走宏模块宽度的一半,并沿竖直方向向下走宏模块高度的一半得到(X,y)。E.7数据采样每个宏模块由6X6单元模块组成。根据宏模块的顶点可以计算这些单元模块的中心位置。设宏模块的四个顶点为(Xo,Yo)、(x。,y1)、(置,yz)、(墨,匕),坐标变换公式见式(E.4)。X=愚1×z+五2×Y+k3×工×y+h⋯⋯⋯⋯⋯⋯⋯⋯⋯(E.4)Y一点5×z+七6×y+k7Xz×Y+k8式中:(z,,)——变换前的坐标;(x,y)——变换后的坐标;k,~^s——待定的参数。图E.9是坐标变换公式的示意图。 GB/T27766--201(托,r2)图E.9坐标变换计算参数^,到^。如下:X。一矗l×0+正2×0+矗3×0×0+k4辛惫I=X。X1一矗I×1+量2×0+矗3×1×0+矗。辛量I—X1一X。X2一是l×0+五2×1+是3×0×1+矗4辛五2一X2一X。X3=是l×1+五z×1+是3×1×1+五4=娃3一X3一X1一X2+X。Yo=^5×0-t-k6×0"t-^7×0×0+^8}^8一YoYl=k5×1+愚6×0+是7×1×0+ka净五5一Yl—y0y2一五5×0+k6×1+矗7×0×1-t-k8=》矗6一Y2一y。K一是5×1+k6×1+是7×1×1-t-k8=》矗7一Y3一y1一y2+y0最外一层单元模块为边框,不表示数据。内部4×4单元模块分别表示】位。将x=3/12,5/J2,7/12,9/12和>=3/12,5/12,7/12,9/12分别代人式(E.4),即可得到所有内部单元模块中心的坐标。设”是单元模块的宽度和高度的平均值,读取以单元模块中心为圆心、w/4为半径的圆形区域内所有像素点。若多数像素为黑色,该单元模块值为“1”,否则该单元模块值为“0”。E.8推导GM码的方向、中心宏模块和纠错等级GM码没有用于指明方向的功能图形,但通过综合分析宏模块的层标识号可推导出GM码的方向。从正确的方向读取层标识号,则获得的层标识号呈环状循环分布。如果从其他方向读取层标识号,读取到的单元模块不代表层标识号,从而得到的结果是随机内容。由此与期望模式匹配得最好的方向被认为是正确的方向。层标识号与期望模式的匹配度根据以下参数进行计算:——8个方向(正常的4个方向和镜像的4个方向)。——5个纠错等级。——中心宏模块的位置。宏模块数组中心附近的多个宏模块都可以被认为是中心宏模块。中心宏模块边框的颜色用于确定GM码是否反色。对每一个可能的参数组合,按以下方法计算一个分值:记LB,J3为第i列第J行的宏模块的层标识号。设中心宏模块的位置为第五列第y。行,纠错等级为e,记LTEi,j;z。,,。,e3为第i列第j行的宏模块的层标识号的理论值。当e等于1时,LY[i,j;z。,挑,P]一3一(MAX(ABS(i--x。),ABS(j--y。))MOD4);当g不等于1时,LT[i,J;z。,Y。,e]一(MAX(ABS(i--x。),ABS(j--y。))+5一e)MOD4。第i列第J行的宏模块的分值s[i,J;z。,,。,e]定义为(L[i,j]XORLT[i,,;z。,,。,e3)中位。l”的个数。56 GB/T27766--2011GM码的总分值T[x。,y。,e]见式(E.5)。TEx。,y。,P]一∑Sri,j‰⋯Ye]⋯⋯⋯⋯⋯⋯⋯“(E.5)t,J一般地,得分最低的情况对应于正确的中心、方向和纠错等级。但在以下一些情况下,得分最低的情况不一定正好对应于正确的中心、方向和纠错等级,从而得分最低的情形不能得到正确的解码:a)由于GM码被污损,(z。,孔)可能不在GM码的正中心,见图E.10。b)由于GM码是以中心宏模块为中心的方阵,我们可以根据假定的中心宏模块计算丢失的宏模块个数。根据GM码各纠错等级纠错码宇所占的比例,可以得知若丢失宏模块个数大于纠错等级×10%×宏模块总个数,则必定解码失败,故这种情况不必再计算总分值。c)在一些特殊的情况下,从错误的方向读取到的层标识号有可能正好能够符合层标识号的分布规律,加上噪声的存在,有可能导致从错误方向得到的分值小于正确方向得到的分值。所有(总分值+丢失宏模块个数)<(纠错等级×10%×宏模块总个数)的情形应当按总分值从小到大的次序依次尝试解码,直至解码成功或所有情形均解码失败。总共81十塞模块32十丢失的塞I嗽(39.5%)尝试纠镑辱曩4、5总共8l十袁模块32十丢失的宏模块(39.5%)尝试纠错等级4、5;圜一假定的中檐黻j囫一摊腿微图E.10存在的宏模块,假定的中心宏模块和丢失的宏模块E.9还原码宇并纠错从GM码的中心宏模块开始,按照顺时针螺旋方向(见图7)依次读取码字。若GM码是镜像的则57堤楱宏的失去。一;.÷;.^.+;.^.÷;.^.+;.^.÷;.^_.,..... GB/T27766--2011反转螺旋的方向。每个宏模块中先读取第1码字,再读取第2码字。如果总码字数大于127,则按6.6.3的分块法则以及6.7.3的纠错块交错规则还原码字顺序。对每一纠错块分别应用Reed-Solomon纠错算法进行纠错后得到原始的数据码字。E.10编码位流解码错误码字被纠正后,将数据码字组装成二进制位流,按下面的流程译码二进制位流即可还原数据:a)读取开头4位数据得到当前的数据模式;b)根据当前数据模式的编码规则,对二进制位流进行解码,直至遇到模式转换码;c)查模式转换码表(表8),确定下一编码模式,如果为数据结束标志则整个译码过程结束,否则跳转到步骤b)。若位流不是以数据结束标志结束,或填充位、填充码字(如果存在)不符合定义的规则,解码过程应返回失败。 参考文献GB/T27766--2011-1]IEEETrans.Sys.,Man.N.Otsu(1979).“Athresholdselectionmethodfromgray-levelhis—tograms”.IEEETrans.Sys.,Man.,Cyber.9:62—66'