本发明属于二维条码技术领域,在黑白汉信码结构原理的基础上,涉及一种彩色汉信码的编解码方法及算法设计,具体地说,涉及一种基于五进制原理的彩色汉信码的编解码器及方法。
背景技术:
彩色码汉信码是在黑白汉信码的基础上开发出来的一种新型条码技术。由于颜色特性的介入,相比黑白汉信码,彩色码汉信码能够在单位面积上存储更多的信息以及在视觉效果、图形可塑性和信息安全性等方面体现出来的优越,开始受到了人们的关注和青睐。随着互联网6g时代的到来,相信该技术能够被广泛于现代商业活动中,如广告推送、产品防伪溯源、数据下载、网站链接、商品交易、电子凭证、定位导航、车辆管理等等。
自从我国自主知识产权的黑白汉信码iso标准成功立项以来,学者们对彩色汉信码的研究还很少涉及,甚至处于停止不前的状态。但针对其它彩色条码的研究却屡见不鲜,从现有的研究成果来看,其编码技术方案主要有两种:
一种是基于二进制原理在黑白二维码基础上扩充第三维信息生成彩色条码的方案,可以实现4色、8色或16色的彩色条码。这类方案在编码过程中,为了达到信息位流压缩的目的,研究者们均采用ascii字符集与国标字符集相结合的方式,并利用多种模式指示符来标示数据类型的长度,尽可能提高信息位流的压缩比,比如,给出的数据编码模式有:数字模式、字母模式、数字字母混合模式、汉字模式、少数民族符号、终止符等。其主要存在三个方面的缺陷:一是对双字节或四字节的汉字编码时,二进制码值的位数会占据大量的存储空间;二是编码模式指示符位数达到1byte或7bit,同样占据了相当大的存储空间,尤其在对数字、字母及汉字互相混合的信息编码时,过多的模式指示符会导致有效信息的压缩比急剧下降;三是实现的条码颜色为2k色(k=1,2,3,…)],颜色少于4色,视觉上不够谐和,颜色多于8色,不利于现有技术设备对条码的检测与识别。
另一种是基于非二进制原理的r进制生成r色条码,能够实现r色条码。这类编码方案把条码的颜色数量控制在4色至8色之间,颜色的种类较为适中,也便于现有技术设备的检测识别。从现有文献来看,所采取的编码方案,在一定程度上减少了码值的位数,但依然延用了二进制原理编码方案中的多种模式指示符来标示数据类型的长度,并没有完全发挥出r进制编码的优势特点。
由于颜色的特性介入,彩色条码将面临不同光源下检测与识别的困难,并非颜色越丰富条码的各项性能就越好,而是要体现出是否具有较高的信息压缩比以及在异常光源下具有较低的误码识别率。那么到底采用何种进制数符的编码方案较为合理,目前还处在技术探讨阶段,尚未形成技术标准。
技术实现要素:
本发明的目的在于克服现有技术中存在的汉信码符号的二进制编码模式信息压缩比低的缺陷,提供一种彩色汉信码的编解码器及方法。其一,将输入的字符信息所对应的国标字符集二进制编码转换为五进制编码,则单字节转换为五进制数,码值位数在3位或4位之间;双字节转换为五进制数,码值位数在4位至7位之间;四字节转换为五进制数,码值位数在8位至10位之间,极大地缩短了信息位流的存储开销。其二,按码值的五进制位数不同,划分为4种长度的码值区间,分别用3种不同于五进制数符的十进制数符作为码值位数的标示符,以便区分不同位数的码值,并在编码时赋予指定的基本色,进一步减少编码位流的存储开销。其三,为了降低彩色汉信码的误码识别率,考虑到r进制可映射r色模块以及汉信码结构特点,本发明采取五进制数符与十进制数符结合的方案来映射颜色模块。其中,五进制数符依次映射为黑、红、绿、蓝、白颜色模块,并用于信息区编码;非五进制数符的十进制数符5、6、7分别映射为青、品红、黄颜色模块,作为码值位数指示符参于信息区编码并用于功能图形区编码。如此,信息编码区和功能图形区的模块可充分利用到这8种颜色来充实码图符号。实际上功能图形区模块可被映射为任意一种颜色,理由是功能图形区模块是用来符号定位及特征识别的,只要具备了适当的深浅对比度即可,不存在检测时颜色的精确识别问题。本发明生成的汉信码符号整体外观具有视觉上的美观性,在丰富条码色彩的同时提高了信息的压缩比。
其技术方案如下:
一种彩色汉信码的编解码器,其结构遵循黑白汉信码符号结构,由m×m个正方形模块组成的正方形阵列构成,包括:功能信息区、信息编码区和功能图形,其中功能图形区主要包括:寻像图形及分隔区、校正图形与辅助校正图形。码图符号四边外围不少于3模块宽的空白区域,共有84个版本符号,尺寸分别是23×23模块至189×189模块,每一版本相比前一版本的边长增加2个模块。
首先,将输入的字符信息所对应的国标字符集二进制编码转换为五进制编码,则单字节转换为五进制数,码值位数在3位或4位之间;双字节转换为五进制数,码值位数在4位至7位之间;四字节转换为五进制数,码值位数在8位至10位之间,极大地缩短了信息位流的存储开销。其次,按码值的五进制位数不同,划分为4种长度的码值区间,分别用3种不同于五进制数符的十进制数符作为码值位数的标示符,以便区分不同位数的码值,并在编码时赋予指定的颜色,进一步减少编码位流的存储开销。
码图符号的颜色映射采取五进制数符与十进制数符结合的方案来映射颜色模块。其中,五进制数符依次映射为黑、红、绿、蓝、白颜色模块,并用于信息区编码。特别强调:数符与颜色的映射可随机调整;非五进制数符的十进制数符5、6、7分别映射为青、品红、黄颜色模块,作为码值位数指示符参于信息区编码并用于功能图形区编码,十进制数符不限于5、6、7,还包括8、9。如此,信息编码区和功能图形区的模块可充分利用到这8种颜色来充实码图符号。
码图符号功能图形区模块的颜色,可被映射为任意一种颜色,理由是功能图形区模块是用来符号定位及特征识别的,只要具备了适当的深浅对比度即可,不存在检测时颜色的精确识别问题。
一种彩色汉信码的编解码方法,包括编码步骤和解码步骤,具体如下:
编码算法步骤:
step1:读入文本信息;
step2:获取机内码的十进制数据表示;
step3:转为五进制数符表示;
step4:用非五进制数符的十进制数符标识不同长度的码值;
step5:求出初始位流长度并转换为五进制数符;
step6:位流长度信息嵌入位流首部,形成信息位流1;
step7:生成纠错码;
step8:纠错码嵌入信息位流1,形成位流信息2;
step9:根据位流信息2的长度确定汉信码符号版本;
step10:根据版本容量与位流信息2长度的差额,随机生成相等数量的五进制数符,填充位流信息2,形成总信息位流。
step11:对总信息位流进行置乱处理。
step12:对置乱的信息位流的数符依次进行颜色映射,生成模块流。
step13:按照由上到下、从左到右的原则,分段嵌入信息区域各个子块。
step14:生成符号的信息区域图像。
功能信息区编码算法可参照信息编码区算法执行,但要遵循逆时针方向进行信息嵌入即可。
解码算法步骤:
step1:获取汉信码符号;
step2:符号处理:旋转、校正及缩放等;
step3:在功能信息区提取模块的颜色值,并转换为数组;
step4:根据编码时规定的长度,进行版本号、纠错等级以及置乱算法信息的读取;
step5:在信息编码区,根据版本号按照从上到下、从左到右的原则,提取符号各个模块的颜色值;
step6:连接各模块的值,组成十进制数字位流;
step7:根据置乱算法恢复被置乱的数字位流;
step8:利用编码时嵌入的长度信息进行纠错处理;
step9:去除长度信息、纠错信息及被填充的信息;
step10:按照模式标示符提取不同长度的码值,组成码值数组;
step11:码值数组译码为字符信息。
本发明的有益效果:
本发明选择5种基本颜色分别映射五进制数符,用于信息区模块的编码,其余3种基本颜色分别映射为异于五进制数符的十进制数符,作为字符码值位数的指示符参与编码,同时用于功能图形区模块的编码;按字符码值的位数差异,划分为4种长度区间,作为编码模式。该方案不仅缩短了字符码值的位数,而且还减少了编码模式指示符的类型及指示符的位数,进一步缩短了信息编码的位流长度,极大地提高了信息编码的压缩比以及单位面积的信息容量。实验结果表明,生成的彩色汉信码符号,信息压缩比高、单位面积信息容量大,色彩和谐并有利于设备识读。
附图说明
图1是本发明彩色汉信码的编解码器的结构示意图。
图2是本发明编码流程图;
图3是本发明解码流程图;
图4是二进制2色码图符号;
图5是二进制4色码图符号;
图6是二进制8色码图符号;
图7是本发明的五进制8色码图符号。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案作进一步详细地说明。
如图1所示,功能信息区用于记录符号版本、纠错等级、掩模类型的数据位流。信息编码区是对信息内容及其纠错码字进行编码的区域。功能图形用于条码符号的定位与特征识别,其中,校正图形用于确定条码矩阵模块的位置、辅助校正图形位于条码符号的边缘,起到同步符号中模块的作用。寻像图形由4部分构成,以不同方向置于符号的4个角,分别由7×7、5×5和3×3的深色模块组成。寻像图形分隔符宽度为一个模块,由白色模块组成,用来区分寻像图形模块或其它区域。
1实施方案
本发明的主要实施方案是:一方面,将输入的字符信息所对应的国标字符集二进制编码转换为五进制编码,则单字节转换的五进制数,码值位数为3位或4位;双字节转换的五进制数,码值位数为4位至7位;四字节转换的五进制数,码值位数为8位至10位,极大地缩短了码值位数的存储开销。另一方面,按五进制码值的位数,划分为4种长度的码值区间,分别用3种异于五进制数符的十进制数符作为码值位数的标示符,以便区分不同位数的码值,并在编码时赋予基本色,进一步减少编码位流的存储开销。这样既减少模式指示符的种类,又缩短了模式指示符的位数,达到了压缩信息位流的目的。4种码值区间的位数及标示符如表1所示。
表1码值区间的位数及标示符
表1中,标识符5、6、7为十进制数符,分别赋予的颜色为洋红(1,0,1)、青色(0,1,1)及黄色(1,1,0)。默认码值长度为7,无需标识符。从理论上来说,如果各种区间的字符均出现相等次数的情况下,则平均码长为:(4+5+7+11)/4=6.75。
2颜色映射
根据数据归一化后的rgb色彩空间模型可知,黑色(0,0,0)、红色(1,0,0)、绿色(0,1,0)、蓝色(0,0,1)、白色(1,1,1)、洋红(1,0,1)、青色(0,1,1)及黄色(1,1,0)这8种颜色位于模型的8个顶点位置,相互之间空间距离最大,容易区分识别,作为本发明中的颜色映射方案。因此,为了降低彩色条码的误码识别率,考虑到r进制可映射r色模块以及汉信码结构特点,本文中采取五进制数符与十进制数符结合的方案来映射颜色模块。其中,五进制数符依次映射为黑、红、绿、蓝、白颜色模块,并用于信息区编码;非五进制数符的十进制数符5、6、7分别映射为青、品红、黄颜色模块,作为码值位数指示符参于信息区编码并用于功能图形区编码。如此,信息编码区和功能图形区的模块可充分利用到这8种颜色来充实码图符号。实际上功能图形区模块还可被映射为任意一种颜色,理由是功能图形区模块是用来给符号定位及特征识别的,只要具备深浅对比即可,不存在检测时颜色的精确识别问题,可用其它颜色替代。这样生成的码图符号具有视觉上的美观性。数符与颜色映射关系见表2。
表2数符与颜色映射关系
3编、解码流程
本发明的编、解码流程图,分别如图2、图3所示。
4编码算法步骤
编码过程中,功能信息区编码算法可参照信息区编码算法执行,但要遵循逆时针方向进行信息嵌入的规则。文中重点给出信息区编码算法,步骤如下:
step1:读入文本信息;
step2:获取机内码的十进制数据表示;
step3:转为五进制数符表示;
step4:用非五进制数符的十进制数符标识不同长度的码值,见表1;
step5:求出初始位流长度并转换为五进制数符;
step6:位流长度信息嵌入位流首部,形成信息位流1;
step7:生成纠错码;
step8:纠错码嵌入信息位流1,形成位流信息2;
step9:根据位流信息2的长度确定汉信码符号版本;
step10:根据版本容量与位流信息2长度的差额,随机生成相等数量的五进制数符,填充位流信息2,形成总信息位流。
step11:对总信息位流进行置乱处理。
step12:对置乱的信息位流的数符依次进行颜色映射,生成模块流。
step13:按照由上到下、从左到右的原则,分段嵌入信息区域各个分块。
step14:生成符号的信息区域图像。
5解码算法步骤
功能信息区解码算法可参照信息区解码算法执行。信息区解码算法步骤如下:
step1:获取汉信码符号;
step2:符号处理:旋转、校正及缩放等;
step3:在功能信息区提取模块的颜色值,并转换为数组;
step4:根据编码时规定的长度,进行版本号、纠错等级以及置乱算法信息的读取;
step5:在信息编码区,根据版本号按照从上到下、从左到右的原则,提取符号各个模块的颜色值;
step6:连接各模块的值,组成十进制数字位流;
step7:根据置乱算法恢复被置乱的数字位流;
step8:利用编码时嵌入的长度信息进行纠错处理;
step9:去除长度信息、纠错信息及被填充的信息;
step10:按照模式标示符提取不同长度的码值,组成码值数组;
step11:码值数组译码为字符信息。
对于超过8种颜色的汉信码编码方案,如二进制原理16、32及256色方案,由于目前识读设备的技术限制,在异常光源情况下不利于检测识别,所以本发明在此不作讨论。
首先,针对基于二进制原理2色、4色、8色及基于五进制原理8色、六进制原理6色编码方案中的编码位数及压缩比进行对比分析,考虑到数据对比的简单性与合理性,本发明用一个字符的编码位数及压缩比进行分析对比。
(1)对双字节(或常用汉字)的一个字符的编码位数及压缩比进行比较,如表3所示。
表3不同编码方案的压缩比比较
表3中,二进制原理4色方案的编码位数:16/2及8/2均表示2bit映射一个彩色模块;二进制原理8色方案的编码位数:(16+2)/3及(8+1)/3均表示3bit映射一个彩色模块;而五进制原理8色方案对于双字节汉字编码采用默认7位数符,无需模式指示符。可以看出,本发明提供的基于五进制原理的编码方案压缩比最高(1:7),即表达一个双字节的字符仅需7个单位模块即可,具有绝对的优势。
(2)对单字节(ascii字符)的一个字符的编码位数及压缩比进行比较,如表4所示。
表4不同编码方案的压缩比比较
由表4可知,本发明提供的五进制原理的编码方案压缩比最高(1:4),即表达一个ascii字符仅需5个单位模块即可,依然具有优势。
其次,本发明针对相同内容的一段综合文字信息,分别利用二进制原理2色、4色、8色及五进制原理8色方案进行编码,生成彩色汉信码符号,从视觉角度观察编码容量大小。实验中读入的文字信息如:“银川,邮编750021,宁夏大学211高校;姓名:niu_wanhong;e-mail:29966314@qq.com;地址:银川西夏区文萃北街217#”。生成的彩色汉信码符号,分别如图4、图5、图6和图7所示。
图4、图5和图6显示出,二进制原理方案生成的2色、4色、8色汉信码符号的尺寸分别为37×37模块、31×31模块和29×29模块,即分别需要版本8、版本5及版本4来容纳上述的文字信息。而图7显示出,本文中五进制原理编码方案生成的8色汉信码符号的尺寸为27×27模块,只需要版本3即可容纳上述的文字信息。充分说明,如果用相同版本的汉信码符号进行字符编码,本发明提供的基于五进制原理8色方案生成的汉信码符号,可容纳更多的字符信息。另外,从颜色的数量来看,本发明生成的汉信码符号,由于结合了3个十进制数符作为标示符参与编码,编码区颜色数量一般在5到8种之间,有利于现有技术设备的检测与识别,具体数量取决于读入的字符信息。
本发明的技术方案属于宁夏自然科学基金(nz17023),西部一流大学科研创新项目(zkzd2017005)。
以上所述,仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换均落入本发明的保护范围内。