• 2.02 MB
  • 2022-04-22 13:47:24 发布

GBT27767-2011二维条码紧密矩阵码.pdf

  • 51页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'a亘中华人民共和国国家标准GB/T27767—2012011-12-30发布二维条码紧密矩阵码Two-dimensionalbarcode--Compactmatrixcode2012-05-01实施宰瞀鹳鬻瓣警糌赞鐾发布中国国家标准化管理委员会仅10 标准分享网www.bzfxw.com免费下载GB/T27767--20”目次前言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯I引言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯“Ⅱ1范围⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··⋯⋯⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12规范性引用文件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13术语、定义、缩略语和约定⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..⋯⋯⋯⋯⋯⋯⋯.14符号描述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯”35符号结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯46符号生成⋯⋯⋯⋯⋯⋯⋯⋯··⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..⋯⋯⋯..⋯⋯⋯⋯⋯67符号印制⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯⋯.228符号质量⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯229译码过程⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯23附录A(规范性附录)码字分块参数c语言源代码⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯24附录B(资料性附录)位流长度的优化⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯..26附录C(资料性附录)CM码符号印制的用户导则⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.⋯⋯⋯⋯⋯⋯⋯“32附录D(规范性附录)纠错生成多项式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯33附录E(资料性附录)CM码符号生成示例⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯36附录F(规范性附录)CM码专有指标的质量评级要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯40附录G(资料性附录)参考译码算法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯44 标准分享网www.bzfxw.com免费下载前言本标准按照GB/T1.1—2009给出的规则起草。本标准由中华人民共和国工业和信息化部提出。本标准由全国物品编码标准化技术委员会(SAC/TC287)归口。本标准起草单位:武汉矽感科技有限公司、中国电子技术标准化研究所。本标准主要起草人:张伟、张也平、刘波、张得煜、樊旭川。GB/T27767--2011 标准分享网www.bzfxw.com免费下载GB/T27767--2011引言本文件的发布机构提请注意,声明符合本文件时,可能涉及第5章、第6章、第9章相关的专利的使用。本文件的发布机构对于该专利的真实性、有效性和范围无任何立场。该专利持有人已向本文件的发布机构保证,他愿意同任何申请人在合理且无歧视的条款和条件下,就专利授权许可进行谈判。该专利持有人的声明已在本文件的发布机构备案。相关信息可通过以下联系方式获得:专利所有人:武汉矽感科技有限公司地址:武汉市东西湖区吴家山经济开发区金一路武汉矽感光电产业园邮政编码:430040网址:http://www.syscantech.cn联系人:何柳青联系电话:027—61675589传真;027—61675592E-mail:helq@syscangroup.com请注意除上述专利外,本文件的某些内容仍可能涉及专利。本文件的发布机构不承担识别这些专利的责任。Ⅱ 标准分享网www.bzfxw.com免费下载I范围二维条码紧密矩阵码GB/T27767--20”本标准规定了紧密矩阵码的符号结构、信息编译码方法、纠错编译码方法、信息排布方法、参考译码算法以及符号质量要求等技术内容。本标准适用于紧密矩阵码的生成与识读。2规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T1988信息技术信息交换用七位编码字符集GB/T12905条码术语GB18030信息技术中文编码字符集GB/T23704信息技术自动识别与数据采集技术二维条码符号印制质量的检验AIM国际技术规范扩展解释:第1部分:识别方案与协议(简称“AIMECI规范”)3术语、定义、缩略语和约定3.1术语和定义GB/T12905中界定的以及下列术语和定义适用于本文件。3.1.1功能图形functionpattern用于表示定位与识别特征的图形,包括开始图形、结束图形、数据段分隔图形和定位孔图形。3.1.2开始图形startpa“ern用于表示符号开始的图形。3.1.3结束图形stoppattern用于表示符号结束的图形。3.1.4定位孔图形positioning-holepattern用于表示CM码列同步信息的图形。3.1.5数据段分隔图形data-segmentseparatingpattern用于将编码区域进行分隔的图形。3.1.6掩模masking为使符号中深色(低反射率)模块与浅色(高反射率)模块的分布均衡,并使符号编码区域中出现功1 标准分享网www.bzfxw.com免费下载GB/T27767--20f1能图形的可能性降为最低,用掩模图形与数据编码区域的图形进行异或处理。3.1.7版本version用于指示CM码高度方向模块数的参数。3.1.8纠错等级errorcorrectionlevel指明CM码中纠错码字所占比例的参数。3.1.9格式信息formatinformationCM码符号相关的参数信息。CM码的格式信息包括:数据段编号、数据段总数、纠错等级、掩模类型和码字交错标志。3.1.10格式信息区域formatinformation81-ea用于对格式信息及其纠错信息进行编码的区域,位于每个数据段开始的连续7个码字区域。3.1.11数据编码区域dataencodingarea用于对数据码字及其纠错信息进行编码的区域。3.1.12编码区域encodingarea由格式信息区域和数据编码区域组成的区域。3.1.13数据段data-segment相邻的两个数据段分隔图形之间的编码区域。3.1.14纠错块errorcorrectioncodewordblock对码字分组后用于纠错的一组码字。3.1.15填充位paddingbit用于填充数据位流最后一个码字后面容量的无含义位,其值为0。3.1.16填充码字paddingcodeword当数据码字和纠错码字不能填满CM码的容量时,用于填充CM码的剩余容量的码字。填充码字不表示有效数据,但参与Reed-Solomon纠错运算。3.1.17功能码functioncode用于指示属于特定应用或特定功能的CM码符号的代码。3.2缩路语下列缩略语适用于本文件:ABs——绝对值(AbsoluteValue)CM码——紧密矩阵码(CompactMatrixCode)DIV——整除运算(Division)ECI——扩展解释(ExtendedChannelInterpretation)2 FNC——功能码(FunctionCode)GF——伽罗瓦有限域(GaloisField)3.3约定下列表示适用于本文件:(⋯)一——表示括号中的内容使用二进制表示(⋯)一——表示括号中的内容使用十六进制表示4符号描述4.1基本特征4.1.1可编码信息CM码可编码以下信息: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/T27767--2011CM码有32个可选版本,每个版本可采用1到32个数据段,共有32×32种规格,符号规格从39X18模块到1093×483模块(这里符号的开始图形和结束图形的宽度均以2模块宽度计算,见5.3和5.4)。符号每增加一个版本,高度方向增加15个模块;符号每增加一个数据段,宽度方向增加34个模块。4.1.4符号容量使用最低纠错等级的最大版本、最多数据段的CM码的容量如下:a)138462个数字;b)92311个大写字母;c)92311个小写字母;d)76925个数字字母混合字符;e)35503个GB18030双字节1区或双字节2区内的字符,或28843个GB18030双字节字符,或14421个GB18030四字节字符;f)57686个字节。4.1.5纠错等级8个纠错等级,每级中纠错码字占总码字的比例为:a)1级:8%;b)2级:16%;c)3级:24%;3 d)4级:32“;e)5级:40蹦;f)6级:48“;g)7级:56“;h)8级:64蹦。纠错码宇的个数为总码宇个数的上述百分比(向下台^)。当CM码的总码字数大于511时,需要将码宇分割成多个纠错块,在每个纠错块内分别分配纠错码宇。码字的分块和纠错码字的分配方i击见62和附录A。42附加特征**目$E&n目≈t*&**目m&《&镕※目m!自目固1符号结构图 CM码被设计用于接触式扫描解码,扫描时应使扫描线平行于数据段分隔图形,从CM码的一侧(开始罔形或结束图形)往另一侧进行扫描。52版本和数据段CM码有32个可选版车(1~32).每个版本有32个可选数据段(1~32)。规定图1的水平方向为CM码的宽度方向,竖直方向为CM码的高度方向。CM码高度方向的模块数为15×v+3个,v为CM码的版本;宽度方向的模块数为34×s+1+H+T,S为CM码的数据殷个数.H为开始图形的宽度,T为结束图形的宽度,见53和54。图2为版本和数据段个数变化示意图。图2符号的版本和数据段样图53开始图形开始图形用于指示符号的开始,其宽度方向的模块数大于或等于2,较多的模块数能提高开始图形筏探测副的可能性。开始图形的高度方向由15个深色模块和浅色模块按照3:2:1:1:1:2:2:3的序列重复排列而成,重复的次数与版本数相等,最后以3个深色模块结束。图3为版本3的CM码的开始墨形顺时针旋转90。后的结构图。图3符号的开始图形 GB/T27767--20115.4结束图形结束图形用于指示符号的结束,其宽度方向的模块数大于或等于2,较多的模块数能提高结束图形被探测到的可能性。结束图形的高度方向由15个深色模块和浅色模块按照3:1:2:3:2;2:1:1的序列重复排列而成,重复的次数与版本数相等,最后以3个深色模块结束。图4为版本3的CM码的结束图形顺时针旋转90。后的结构图。图4符号的结束围形5.5数据段分隔图形数据段分隔图形宽度为一个模块,全部由深色模块组成,其作用是将编码区域分隔成多个数据段,见图1。5.6定位孔图形定位孔图形包括上下两条齿孔状的图形。每条定位孔图形高度为3个模块,上下两行由深色模块组成,中间一行由浅色模块和深色模块交替排列组成,见图1。5.7数据段每个CM码有1个或者多个数据段,每个数据段由码字对应的图形无缝排列而成,这些码字包括数据码字、纠错码字以及格式信息码字。每个数据段的宽度固定为33个模块,高度为15×y一3个模块,y为符号版本。5.8空白区空白区为环绕在符号四周的至少6个模块宽的区域,其深浅应与浅色模块相同,见图1。6符号生成6.1生成过程CM码的生成过程包括以下步骤:a)数据分析:分析输入的数据,确定数据的数据编码模式。对不同的数据类型,CM码采用不同的数据编码模式进行编码,见6.3。每种模式有各自的编码规则。b)数据编码:将输人数据按照其编码模式对应的编码规则转换为位流。当需要进行模式切换时,在新模式数据编码前输出模式转换码。将编码产生的位流按每9位对应一个码字的方式6 GB/T27767,--201l转换为数据码宇流,最后一个码字不足9位时用。填充。c)纠错编码:将数据码字进行分块(见6.6.2)。对每块码字分别生成纠错码字,并将纠错码字添加到该块数据码字的后面。d)在矩阵中布置功能图形:将开始图形、结束图形、数据段分隔图形以及定位孔图形排列到矩阵中。e)排列数据码字和纠错码字:将数据码字和纠错码字的图形排列到矩阵中。f)格式信息:将格式信息及其纠错信息组装成码字填充到符号中。g)掩模:用4种掩模类型依次对符号进行掩模处理,评估得到的4种结果,选择最优的一种作为掩模结果。6.2数据分析对输人数据进行类型分析,按类型划分成多个段,使编码得到的位流尽量短。位流长度优化的一种方法参见附录B。6.3模式指示6.3.1模式分类CM码的编码模式分数据编码模式、ECI模式和功能码模式三类,各种模式由确定的模式指示符指示。表l列出了所有的模式指示符。袭1模式指示符模式分类模式名称模式指示符说明汉字模式(O001)BIN每个字符用13位二进制进行编码。见6.4.1数字模式(0010)B驸每3个字符用10位二进制进行编码。见6.4.z小写字母模式(0011)BN每个字符用5位二进制进行编码。见6.4.3数据编码模式大写字母模式(0100)BIN每个字符用5位二进制进行编码。见6.4.4数字字母混合模式(0101)Ⅻ每个字符用6位二进翩进行编码。见6.4.5控制字符模式‘每个字符用6位二进制进行编码。见6.4.6字节模式(0111)BⅣ每个字符用8位二进制进行编码。见6.4.7ECI模式ECI(1100)Ⅻ见6.4.8(】000)Bw功能码1,OSl应用标识。见6.4.9.1FNCl(1011)Ⅻ功能码1,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数据编码模式数据编码模式包括汉字模式、数字模式、小写字母模式、大写字母模式、数字字母混合模式、控制字符模式和字节模式,见表1。 GB/T27767--2016.3.3ECI模式ECI模式只能出现在数据的开头或“模式结束”转换码(见6.5.1)之后。ECI模式的模式指示符之后为ECI任务号,编码方法见6.4.8。6.3.4功能码模式功能码分FNCl、FNC2和FNC3三类,其中FNCl包括两种模式指示符,分别对应两种应用标识,见表1。功能码只能在CM码的开头出现。一个CM码使用功能码时,其模式指示符应出现在数据编码位流的前面。一个cM码最多可以使用两个功能码。6.3.5无效的模式指示符模式指示符(0000)Ⅲ、(0110)Bm、(1101)Ⅻ、(1110)BIN和(1111)m表示无效。6.4数据编码模式6.4.1汉字模式6.4.1.1编码字符可编码字符包括:a)GB18030双字节1区及双字节2区的字符(即第一字节值在(A1)H“至(A9)m或(Bo)HD【至(F7)HⅨ之间,且第二字节值在(A0)HⅨ至(FF)HⅨ之间的部分);b)“回车换行”(GB/T1988中值13、10的组合);c)数字对“oo”到“99”;d)8位字节型数据。注:GB18030除双字节1区及双字节2区以外的字符不能用汉字模式编码,可用字节模式编码。6.4.1.2编码规则汉字模式采用13位二进制进行编码。当一个GBl8030双字节字符第一字节值在(A1)HⅨ至(A9)mx之间,且第二字节值在(Ao)。EX至(FF)“n之间时,按式(1)计算该字符的13位编码:N一(C1一(A1)H疆)×(60)H既+(C2一(A0)FrEx)⋯⋯⋯⋯⋯⋯⋯⋯(1)式中:N——字符的13位编码;Cl——GB18030编码的第一字节值;Cz——GB18030编码的第二字节值。当一个GB18030双字节字符第一字节值在(Bo)HEx至(F7)HEx之间,且第二字节值在(Ao)。“至(FF)t一之间时,按式(2)计算该字符的13位编码:N=(Cl一(B0)HE】【+9)×(60)H既+(C2一(A0)H日【)⋯⋯⋯⋯⋯⋯⋯(2)式中;N——字符的13位编码;c1——GB18030编码的第一字节值;C:——GB18030编码的第二字节值。式(1)及式(2)定义了0至7775之间的编码值,以下方式用于定义7776至8191的编码值:a)7776赋给“回车换行”符;8 GB/T27767--2011b)7777至8032赋给8位字节数据(o至255),用于编码混在汉字信息中的非汉字数据,减小个别非汉字模式的数据嵌在一段汉字中导致的模式转换开销;c)8033至8132赋给数字对“00”到“99”;d)8160至8165用于实现模式的转换,见6.5.1;e)编码值8133至8159及编码值8166至8191是无效的。两个编码示例见表2。一表2汉字编码示例步骤说明例1倒21输入字符¥多ZGBl8030编码(A3A4)眦x(B6E0)H“((A3)H疆一(A1)H既)×(60)H蹦((B6)H目一(B0)HⅡ+9)X(60)H既3代人公式(1)或公式(2)+((A4)H既一(AO)H践)+((EO)H珏一(AO)H麟)4计算结果(C4)HEx(3E0)H麒5转化为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)“OO”表示没有填充数字;b)“01”表示有1个填充数字;c)“10”表示有2个填充数字;d)“11”为无效编码。编码只有数字字符的组时,按式(3)计算该组的10位编码:N一100DI+10Dz+D3式中:N——数字组的10位编码;D,——数字组的第一个数字; GB/T27767—2011Dz——数字组的第二个数字;D。——数字组的第三个数字。当分组中包含非数字字符时,非数字字符出现在分组中的位置有三种情况,分别是(x表示非数字字符):第1位置为xD,D2D3;第2位置为D。xD:D。;第3位置为D,D:xD。。同一个非数字字符处在不同的位置有不同的编码,非数字字符在不同位置时的赋码见表3。裹3非数字字符赋码表字符在分组中的位置编码(十进制数)】1000“空格”(GB/T1988中值32)210013100211003“+”(GB/T1988中值43)210043100511006“一”(GB/T1988中值45)210073100811009“.”(GB/T1988中值46)210103101111012“,”(GB/T1988中值44)210133101411015“回车换行”(GB/T1988中值13、2101610的组合)31017编码含有非数字字符的分组时,先输出非数字字符的10位二进制编码,然后再按式(3)计算并输出3个数字的10位二进制编码。剩下的绵码值i018至1023用于实现模式的转换,见6.5.1。彖倒:输入数据:“1,234,567.899”分组:1,234,567.89900编码十进制值:2101312310134561010789900转换为二进制:10111iii01010001i1101111111101010111001000llllll0010110001010111100001006.4.3小写字母模式6.4.3.1编码字符可编码字符27个,包括26个小写英文字母a~z以及“空格”(GB/T1988中值32)。10 GB/T27767--20116.4.3.2编码规则小写字母模式采用5位二进制进行编码,按顺序从a到z最后“空格”递增编码,字母“a”的编码为(00000)Bnw。剩下的5个编码值(11011)Ⅻ至(11111)Ⅻ用于实现模式的转换,见6.5.1。示例:输人数据:bar。空格”code一编码十进制值:10172621434转换为二进制:00001000001000111010000100111000011001006.4.4大写字母模式6.4.4.1编码字符可编码字符27个,包括26个大写英文字母A~z以及“空格”(GB/T1988中值32)。6.4.4.2编码规则大写字母模式采用5位二进制进行编码,按顺序从A到z最后“空格”递增编码,字母“A”的编码为(00000)R,N。剩下的5个编码值(11011)mw至(11111)BIN用于实现模式的转换,见6.5.1。示倒:输人数据:BAR“空格”CODE编码十进制值:10172621434转换为二进制:00001000001000111010000100111000011001006.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)enN。剩下的1个编码值(111111)Ⅻ用于实现模式的转换,见6.5.1。示倒:输人数据:oAb“空格”编码十进制值:olO3762转换为二进制:ooooooOOlOlOlOOlOl1111106.4.6控制字符模式6.4.6.1编码字符可编码字符64个,包括除以下字符外的GB/T1988字符:a)“空格”(GB/T1988中值32);1】 GB/T27767--201b)数字字符(GB/T1988中值48至57);c)大写英文字母(GB/T1988中值65至90);d)小写英文字母(GB/T1988中值97至122);e)DEL(GB/T1988中值127)。6.4.6.2编码规则控制字符模式采用8位二进制进行编码,按字符的GB/T1988中的值由小至大顺序编码,第一个字符编码为(000000)砒N。该模式的数据长度固定为1,编码后自动切换回之前的数据模式。输人数据的第一个字符不能分类为该模式。控制字符编码见表4。表4控制字符编码表字符编码字符编码字符编码字符绾码NULODI正163248SOH1DCl1733<49STX2DC218#3450ETX3DC3】9¥35>51EOT4DC420%3652ENQ5NAK21&37@53ACK6SYN2238[54BEL7ETB23(39t55BS8CAN24)40]56HT9BM254157LF10SUB26·L4258vT11ESC274350FF12FS2844{60CR13GS294561SO14RS30/46)62SI15US3147636.4.7字节模式字节模式采用8位二进制数编码0到255的字节数据。设输入数据的长度为L个字节,则先输出14位二进制无符号数L一1,用于记录字节数,随后直接输出字节数据本身。当输人数据的长度大于16384字节时,将输入数据分割成多个数据段,每段长度不超过16384字节,对每段数据分别编码。从第二段开始的每段数据都需要以模式转换码(0111)ⅢN和用14位二进制无符号数编码的该段数据长度开始。12 6.4.8ECI模式6.4.8.1ECI编码GB/T27767—2011将输入的数据转换为一个位流。以缺省的ECI开始时,位流的开头为第一个数据类型的模式指示符,否则,其前面要有ECI标头,后面为一个或多个不同模式的段。ECI标头由ECI模式指示符(Ii00)mw和ECI任务号组成。ECI的任务号为000000~811799(十迸制)之间的6位数。ECI任务号的编码见表5。表5ECI任务号的编码ECI任务号任务号编码000000~001023Obbbbbbbbbb001024~03276710bbbbbbbbbbbbbbb032768~81179911bbbbbbbbbbbbbbbbbbbb注.b⋯b是ECI任务号的二进制值。ECI模式指示符只能在数据的开头或“模式结束”转换码(见6.5.1)之后出现。输人的ECI数据需要编码系统作为一系列8位字节的值进行处理,可以采用汉字、数字、小写字母、大写字母、数字字母混合、控制字符、字节等一种或几种模式进行最高效的编码,而不必考虑其实际意义。例如,值为30nn到39““的数据序列可以当作一个数字序列,用数字摸式进行编码,即使实际上它并不表示数字数据。示倒:ECI编码表示:ECI任务号:400123待编码数据的字节值:(31)㈣(32)H既,(33)啦x,(34)HD【,(35)H既,(36)㈣(37)㈣(38)HⅨ"(39)鼢编码位流:a)ECI模式指示符:1100;b)ECI任务号:1101100001101011111011}c)数据模式指示符(数宇):0010;d)数据编码:00000111101101110010001100010101;e)最终的位流:11001101100001101011111011001000000111101101110010001100010101。6.4.8.2ECI与结构链接ECI可以在单个CM码或CM码结构链接符号的任意位置出现。引入的任一ECI一直保持有效,直至数据结束或一个新的ECI被引入,ECI将跨结构链接中的两个或多个CM码一直保持有效。6.4.9功能码模式6.4.9.1FNClFNCI模式指示符应在CM码的开头编码。结构链接模式同时被应用时,FNCl的模式指示符只在结构链接的第一个符号出现,并且FNCl的模式指示符在FNC2的模式指示符之前。FNCI模式指示符(1000)一用于标识按GSl系统规则格式化信息的符号。FNcl模式指示符(1011)m。甩于标识按AIM同意的特定行业或者特定应用规范格式化信息的符号。在第一数据字符位置的字符(a~z,A~z,或两位数字)用于指定特定的应用。13 GB/T27767--20116.4.9.2FNC2FNC2功能码用于实现结构链接功能,输入的数据可用最多16个CM码链接起来。每个结构链结中的符号都是由一个4字段(20位)链接控制头开始的:a)第一字段是4位的FNC2模式指示符(1001)Ⅲ;b)第二字段是8位的文件签名;c)第三字段用4位数n表示链接中的CM码总个数为H+1}d)第四字段用4位数m表示当前CM码在结构链接中的序号。m应小于或等于n,否则该cM码是无效的。文件签名是用某种签名算法对输入的整体数据产生的签名,同一个结构链接中的所有符号的文件签名应相同,防止不同结构链接之间的符号互相串扰。FNC2应是符号中的最后一个功能码,FNC2链接控制头之后应是数据模式指示符或ECI模式指示符。在传输结构链接的符号数据之前,结构链接中的所有符号应全部被解码成功并且将数据还原为正确的顺序。6.4.9.3FNC3FNC3功能码用于实现将符号编码的内容用作识读设备的初始化参数。FNC3的模式指示符(1010)em应出现在数据编码位流之前。当FNC3和FNCZ同时被应用时,FNC3的模式指示符应在FNC2的模式指示符之前,且只在结构链接的第一个符号出现。FNC3不能与FNCl同时使用。6.5混合模式编码6.5.1编码模式转换数据编码时的模式转换是通过输出模式转换码来实现的,不是任何两个模式都可以转换的。表6列出了全部的模式转换码,括号中是模式转换码的二进制位数。表6数据模式转换码下一编码模式当前编码模式数字字母控制字符模式结柬汉字数字小写字母大写字母字节混合(tO换)816081618162816381648165汉字(13位)101810191020l021i022i023数字(IO位)(10位)(IO位)(10位)27282930124125126小写字母(5位)(7位)‘27282930124125126大写字母(5位)(7位)‘100810091OlOIOli1012I014I015数字字母混合(IO位)(10位)(IO位)(10位)(IO位)0123457字节(4位)洼;“+”号表示不允许的模式转换。‘小写字母、大写字母模式到数字字母混合、控制字符、字节模式的7位转换码是5位的“11111”分别加上2位的“OO”,。01”,。10”。 GB/T27767--20116.5.2数据编码总流程数据编码流程如下:a)以编码产生的二进制位流最短为目标,将输人数据按类型划分成段。对输人数据的分段进行优化的方法参见附录B。b)对所有数据段按照下面的步骤逐段编码:1)存在功能码时,按表1进行编码;2)当前数据段是第一段时,输出该段数据的模式指示符,见表1;3)按照当前数据模式的编码规则编码当前数据段;4)下一段数据编码前,首先输出当前模式到下一模式的模式转换码,见表6;5)需要编码ECI时,首先输出模式转换码“模式结束”,见表6,然后编码ECI模式指示符(1100)Ⅲ及ECI任务号(见表5),之后是下一数据段的模式指示符,见表1;6)最后一个数据段完成后,输出模式转换码“模式结束”,见表6。c)需要填充位时,最后一个码字填充“0”。d)需要填充码字时,第一个填充码字应当取(000000000)。。。6.6纠错编码6.6.1纠错能力CM码采用伽罗瓦有限域GF(2。)的Reed-Solomon纠错算法生成纠错码字,有限域的本原多项式为z9+一+1,码字的位长为9位。纠错码字应添加在数据码字流后。CM码有8个用户可选纠错等级,对应的纠错码字容量见表7。表7纠错码字容量纠错等级l2345el,JsIl纠错码字占总码字百分比(向下舍人)8%16%24%32%40%删Is6“l64%I最佳纠错等级的选择需要依据符号质量、识读设备精度以及应用的物理环境相关,在数据密度与可靠性之间做出权衡。附录c.2给出了纠错等级选择的用户导则。纠错码字可以纠正两种类型的错误,拒读错误(错误码字的位置已知)和替代错误(错误码字的位置未知)。可纠正的替代错误数和拒读错误数与纠错码宇数和错误检测码字数之间的关系由式(4)给出。e+2t=d一口⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(4)式中:e——拒读错误数;f——替代错误数;d——纠错码字数;声——错误检测码字数。在一般情况下,p一0。当大部分纠错容量用于纠正拒读错误时,则检不出替代错误的概率增加;当拒读错误的总数大于纠错码字总数的一半时,声=3;当CM码的纠错码字总数小于6时,只允许纠正替代错误(e=o,户一1)。6.6.2码字的分块与纠错码字的分配运用Reed-Solomon纠错算法生成纠错码字时码字序列的长度受到所选用有限域的限制,CM码采15 GB/T27767--2011用的是GF(29)有限域,码字序列的长度应小于512。当数据码字的个数加上纠错码字的个数大于511时需要将数据码字分割成多个纠错块,然后分别对每个纠错块运用纠错算法生成各自的纠错码字。设CM码的总码字容量为c。将C个码字分成B-个长度为N,的块,以及岛个长度为N:的块,满足式(5)。C;B1XN1+B2XN2⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(5)总分块数B见式(6)。B;(C+510)DIV511⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(6)当c是B的整数倍时,码字分块参数为:B,一B,N,一CDIVB,Bz—o,N。=0。当c不是B的整数倍时,码字分块参数为:N,一(cDIVB)+I,N:=N1—1,B。一c—B×N。,B2=B—Bl。设选定的纠错等级为R(I≤R≤8),需要生成的纠错码字总数E见式(7)。E一(C×RX8)DIV100⋯⋯⋯⋯”⋯⋯⋯⋯⋯·(7)B个纠错块中,前B3块中每块分配E,个纠错码字,后B。块每块分配E。个纠错码字,分配结果满足式(8)。E;E1XB,+E2×B4B=B1+B2一B3+B4当E是B的整数倍时,纠错码字分配参数为:B。一B,E。;EDIVB,B。=o,Ez一0。当E不是B的整数倍时,纠错码字分配参数为:E1一(EDIVB)+1,E2=E一1,岛一E—B×E:,B4=B—B3。CM码码字分块计算法则的C语言源代码见附录A。6.6.3生成纠错码字构造数据码字多项式,多项式系数是数据码字,第一个数据码字为最高次项的系数,依次排列,最后一个数据码字是最低次项(常数项)的系数。设^是纠错码字的个数,则纠错码字多项式是数据码宇多项式乘以∥再除以纠错生成多项式得到的余式。其中余式的最高次项的系数为第一个纠错码字,最低次项的系数为最后一个纠错码字。cM码生成^个纠错码字的生成多项式G(z)见式(9)。G(z)一(工一a1)(z一口2)⋯(z一一)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(9)式中:G匕)——纠错生成多项式;a——有限域GF(29)的生成元;k——要生成的纠错码字个数。计算生成多项式系数的C语言源代码见附录D。纠错码字的生成可用图5的电路实现。寄存器ao到at一。的初始值为0,g。到g一为生成多项式由低次到高次的系数。编码分两个阶段完成:a)第一阶段两个开关的位置都向下,n个时钟脉冲后结束,输入的数据码字被直接导向输出,同时寄存器ao到a一的值都被更新。这里n是数据码字的个数;b)第二阶段两个开关的位置都向上,输入保持为零,^个脉冲后寄存器的值被顺序移位输出,从而生成k个纠错码字。 GB/T27767--2011说明:o—GF(29)乘法O—GF(29)加法图5纠错编码电路6.7生成最终码字流6.7.1生成数据码字编码输入数据生成二进制的位流。将二进制位流分成9位一组即生成数据码字流,位流分组中的第一个位对应于码字的最高位。最后一个码字不足9位时,低位以“o”填充,这样处理后的结果就是数据码字流。6.7.2符号的码宇容量设指定的编码参数为:版本y,S个数据段,R级纠错,编码得到的数据码字个数为C,。码字总容量C见式(10)。c=[(5v一1)×11—7]×S⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(io)其中纠错码字的容量c。见式(11)。c。一INT(R×C×0.0S)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(11)数据码字的容量c。见式(12)。Cd—C—ce⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯(12)如果C.ca则需要加大版本或/和数据段个数或者降低纠错等级。一般情况下cd不等于C.,需要根据实际应用选择V、S以及R的取值。6.7.3数据码宇和纠错码字的排列将数据码字和纠错码字填充到符号中之前,数据码字和纠错码字需要按照一定的规则排列成码宇流,有两种排列方式,即块顺序排列和块间码字交错排列。块顺序排列方式如下:第1块数据码字,第1块数据码字的纠错码字,第2块数据码字,第2块数据码字的纠错码字,⋯⋯,最后一块数据码字,最后一块数据码字的纠错码字。块问码字交错排列方式如下:a)从码字流的第一个块的第一个码字开始提取,然后是第二块的第一个码字,直到最后一个块的】7 GB/T27767--2011第一个码字;b)继续提取第一个块的第二个码字,然后是第二块的第二个码字,直到最后一个块的第二个码字;c)继续提取直到码字流中所有码字被提取完。6.8码字在符号中的排列6.8.1码字的图形衰示设b。至b。依次为一个码字的最高位至最低位,每个码字在符号中的图形表示为3x3个模块按从下至上、从左至右的方式排列,先排列最高位,最后排列最低位,见图6。bBhbob’b‘blb-b5b2图6码字的图形表示6.8.2码字在数据段中的排列码字在数据段中按照从下至上、从左至右的顺序排列,从左至右依次填充每个数据段,每个数据段的前7个码字空间留给格式信息。图7是版本2的CM码数据段的码字排列顺序示意图,码字空间A~G由格式信息填充,码字空间o~91由数据码字和纠错码字填充。1lO19283"/465564"/38,29109182736455463728l9081726354453627180F716253443526170"/988E615243342516069"/887D5142332415059687"/86C41322314049586"/"/685B3122130394857667584^21l2029384"/56657483图7版本为2的CM码的一个数据段的码字排列顺序 GB/T27767--20116.9格式信息6.9.1信息的组成CM码的每个数据段都有长度为16位的独立的格式信息(见表8):a)数据段编号:b,s~bn,共5位。每个数据段都有一个编号,第一个数据段编号为“00000”,第二个数据段的编号为“00001”,编号依次递增。b)数据段总数.b。~b。,共5位。编码为实际数据段数减1的二进制编码,CM码最多可以有32个数据段,所以编码范围是“00000”至“11111”。c)纠错等级:bs~ba,共3位。CM码的纠错等级为1~8,对应的编码为纠错等级数减1的二进制编码,即“000”~“1Ii”。d)掩模类型:b。b。,两位。CM码有四种掩模方式,即掩模1、掩模2、掩模3和掩模4,对应二进制编码为“oo”~“1l”,见6.10.2。e)码字交错标志:b。,共l位。码字按交错方式排列b。一1,否则b。=o,见6.7.3。表8格式信息功能表l信息位b15b14b13b12b11b1。b。beb7b6bsb‘bbzbIb。功能数据段编号数据段总数纠错等级掩模类型码字交错标志l每个数据段的数据段编号不同,其余4类格式信息相同。6.9.2格式信息的纠错编码格式信息的正确性对译码的成功起决定性作用,因此CM码的每个数据段的格式信息都要求使用纠错编码。16位格式信息(表8的排列顺序)从左至右被分成4个码字,每个码字4位,运用生成元为i0011的GF(24)域的Reed-Solomon纠错算法生成11个纠错码字,生成多项式G(z)见式(13)。G(z)=lo+5x+3x24-10x3+13一+3一+15∥+3x7+6一+8x9+12x1。+一1⋯(13)将生成多项式系数代人图5的电路中,并将GF(29)加法替换成GF(24)加法,GF(29)乘法替换成GF(24)乘法即可用该编码电路生成所需纠错码字。6.9.3格式信息在符号中的排列4个格式信息码字加上11个格式信息纠错码字共60位,每个数据段的前7个码字空间(共63个模块)用来表示格式信息,为了保证数据码字和其纠错码字排列整齐,剩余三个模块不表示任何信息,固定为浅色模块。将4个格式信息码字顺序编码号为A、B、c和D,11个格式信息纠错码字顺序编号为E、F、G、H、I、J、K、L、M、N和O,然后给每个编号分别加上下标0、1、2和3,分别表示每个码字的最低位至最高位。图8表示了格式信息码宇及其纠错码字在符号中的排列方式。为了保证格式信息区域深浅模块的数目大致相等并均匀分布,需要对格式信息掩模,即用值为155。n的码字对每个数据段的前7个码字进行异或操作,译码时重复该操作可去掩模。 GB/T27767--2011F2F0OoFoFlOlEzEo02E3ElOjD2DOJ2J-N2NoDoDlhJlNiNIC2c012IoM2MoqCl13IIM3MlB2BoH2HeLILOBaBlH3HIL3LlA2AoG2GoKKoA3AlG30IKaKlN2NoOoN3N10IM2Ma02地屿岛K2KaLoKKlLlJ2JoL2bJlbH2‰10H3HIIlG2G01203GIIaE2E口FoE3EIRD2D口hD3DlF9B2BoC口B3BlCl~A口C2A|A1C3a)版本1的格式信息排列b)版本2以上的格式信息排列图8格式信息的排列6.10掩模6.10.1掩横规则CM码按以下规则进行掩模操作;a)掩模仅作用于数据编码区域,不作用于格式信息区域;b)用多个掩模类型分别对数据编码区域的图形进行异或操作,采用不同掩模类型时,格式信息区域应按6.9的规则进行更新;c)对每种掩模结果,统计结果图形中不合要求的部分并计分;d)选择得分最低的图形作为结果图形。6.10.2掩模类型CM码有4种掩模类型,每种掩模类型由一对码字的图形元素在平面空间内交替排列而成,表9列出了掩模类型。 表9掩模类型GB/T27767--2011由图形元索排列掩模图形的方法为:从下至上、从左至右依次交替排列两个图形元素,使得两个图形元素在水平方向与竖直方向都是交替出现,图9是用于版本1的第1种掩模图形。图9版本1的第1种掩模圈形6.10.3掩模结果的评价在依次用每种掩模类型进行掩模操作之后,对编码区域(包括格式信息区域)中每次出现表10中的情况进行计分,分数越高其结果越不可用。在表10中,wt到Ⅳ,为非期望的图形特征的计分权重(Wl一10000,Ⅳ2=3,W3一loo)。21 GB/T27767--2011裹10掩模结果计分规则数据段图形特征计分条件分值所有数据段中共有i个全部由深色模全部由深色模块组成的列Ⅳ1×i块组成的列同种颜色的模块组成的块块尺寸=mXn(m>l,n>1)Wz×(m一2)×(n一2)深色模块的比例深色模块占总模块的百分比为l%W3xABS(50一女)根据表10的计分规则给每种掩模后的CM码打分,分值最低的CM码被选为最终的结果。6.11符号生成示例附录E给出了一个完整的符号生成示侧。7符号印制7.1尺寸CM码尺寸的确定:x尺寸:模块宽度根据应用要求、采用的扫描技术以及符号生成技术来确定。Y尺寸:模块高度一般与模块宽度相等,实际应用时可根据采用的扫描技术以及符号生成技术来确定,可以大于模块宽度,也可以小于模块宽度。最小空白区:在符号周围的空白区宽度最小为6个模块宽度。7.2供人识读字符CM码被设计成用于存储大容量的数据文件,因此供人识读的数据字符包含CM码所表示的所有数据信息是不切实际的。可用描述性的文本而不是全部数据原文与CM码同时印制在一起。字符尺寸与字体不作具体规定,可印制在CM码周围的任意区域,但不能影响CM码本身及其空白区,建议印制在cM码的上面或下面。7.3符号制作可用多种不同的技术制作CM码符号,参见附录c。8符号质量8.1符号质量评价CM码采用GB/T23704中规定的矩阵式二维码印制质量测试导则进行质量评级。CM码质量参数包括:标准译码、符号反差、调制度、轴向不一致性、网格不一致性、未使用纠错、格式信息污损和功能图形污损。格式信息污损和功能图形污损的评价见附录F。标准译码、符号反差、调制度、轴向不一致性、网格不一致性、未使用纠错各参数等级及评价方法见23704。其中网格不一致性的评价应将参考译码算法建立的取样网格延拓到包含开始图形、结束图形、数据段分隔图形、定位孔图形等部分的整个符号之后进行计算(参考译码算法参见附录G)。22 GB/T27767--2018.2符号等级一次扫描获得的符号反差、调制度、标准译码、轴向不一致性、网格不一致性、来使用纠错、格式信息污损、功能图形污损各参数等级的最低值为单次扫描等级。符号等级为5次扫描获得的单次扫描等级的算术平均值。CM码被设计用于接触式扫描解码,扫描时应使扫描线平行于数据段分隔图形,从cM码的一侧(开始图形或结束图形)往另一侧进行扫描。如果两次扫描译码获得的数据不同,那么不论单次扫描的等级如何,符号等级应为0。符号等级质量高低以4.o~o.0的数字形式表示,小数点后应保留一位。9译码过程9.1概述CM码的译码过程如下:a)图像预处理:将图像二值化为一系列深色与浅色像素组成的二值图像;b)探测开始图形与结束图形:在二值图像中寻找开始图形与结束图形,并确定符号的版本;c)探测定位孔图形:在开始图形与结束图形之间探测定位孔图形;d)探测数据段分隔图形:在开始图形与结束图形之间探测数据段分隔图形;e)格式信息译码:根据探测到的定位孔图形和数据段分隔图形,对每个数据段的格式信息分别进行译码并校验;f)数据段分隔图形校验:根据格式信息译码得到的数据段总数对已探测到的数据段分隔图形进行剔除或/和插值操作;g)定位孔图形校验:根据数据段分隔图形对定位孔进行剔除或/和插值操作,使得每个数据段上下两侧各17个定位孔;h)数据采样:根据定位孔图形建立采样网格,对CM码进行取样;i)去除掩模:用掩模图形(掩模类型从格式信息中得出)对数据编码区域的模块进行异或处理,去除掩模;j)还原符号码字并纠错:根据码字排布规则,恢复数据码宇序列并进行纠错译码处理;k)数据位流译码:对数据位流进行译码,恢复原始信息。9.2参考译码算法CM码的参考译码算法参见附录G。 GB/T27767--201附录A(规范性附录)码字分块参数C语言源代码6.6.2定义的码字分块参数的C语言源代码如下:I*功能:为指定版本和纠错等级的符号计算码字分块参数输入:符号的版本和纠错等级输出:分块结果码字个数为Bl的块有N1块,码字个数为B2的块有N2块前B3块每块纠错码字E1个,后B4块每块纠错码字E2个*|#defineN511intB1,N1,B2,N2;intB3,E1,B4,E4;voidrs_biock(intV,/*符号的版本,1—32*/ints,/*符号的数据段数,1—32*/intR)/*纠错等级,1—8*/tintC;/*符号的总码字数*/intE;/*纠错码字数*/intB,/*总分块数*/C=((5*V~1)*11—7)*SB=(c+N一1)/N;if(0==C%B){B1=B;N1=c/B;B2=0;N2=0;)else(N1=C/B+1:N2=N1—1;B1=C—日*N2:B2=B—B1:)E=(int)(C*0.08*R);if(0==E%B){B3=B:E1=E/B: B4=0;E2=0:)else{E1=E/B+1:E2=El一1;B3=E—B*E2B4=B一丑3:return;GB/T27767--201 GB/T27767--2011B.1CM码编码数据类型的分析附录B(资料性附录)位流长度的优化B.1.1按数据类型分段CM码总共有6种基本的数据类型:汉字、数字、小写字母、大写字母、控制字符、字节。首先将需要编码的数据按这6种基本的数据类型进行分段。将输人数据看作字节流,按以下步骤,给每个字节赋予一个类型,连续的相同的数据类型被归为一个数据段,&)遍历字节流,若任意两个连续的字节可以组成一个GB18030双字节1区及双字节2区的字符,则将这两个字节归为汉字类型。对一个或多个连续的“回车换行”字符,如果它们前面的两字节或后面的两字节为汉字类型,则将它们归为汉字类型,否则它们的类型是未定的。若数字对(⋯00到“99”)的前两个字节及后两个字节均为汉字类型,则将该数字对归为汉字类型。b)从“a”到“z”的所有字节归为小写字母类型。c)从“A”到“z”的所有字节归为大写字母类型。d)对一个或多个连续的空格,它们的类型根据这些空格前面的数据类型或后面的数据类型确定:1)若这些空格前面的数据类型是小写字母类型或大写字母类型,则将这些空格归为其前面的数据类型,否则转2);2)若这些空格后面的数据类型是小写字母类型或大写字母类型,则将这些空格归为其后面的数据类型,否则转3);3)这些空格的类型是未定的。e)从“0”到“9”的所有字节归为数字类型。满足6.4.2规定的可以归人数字类型的“空格”、“+”、“一”、“.”、“,”、“回车换行”也同时归为数字类型。f)剩下的所有未归类的字节被归为字节类型。但如果某一段字节类型满足以下所有条件,则该段数据被归为控制字符类型:1)该段数据不是第一个数据段;2)该段数据内的所有字符都是控制字符(见表4);3)该段数据的长度不超过3字节;4)该段数据的前一数据段不是汉字类型。B.1.2数据类型调整根据一个数据段及其邻近数据段编码的位流长度,对一个数据段的类型进行调整。调整的规则为;根据连续的3(或4)个数据段,对所有可能的调整方案计算编码位流的长度,取其中位流最短的方案。调整从第一个数据段开始直至最后一个数据段结束:a)对第一个数据段,考虑它和其后的两个数据段,对所有可能的调整方案计算编码位流的长度,根据位流最短的方案确定第一个数据段的编码类型。b)从第二个数据段开始,考虑4个数据段(前一数据段,当前数据段,其后的两个数据段),前一数据段的编码类型固定,对当前数据段和其后的两个数据段,计算所有可能的调整方案的编码位流长度,根据位流最短的方案确定当前数据段的编码类型。直至最后的三个数据段。26 GB/T27767--20”c)最后三个数据段的编码类型由最后4段数据的位流最短的调整方案确定。如果有几种调整方案得到的编码位流长度是一样的,则根据以下规则选取当前数据段的编码类型:1)若存在一种方案保持当前段数据类型不变,则保持数据段的初始类型不变;2)若几种调整方案当前段数据类型均变化,则根据以下优先级选取当前数据段的编码类型:数字>小写字母>大写字母>数字字母混合>控制字符>字节>汉字。表B.1列出了每一种数据类型允许的编码类型。若数字类型被调整为数字字母混合类型,则数字类型中的非数字字符被调整为控制字符。裹B.1各数据类型可能的编码类型原数据类型可能的编码类型汉字字节数字数字字母混合数字字节汉字小写字母数字字母混合小写字母字节汉字大写字母数字字母混合大写字母字节汉字控制字符字节汉字字节汉字B.2编码数据类型分析的例子以下给出一个编码数据类型分析的例子。输入数据:国外通信教材Matlab6.5输入数据首先被分为4段,见表B.2。表B.2根据数据类型分段国外通信教材(空格>Matlab6.5汉字大写字母小写字母数字对开头的3个数据段(6个汉字、2个大写字母、5个小写字母),表B.3列出了所有可能的调整方案及其编码位流的长度。Z7 GB/T27767--2011表B.3编码位流长度的计算可能的编码方案位流长度计算结果当前段其后第一段其后第二段汉字大写字母小写字母413×6135X255X5135汉字大写字母混合413×6135×276×5142汉字大写字母字节413×6135×2714+8×5166汉字大写字母汉字413×6135×2513×5175汉字混合小写字母413x6136×2IO5×5142汉字混合413×6136×206×5137汉字混合字节413×6136×21014+8x5171汉字混合汉字413×6136×2IO13×5182汉字字节小写字母413x61314+8×245×5154汉字字节混合413×61314+8×246×5159汉字字节413x61314+8×208×5165汉字字节汉字413x61314+8×2413×5194汉字小写字母413×6O13×2135×5146汉字混合413×6O13×2136X5151汉字字节413x6013×21314+8×5175汉字413x6O13×2O13×5173字节大写字母小写字母414+16X645×255X5158字节大写字母混合414+16x645×276X5165字节大写字母字节414+16x645×2714·L8X5189字节大写字母汉字414+16×645×2513x5198字节混舍小写字母414+16×646XZ105×5165字节混合414+16×646X206×5160字节混合字节414+16×646×21014+8X5194字节混合汉字414+16×646×2io13×5205字节小写字母414+16×608×245×5159字节混合414·L16x6O8×246×5164字节414+16×6O8×2O8×5170字节汉字414+16×608×2413X5199字节汉字小写字母414+16X6413×2135×5182字节汉字混合414+16X6413×2136×5187字节汉字字节414+16x6413X21314+8×5211字节汉字414+16x6413×2013X5209从表B.3可以看出,编码方案汉字、大写字母、小写字母需要的位流最短,故第一段数据(6个汉字)使用汉字类型进行编码。Z8 GB/lr27767—201为了得到第二个数据段的编码类型,固定其前一数据段(第一段)为汉字类型,计算当前段(第二段)和其后两个数据段(第三、四段)所有可能的调整方案的编码位流长度,计算结果列于表B.4。表B.4位流长度计算可能的编码方案位流长度计算结果当前段其后第一段其后第二段大写字母小写字母数字135×255×552+lO+lOlO90大写字母小写字母混合135×255×576×2+16lO98大写字母小写字母字节135X255×5714+8×34102大写字母小写字母汉字135×Z55×5513×313110大写字母混合数字135X276×5102+10+1010102大写字母混合135×276×5O6×2+16lO98大写字母混合字节135×276×5io14+8×34112大写字母混合汉字135×276×51013×313122大写字母字节数字135X2714+8×542+lO+lOlO120大写字母字节混合135×2714+8×546×2+1610126大写字母字节135XZ714+8×5014+8×34126大写字母字节汉字135×2714+8×5413×313140大写字母汉字数字135×2513×5132+lo+IOlo138大写字母汉字混合135×2513×5136×2-I-16lO144大写字母汉字字节13SX2513×51314+8x34148大写字母汉字135×2513×5013×313145混合小写字母数字136×2lO5×552+lO+IOlo97混舍小写字母混合136×Z105×576×2+1610105混合小写字母字节136×2lO5×5714+8X34109混合小写字母汉字136×2105×5513×313117混合数字136X206×5102+10+10lO97混合136×206x5o6x2+161093棍合混合字节136×2O6x5lo14+8x34107混合汉字136×2O6x5lO13×313117混合字节数字136×2lo14+8×542+10+lOlO125混合字节混合136×2lO14+8×546×2+16lO131混合字节136×2lO14+8×5014+8x34131混合字节汉字136×2lO14+8X5413×313145混合汉字数字136×2lO13X5132+10+lOlO145混合汉字混合136×2lO13x5136×2+1610151混合汉字亭节136×2lo13×51314+8×34155 GB/T27767m2011表B.4(续)可能的编码方案位流长度计算结果当前段其后第一段其后第二段混合汉字136×21013×5O13×313152字节小写字母数字1314+8X245×552+10+10lO109字节小写字母混合1314+8×245×576X2+1610117字节小写字母字节1314+8×245×5714+8×34】2】字节小写字母汉字1314+8x245×5513X313129字节混合数字1314+8×246×5lO2+lO+lOlO119字节混合1314+8×246×5O6×2+16lO115字节混合字节1314+8×Z46×5lO14+8×34129字节混合汉字1314+8x246×51013×313139字节数字1314+8×2014+8×542+10+1010133字节混合1314+8x2014+8x546×2+1610139字节1314+8×2014+8×5Oi4+8×34139字节汉字1314+8X2o14+8X5413×313153字节汉字数字1314+8×2413×5132+10+10lO157字节汉字混合1314+8×2413×5136×2+1610163字节汉字字节1314+8×2413×51314+8×34167字节汉字13】4+8X2413X5O13X313164汉字小写字母数字O13×2135X52+10+lOlOlol汉字小写字母混合O13×2135×576×2+1610109汉字小写字母字节O13×2135×5714+8×34113汉字小写字母汉字013×2135×5513×313121汉字混合数字013×2136×5102+10+1010111汉字混合013×2136×5O6×2+16lO107汉字混合字节O13×2136x51014+8×34121汉字混合汉字013×2136×51013×313131汉字字节数字013×21314+8×542+lO+lO10129汉字字节混合013×21314+8×546×2+1610135汉字字节O13×21314+8×5014+8x34135汉字字节汉字O13×21314+8×5413×313149汉字数字013X2013×S132+10+Io10136汉字混合013×2013×5136x2+1610142汉字字节O13X2O】3×S1314+8×34146汉字O13×2013×5013×313143 GB/T27767—201从表B.4可以看出,编码方案大写字母、小写字母,数字需要的位流最短,故当前段(第二段数据、<空格)M)使用大写字母进行编码。因为这是最后的三个数据段,故第三数据段和第四数据段分别使用小写字母、数字进行编码。最终的编码类型为:汉字、大写字母、小写字母、数字。 GB/T27767--2011c.1总则附录C(资料性附录)CM码符号印制的用户导则应将CM码的应用看作整个系统的解决方案。组成系统的各个部分(打印机、标签、识读器)需要作为一个整体来考虑,在该系统的任一环节出现问题,或各环节之间的错误匹配将损害整个系统的运行效果。符合标准要求是保证整个系统成功的关键之一,同时其他因素也会影响系统的运行。以下指南是建议在确定或者采用CM码时应考虑的一些因素。——选择适当的印制密度,使符号的允许偏差是所使用的印制技术能达到的。保证模块尺寸是打印头分辨率的整数倍(在平行和垂直于印刷方向的两个方向),也要保证印制增量的调整,这种调整是通过单个深色模块或毗连的深色模块组边缘(由深色到浅色或由浅色到深色)改变等量的整数像素来实现的,这样可以保证模块中心的间距保持不变,虽然对每个深色(或浅色)模块的位图表示的尺寸进行了调整。——选择识读器,其分辨率应与特定印制技术所生成的符号密度和质量相适应。——保证印制的cM码的光学特性与扫描器光源的波长或传感器的感光特性相适应。——检查在最终标签或外包装上的CM码是否合格。遮盖、透光、弯曲或不规则表面都会影响CM码的识读性能。——应考虑光滑的符号表面产生的镜面反射。扫描系统应考虑在深色与浅色特性之间的漫反射的改变量。在某些扫描角度,反射光的镜面反射部分大大地超过希望的漫反射部分,从而改变了扫描特性。如果能改变材料表面或材料表面的某部分,那么,选择粗糙的、非光滑的表面有助于减小镜面效果。否则,应保证识读符号的照明使所希望的对比度达到最佳。c.2纠错等级的用户选择用户应确定合适的纠错等级来满足应用需求。从1级到8级的纠错码字占符号容量的百分比逐渐增加,相应的纠错性能也逐步提高,其代价是对表示给定长度数据的符号的尺寸逐步增加。纠错等级的选择与下列因素相关:——预计的符号质量水平:预计的符号质量等级越低,应用的纠错等级就应越高;——潜在的符号损毁可能性:潜在的符号损毁可能性越高,应用的纠错等级就应越高;——印刷符号的空间限制了使用较高的纠错等级。纠错等级1、2适用于具有高质量的符号以及/或者要求使符号的尺寸尽可能小的情况。等级3、4的符号具有适中的尺寸和较好的纠错能力。等级5至8适用于一些重要的或符号印制质量差的场合。需要注意的是当符号的质量降低到一定程度后,即使提高纠错等级也无法提高符号的识读可靠性。建议符号印制后测试符号的剩余纠错能力,根据测试结果调整纠错等级以使剩余纠错能力处于一个适中的水平,这样可以在保证可靠性的前提下提高符号的数据密度。 附录D(规范性附录)纠错生成多项式以下c语言源代码用于计算CM码纠错生成多项式的系数cB/lr27767m2011//powertableforGF(2^9)constunsignedshortpo._tab[]=f/*forx^9+】c^4+1*/l,2,4,8,16,32,64,128,256,17,34,68,136,272,49,98,196,392,257,19,38,76,152,304,113,226,452,409,29l,87,174,348,169,338,181,362,197,394,261,27,54,108,216,432,369,243,486,477,427,327,159,318,109,218,436,377,227,454,413,299,71,142,284,41,82,164,328,129,258,21,42,84,168,336,177,354,213,426,325,155,310,125,250,500,505,483,471,447,367,207,414,301,75,150,300,73,146,292,89,178,356,217,434,373,25i,502,509,491,455,415,303,79,158,316,105,210,420,345,163,326,157,314,101,202,404,313,99,198,396,265,3,6,12,24,40,96,192,384,273,51,102,204,408,289,83,166,332,137,274,53,106,212。424,321,147,294,93,186,372,249,498,501,507,487,479,431,335,143,286,45,90,180,360,193,386,277,59,118,236,472,417,339,183,366,205,410,293,91,182,364,201,402,309,123,246,492,457,387,279,63,126,252,504,481,467,439,383,239,478,429,331,135,270,13,26,52,104,208,416,337,179,358,221,442,357,219,438,381,235,470,445,363,199,398,269,11,22,44,88,176,352,209,418,341,187,374,253,506,485,475,423,351,175,350,173,346,165,330,133,266,5,10,20,40,80,160,320,145,290,85,170,340,185,370,245,490,453,411,295,95,190,380,233,466,437,379,231,462,397,267,7,14,28,56,112,224,448,401,307,119,238,476,425,323,iSl,302,77,154,308,121,242,484,473,419,343,191,382,237,474,421,347,167,334,141,282,37,74,148,296,65,130,260,25,50,100,200,400,305,115,230,460,393,259,23,46,92,184,368,241,482,469,443,359,223,446,365,203,406,317,107,214,428,329,131,262,29,58,116,232,464,433,37i,247,494,461,395,263,31,62,124,248,496,497,499,503,511,495,463,399,271,15,30,60,120,240,480,465,435,375,255,510,493,459,39i,287,47,94,188,376,225,450,405,315,103,206,412,297,67,134,268,9,18,36,72,144,288,81,162,324,153,306,117,234,468,441,355,215,430,333,139,278,6l,122,244,488,449,403,311,127,254,508,489,451,407,319,111,222,444,361,195,390,285,43,86,172,344,161,322,149,298,69,138,276,57,114,228,456,385,275,55,110,220,440,353,211,422,349,171,342,189,378,229,458,389,283,39,78,156,312,97,194,388,281,35,70,140,280,33,66,132,264,0);33 GB/T27767--2011//logtableforGF(2‘9)constunsignedshortlog_tab[3=f/*for】一+r4+1*/511,0,1,130,2,260,131,290,3,420,261,235,132,213,291,390,4,9,421,19,262,69,236,343,133,332,214,39,292,365,391,377,5,50"1,10,503,422,325,20,495,263,63,70,462,237,169,344,405,134,14,333,139,215,149,40,479,293,473,366,176,392,441i378,199,6,329,508,417,11,470,504,60,423,95,326,92,21,306,496,111,264,426,64,144,71,269,463,29,238,98,170,187,345,156,406,279,135,499,15,126,334,122,140,413,216,114,150,359,41,52,480,455,294,24,474,338,367,431,177,299,393,309,442,193,379,81,200,448,7,67,330,363,509,258,418,211,12,147,471,439,505,323,61,167,424,267,96,154,327,468,93,304,22,429,307,79,497,120,112,50,265,466,427,118,65,256,145,321,72,32,270,487,464,254,30,252,239,74,99,220,171,34,188,182,346,272,157,244,407,489,280,315,136,173,500,459,16,36,127,232,335,190,123,356,141,184,414,89,217,241,115,484,151,76,360,436,42,i01,53,225,481,222,456,353,295,409,25,56,475,491,339,286,368,282,432,228,178,317,300,207,394,348,310,45,443,274,194,372,380,159,62,104,201,246,449,399,8,18,68,342,331,38,364,376,510,129,259,289,419,234,212,389,13,138,148,478,472,175,440,198,506,502,324,494,62,461,168,404,425,143,268,28,97,186,155,278,328,416,469,59,94,91,305,ii0,23,337,430,298,308,192,80,447,498,125,121,412,113,358,51,454,266,153,467,303,428,78,119,49,66,362,257,210,146,438,322,166,73,219,33,181,271,243,488,314,465,117,255,320,31,486,253,251,240,483,75,435,i00,224,221,352,172,458,35,231,189,355,183,88,347,44,273,371,158,103,245,398,408,55,490,285,281-227,316,206,137,477,174,197,501,493,460,403,17,341,37,375,128,288,233,388,336,297,191,446,124,411,357,453,142,27,185,277,415,58,90,109,218,180,242,313,116,319,485,250,152,302,77,48,361,209,437,165,43,370,102,397,54,284,226,205,482,434,223,351,457,230,354,87,296,445,410,452,26,276,57,108,476,196,492,402,340,374,287,387,369,396,283,204,433,350,229,86,179,312,318,249,301,47,208,164,395,203,349,85,311,248,46,163,444,451,275,107,195,401,373,386,381,382,160,383,83,161,105,384,202,84,247,162,450,106,400,385};//multiplicationofGF(2‘9)unsignedshortprod(unsignedshortx,unsignedshorty){if(x==0Y==O)return0;else returnpow_tab[(109_tabFx]+log_tab[y])%511]GB/T27767--2011i*obtainingthecoefficientsofgeneratorpolynomialsoparameters+g:pointertoarrayofthecoefficientsofgeneratorpolynomialstobecalculated*g[i]isthecoefficentoftermofdegreei*k:numberoferrorcorrectioncodewordstobegenerated.Itequalstothedegreeof*thegeneratorpolynomial*/voidgenerator_polynomial(unsignedshort’g,intk){inti,J;if(k<=0k>=511)return;g[o]=1;for(i=1;i<=k;i++)g[i]=0;for(i=1;i<=k;i++){g[i]=g[i一1];for(J=i-i;J>=1;j一){g[j]=gFj一1]‘prod(g[j],pow_tah[i])}g[o]=prod(g[O],pow_tab[i]);) GB/T27767--2011E.1概述附录E(资料性附录)CM码符号生成示倒本附录是使用版本1、数据段数1、纠错4级的CM码符号编码“深圳矽感科技有限公司COMPACTMATRIX”的例子。E.2数据分析用附录B的选择方法,用汉字模式编码开头10个字符(“深圳矽感科技有限公司”),用大写字母模式编码后续的14个字符(“COMPACTMATRIX”)。E.3数据编码编码顺序如下:a)“0001”表示汉字模式;b)“深圳矽感科技有限公司”编码见表E.1;表E.1汉字编码字符十进制值二进制值深33420110IOOOOIIio圳5050100iIIOliIOio矽3833oIIIOIIIiIOOi感168000iioi0010000科2342oiOOlOOlOOIIO技2044ooiIIIIIIIioo有4272iooooloiIOOOO限390201lIIOOIIIIIO公173900iIOiIOOLOii司34860IioiIOOIIiioc)“1111111100011”(十进制8163)转换编码模式到大写字符}d)“COMPACTMATRIX”编码见表E.2; 表E.2大写字母编码GB/T27767--2011字符十进制值二进制值C2ooolOO1401110M1201100P1501111A000000C200010T1910011“空格”2611010M1201100A000000T1910011R1710001I801000X2310111e)“11011”(十进制27)表示数据编码结束。编码得到的二进制字符串是:(中间空格仅用于方便阅读,无任何意义)00010110100001110100111011101001110111110010011010010000010010010011000111111111001000010110000011110011111000110110010110110110011110jjjH|j10001j0001001jjO0jj00011jj000000001010011j101001j00000001001110001010001011111011分成9位一组的码字后需要3个填充位(圆括号中所示)来填充最后一个码字。000101101000011101001110111010011101111100100110100100000100100100110001111111110010000101100000111100111110001101100101101101100111101111111100011000100111001100011110000000010100111101001100000001001110001010001011111011(000)该数据需要25个码字。E.4纠错码字编码版本1、数据段数1、纠错4级的CM码符号总码字数为37个,其中26个数据码字,11个纠错码字,故需要一个填充码字。十进制的数据码字加上填充码字是:452911915748442036305510133263318108365317508196460240204892571131394720相应的11个Reed-Solomon纠错码字是:88504612534831172132218244428最后整个的二进制的位流是:37 26个数据和填充码字000i0110i0000Iil01001110iil0i00i110i1Iil00100ii01001000001001001001i000l11i11111001000010i1000001IIi001iill000ii01i00ioii01ioi1001lllOl11111li000Ii000i001110011000111i00000000iol0011110100110000000100111000l0i00010Il111011000000000000加上11个纠错码字001011000000ii0010111001i010i111110l1111000Il001110iol00001010ii010000100i0110110i10iili0000001ii00E5符号表示生成版本1、数据段数i的CM码功能图形及码字的排列顺序见图E图E.1版本1、数据段数1的CM码固定图形模式殛码宇排列顺序将数据码字与纠错码字填_凡后的结果见图E2,图E2填入数据码宇和纠错码宇后的码围E6掩模与格式信息E61按第{种掩模类型编码以下按第1种掩模类型为例演示格式信息与掩模的编码过程本码图只有一个数据段,格式信息如下数据段编号:00000数据段总数:0000038 GB/T27767--201纠错等级:011掩模类型:00码字交错标志:0将格式信息按4位一个码字分成4个码字;0000000000011000,十进制为:0,0,1,8。按6.9.2对格式信息进行纠错编码后得到11个纠错码字为:291210914041511。按6.9。3将格式信息填人图E.2所示码图,并按第1种掩模类型对码图进行掩模后得到的编码结果见图E.3。图E.3按第1种掩模类型的编码结果E.6.2确定选取的掩模类型对所有的4种掩模类型均按E.6.1的方法生成编码结果后,根据6.10.2计算各掩模类型的得分可以得到得分最低的是第3种掩模类型(193Hn,129HEX),最终编码结果见图E.4。图E.4最终编码结果 GB/T27767--20F1概谜附录F(规范性附录)CM码专有指标的质量评级要求本附录规定了采用GB/T23704对CM码符号印制质量进行评估时,功能图形污损和格式信息污掼指标的分缴方法。F2功能图形质量等级F21需评级的功能图形区域需评缎的功能图形区域包括(见图F1):a)符号的开始图形;b)符号的结束图形;c)符号的数据段分隔图形;d)符号的定位孔匿形;e)符号周围至少6个模块宽度的空白区。功能图形的质量等级为“上5个区块质量等墩的最低值R镕目$《&a目mm*&H■目$镕m目m±自g图F1CM码功能国形污损F22开始图形、结束图形质量评级根据参考译码算法得到的定位孔图形,计算模块的平均宽度。在CM码二值图像的开始图形位置以模块的平均宽度为间距采样扫描线(见图F2),计算各扫描线上条、空的个数及宽度。对单条扫描线,按如下方式评价其质量等缎:a)如果空的个数不是4的倍数,则该扫描线的质量等级为0。b)根据该扫描线上条、空的总宽度w和符号的版本数V,计算模块的理论宽度⋯w/(I5×V+3)。c)计算该扫描线上每个条渲的实际宽度与理论宽度的偏差。设条(或空)实际宽度为Ⅳ,,该条40 GB/T27767--201(或空)含T/个模块,则该条(或空)的理论宽度为n×mW,偏差计算公式为:d=ABs(W,一^×mw)/mw。所有条、空的最大偏差作为该扫描线的偏差。根据表F.1确定该扫描线的质量等级。1111三I|||三l弱三一三l三三三三三i图F.2开始圈形的采样扫描线表F.1开始图形、结束图形扫描线质量等级的阈值扫描线上条、空的最大偏差d等级出≤O.0840.08O.170所有扫描线的最高等级作为开始图形的质量等级。结束图形质量等级的检测方法与开始图形相同。F.2.3数据段分隔图形质量评级对CM码的一个数据段分隔图形的评级过程如下:a)对于每一个模块,根据GB/T23704中的方法计算该模块的调制度等级。由于数据段分隔图形的所有模块均为深色模块,如果一个模块的反射率高于整体阈值,则该模块的调制度等级为0。b)对于每一个调制度等级,假定所有低于这个等级的模块都是错误模块,连续的错误模块定义为一个错误模块段。根据错误模块个数占总个数的百分比、错误模块段的个数、错误模块段的最大长度三个参数,基于表F.2导出一个假定的质量等级。取调制度等级和假定的质量等级的较低值作为该调制度等级下的质量等级。c)分别计算每一个调制度等级下的质量等级,取最高值作为CM码的一个数据段分隔图形的质量等级。表F.2数据段分隔图形质量等级的阐值错误模块百分比错误模块段的个数错误模块段的最大长度等级0%O42%134926%31>6%>3O一个CM码符号有多个数据段分隔图形,对每个数据段分隔图形分别进行评级,所有数据段分隔41 图形等级的平均值作为数据段分隔图形的总质量等级,如果需要可以对该数值取整。F24定位孔图形质量评级定位孔图形按照数据段分段进行评级,每个数据段又分上、下两行定位孔段分别进行评级。每段定位孔在进行质量评级时应包舍该数据段左右两个数据段分隔图形与定位孔图形的重叠鄙分.见图F3。自&n&图F3定位孔段a)对于定位孔段的每一个模块,根据GB/TZ3704中的方法计算该模块的调制度等级,由于已知定位孔图形的设计深浅性质.对于任何模块,如果设计其为深,而其反射率高于整体阈值,或其设计为浅,而其反射宰低于整体阐值,则该模块的调制度等级为0。b)对于每一个调制度等级.假定所有低于这个等级的模块都是错误模块,基于表F3给出的阐值导出一个假定的质量等级.取调制度等级和假定的质量等级的较低值作为该调制度等级下的质量等级。c)分别计算每一个调制度等级下的质量等级.取最高值作为该定位孔段的质量等级。表F3定位孔段、空白区和格式信息质量等级的阐值镕式信息g级镕*楼*iH&错*模块∞十散5%15“一个CM码符号有多个定位孔段,对每个定位孔段分别进行评级.所有定位孔段等级的平均值作为定位孔图形的总质量等级,如果需要可以对该数值取整。F25空白区质量评级空白区环绕在整个符号周围.6个模块宽且空白区模块均为浅色.如果空白区某一模块的反射率低42 GB/T27767--2011于整体阈值,则认为是一个错误模块。在空白区内统计错误模块的数量,求出错误模块占总模块数的百分比,评级规则见表F.3。F.3格式信息质量等级CM码符号的每一数据段都包含~组格式信息模块,每组格式信息模块分别进行质量等级的评定。对于一组格式信息,如果格式信息不能被译码,那么该组格式信息质量等级为0,否则应根据以下方法确定分组的等级:a)对于每一个模块,根据GB/T23704中的方法计算该模块的调制度等级。由于已知模块设计的深浅性质,对于任何模块,如果设计其为深,而其反射率高于整体阙值,或其设计为浅,而其反射率低于整体阈值,则该模块的调制度等级为0。b)对于每一个调制度等级,假定所有低于这个等级的模块都是错误模块,基于表F.3给出的阈值导出一个假定的质量等级,取调制度等级和假定的质量等级的较低值作为该调制度等级下的质量等级。c)分别计算每一个调制度等级下的质量等级,取最高值作为该组格式信息的质量等级。格式信息质量等级应为各组格式信息质量等级的算术平均值,如果需要可以对该数值取整。F.4扫描分级单次扫描分级应为GB/T23704中规定的标准译码、符号反差、调制度、轴向不一致性、网格不一致性、未使用纠错以及本附录中规定的功能图形质量等级和格式信息质量等级8个指标中的最低值。 GB/T27767--2011G.1概述附录G(资料性附录)参考译码算法CM码被设计用于接触式扫描解码,扫描时应使扫描线平行于数据段分隔模式,从CM码的一侧(开始图形或结束图形)往另一侧进行扫描。参考译码算法要求扫描的速度近似均匀。G.2图像二值化将采集到的图像转化为灰阶图像,选取灰阶图像反射率最大值与最小值的中值作为全局阈值,并使用该阈值将图像转化为一系列深色与浅色像素组成的二值图像。G.3探测开始图形与结束图形在图像中寻找“深色一浅色一深色一浅色一深色一浅色一深色一浅色⋯⋯·一深色”的重复序列,且各块的相对宽度比例是3:2:1:1:1:2:2:3:⋯:3或3:⋯:3:2:2:1:1:1:2;3,确定开始图形的位置。对本译码算法,每一元素宽度的允许偏差为0.25(即比例为1的模块尺寸允许范围为0.75~1.25,比例为2的模块尺寸允许范围为1.75~2.25,比例为3的模块尺寸允许范围为2.75~3.25)。结束图形的探测方法与开始图形相同。结束图形的重复次数应当与开始图形的重复次数相同,并且方向相符,即如果开始图形的相对宽度比例是3:2:1:1:1:2:2:3~·:3,则结束图形的相对宽度比例应当为3:1:2:3:2;2;1:1:⋯:3;反之则结束图形的相对宽度比例应当为3:⋯;1:1;2:2:3:2:1{3。G.4探测定位孔图形开始图形与结束图形探测完成后,即可得到码图模块的高度。从左至右扫描码图的上边界,从边界向下在3个模块高度的范围内搜索定位孔图形,具体算法如下:a)从码图的边界向下3个模块高度范围内,若扫描线上的前三段为深色一浅色一深色,且这三段的总长度在2.5~3.5个模块高度的范围内,则认为该扫描线穿过一个定位孔(图G.1的扫描线A),否则认为该扫描线不穿过任何定位孔(图G.1的扫描线B)。b)当扫描到一条穿过定位孔的扫描线时,从它的浅色线段出发搜索浅色的连通区域,见图G.1的阴影部分。若该连通区域全部落在码图的边界向下的3个模块高度范围内,贝!I认为扫描得到一个定位孔,计算该连通区域的重心作为该定位孔的中心;否则认为该连通区域不是一个定位孔。c)若扫描得到一个定位孔,则下一扫描线移至该定位孔区域的右侧,否则下一扫描线为当前扫描线的右侧。d)使用相同的算法,可得到码图下边界的定位孔。 A:BG.5探测数据段分隔图形图C.1定位孔图形的探测GB/T27767--2011从左至右扫描整个码图,每一条扫描线与码图相交形成深色一浅色一深色⋯·的序列,若该序列同时满足以下三个条件则认为该扫描线穿过一个数据段分隔图形;a)浅色段的个数除以高度方向的模块数小于0.03;b)浅色段的最大长度小于或等于3个模块高度;c)所有浅色段的长度和占总长度的比例小于6%。若相邻的两条或多条扫描线同时穿过数据段分隔图形,则将其并人一个数据段分隔图形。G.6格式信息译码CM码的格式信息排列于数据段分陌图形的附近(见6.8和6.9.3)。根据已经探测得到的数据段分隔图形和定位孔图形,可以建立格式信息的采样网格。a)取紧临数据段分隔图形的4个定位孔中心,其中码图上下边界各两个。上边界的两个定位孔中心记为At、B-,下边界的两个定位孔中心记为Az、B。。A,B,的中点记为C,,A:Bz的中点记为cz。图G.2为将码图按逆时针方向旋转90。后的示意图。b)根据在开始图形与结束图形探测阶段得到的符号的版本数,可以计算出符号在高度方向的模块数,根据该数据在AtAz、B。B2、ctc2上分别进行等分建立采样网格,提取格式信息。c)对格式信息进行纠错译码可获得数据段编号、数据段的总段数、纠错等级、掩模类型、码字交错标志。当码图存在多个数据段时,对每个数据段分隔图形均需执行以上3个步骤进行格式信息译码。对版本1的码图,a)、b)两步建立采样网格时,需要用到数据段分隔图形旁边的6条采样线。lj_5_圈G.2格式信息采样示意图岛c242 GB/T27767--2011所有译码成功的格式信息应满足以下条件,否则认为解码失败:——数据段编号从开始图形到结束图形递增;——数据段总段数、纠错等级、掩模类型、码字交错标志全都保持不变;——设译码得到的数据段总数为s,至少应当有INT(S/2)个格式信息译码成功。G.7数据段分隔图形校验设s。、s。分别是两个译码成功的数据段的编号,记m=S。一S.一1,则理论上S。、S。之间应当有m个数据段分隔图形。若m=0,则不需要进行数据段分隔图形校验,否则需要进行校验。设s。、s。之间共探测到n个数据段分隔图形,分别记为s。,s:,⋯,s。。将s。和s-之间的码图平均分为m+l份,记平分的位置分别为Pt,Pz,⋯,P。,数据段分隔图形的长度记为L。数据段分隔图形校验的算法如下:a)对每一个平分位置P。,在st,sz,⋯,s。中搜索与Pi距离最近的数据段分隔图形,记为s.。若P.与s,之间的距离小于L/20,则保留s,作为s。、s。之间的第i个数据段分隔图形,否则按步骤b)在P。附近搜索数据段分厢图形。b)在以P,为中心,L/20为半径的长度范围内,按以下步骤计算每一条竖直扫描线的得分:1)浅色段的个数除以高度方向的模块数记为z;2)浅色段的最大长度除以模块高度记为y;3)所有浅色段的长度和占总长度的比例记为z;4)总得分W=z+y/100+=。若得分最小的扫描线的分值小于0.2,则该扫描线作为S。、S。之间的第i个数据段分隔图形,否则认为s。、s“之间的第i个数据段分隔图形搜索失败。G.8定位孔圈形校验定位孔图形的校验对每个数据段分别进行。每个数据段左右两侧各有一个数据段分隔图形,如果其中一个数据段分隔图形探测失败,则认为该数据段无法读取。即一个数据段分隔图形探测失败将导致其左右两个数据殷无法读取。根据本标准规定,一个数据段的上下两侧各有17个定位孔,定位孔中心之间的距离固定为2个模块的宽度,第一个与最后一个定位孔与数据段分隔图形之间的距离为1个模块的宽度。设一个数据段共探测到m个定位孔(见G.4),记为Ht,H2’.._,H。。根据该数据段的左右两个数据段分隔图形,可以计算出17个定位孔的理论位置P。,Pz,⋯,P”,定位孔中心之间的距离记为L。定位孔图形校验的算法如下:a)对每一个理论位置P。,在H-,H∥”,H。中搜索与P。距离最近的定位孔图形,记为H,。若P。与H,之间的距离小于L/IO,则保留H,作为该数据段的第i个定位孔图形,否则按步骤b)插值计算第i个定位孔图形的位置。b)需要插值的定位孔根据其前后的定位孔进行插值。设H。,H。两个定位孔之间需要插入k个定位孔,则将H。,H“的连线等分为^+i份,每个等分点即对应一个插值的定位孔。若总共需要插值的定位孔超过8个,则认为该数据段的定位孔图形探测失败。G.9数据采样对每个数据段分别进行采样。一个数据段的上下分别有17个定位孔,在每两个相邻的定位孔的中 GB/T27767--2011点插入一个参考点,共插入16个参考点,加上17个定位孔共33个参考点。以直线段连接码图上下对应的两个参考点,根据符号在高度方向的模块数,将该直线段进行等分建立采样网格,等分点即为采样点。每个数据段经数据采样后得到一个二进制数据矩阵。G.10去除掩模根据6.10的掩模方案和格式信息译码得到的掩模类型,用相应的掩模方式对符号的数据编码区域进行异或处理。G.11还原符号码字并纠错根据6.8所规定的码字排列顺序组装码字。如果总码字数大于511,则参照6.6.2的分块法则以及6.7.3的纠错块交错规则和格式信息中的码宇交错标志位还原码字顺序。每一纠错块分别应用Reed-Solomon纠错算法进行纠错后得到原始的数据码字。G.12数据位流解码错误码字被纠正后,将数据码字组装成二进制位流,按下面的流程译码二进制流即可还原数据:a)读取开头4位数据得到当前的解码数据类型}b)根据当前数据类型的编码规则,对二进制位流进行解码,直至遇到类型转换码;c)查类型转换代码表(表6),确定下一数据类型,如果为码流结束标志则整个译码过程结束,否则跳转到步骤b)。若数据流不是以数据结束标志结束,解码过程应当返回失败。'