可嵌入大比例图形的二维码及其编码和解码设备的制造方法

文档序号:10921232阅读:209来源:国知局
可嵌入大比例图形的二维码及其编码和解码设备的制造方法
【专利摘要】本公开各实施例提供了可嵌入大比例图形的二维码及其编码和解码方法和设备,其中该二维码包括定位符、控制区、数据区和画布区,其中:所述定位符包括对所述二维码进行识别和定位的定位信息;所述控制区包括对所述二维码进行配置的配置信息,所述配置信息包括与所述二维码使用的二维码模板相对应的二维码模板信息;所述数据区包括与所述二维码代表的原始信息相对应的数据信息,所述数据区的位置和大小根据所述二维码模板来确定;所述画布区用于嵌入所述大比例图形,所述画布区的位置和大小根据所述二维码模板来确定。
【专利说明】
可嵌入大比例图形的二维码及其编码和解码设备
技术领域
[0001]本公开各实施例涉及二维码技术,特别涉及可嵌入大比例图形的二维码及其编码和解码设备。
【背景技术】
[0002]二维码(2-dimens1nal bar code)是用某种特定的几何图形按一定规律在平面(二维方向)上分布黑白相间的图形来记录数据符号信息。二维码在代码编制上巧妙地利用构成计算机内部逻辑基础的“O”、“I”比特流的概念,并使用若干个与二进制相对应的几何形体来表示文字数值信息,然后通过图像输入设备或光电扫描设备可以自动识读以实现信息自动处理。因此二维码具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时二维码还具有对不同行的信息自动识别功能、及处理图形旋转变化等。
[0003]国际上对二维码技术的研究始于20世纪80年代末,在二维码符号表示技术研究方面已研制出多种码制,常见的有PDF417、QR Code (如图1所示)、DM code (如图2所示)、Code 49,Code 16K、Code One等。这些二维码的信息密度都比传统的一维码有了较大提高,如TOF417的信息密度是一维码CodeC39的20多倍。在二维码标准化研究方面,国际自动识别制造商协会(AIM)、美国标准化协会(ANSI)已完成了H)F417、QR CodeXode 49,Code 16K、Code One等码制的符号标准。国际标准技术委员会和国际电工委员会还成立了条码自动识别技术委员会(IS0/IEC/JTC1/SC31),已制定了QR Code的国际标准(IS0/IEC 18004:2000《自动识别与数据采集技术一条码符号技术规范一QR码》),起草了PDF417、Code 16K、DataMatrix、Maxi Code等二维码的IS0/IEC标准草案。在二维码设备开发研制、生产方面,美国、日本等国的设备制造商生产的识读设备、符号生成设备,已广泛应用于各类二维码应用系统。二维码作为一种全新的信息存储、传递和识别技术,自诞生之日起就得到了世界上许多国家的关注。各国不仅已将二维码技术应用于公安、外交、军事等部门对各类证件的管理,而且也将二维码应用于例如:海关、税务等部门对各类报表和票据的管理;商业、交通运输等部门对商品及货物运输的管理;邮政部门对邮政包裹的管理;工业生产领域对工业生产线的自动化管理等。
[0004]随着移动互联网的发展,二维码的应用空间也越来越广泛。通过将相关信息编制成二维码,在移动设备(例如手机)中安装识读软件,可以使移动设备成为一个二维码识读器,主动识读各种场合下的二维码标志,获取内含的有效信息。
[0005]基于二维码的纠错功能,即使二维码部分被覆盖或丢失,扫描设备依然能够识别出其记录的完整信息,基于这样的原理,当前已有不少“个性二维码”的生成工具,可以把一些个性图案与二维码进行合成,从而得到个性化并能被扫描设备识别的二维码,这种“个性二维码”也开始流行起来。
[0006]如图3所示,在商业应用中,例如一种“个性二维码”的示例是通过在标准二维码的图片上,部分用企业logo图片进行覆盖,从而可以直观地显示二维条码与商家的关系。这种“个性二维码”存在以下缺点:
[0007]1.嵌入图像的大小不能超过原二维码面积的大约20%(这个比例与二维码大小、印刷质量等相关),在面积较小的标签识别码中,由于标签大小的限制,可以嵌入图像的面积比例会更小,例如图3中的嵌入图形面积约为二维码图形整体面积的6%。
[0008]2.降低了标准二维码在应用中的纠错能力。这是由于这种方法嵌入图像的原理是利用了标准二维码的纠错能力,在较小比例上覆盖标准二维码的部分区域时,标准二维码仍然可以通过自动纠错来解码数据。但是实际上对标准二维码本身,嵌入的图像仍然是一种干扰信息,因此降低了标准二维码在实际应用中纠错能力。
[0009]如图4所示,例如另一种“个性二维码”的示例是在图形当中嵌入标准二维码,比如图4中的“个性二维码”嵌入了一个标准二维码,然后在标准二维码的四周再装饰一些图案,看起来相当美观,然而这种“个性二维码”也存在以下缺点:
[0010]1.被嵌入的二维码的图片必须存在可以镂空的部分,如图4中卡通鸭的腹部是镂空的。
[0011]2.被嵌入的二维码的图片整体不能做得很小,这是因为图片要镂空再嵌入二维码,而二维码本身必须有足够的大小,才能被识读软件读取。
[0012]此外,目前来看,虽然标准二维码的生成与识别是一种国际标准通用,但是这种标准二维码用于防伪行业,存在易于复制和盗版的问题。

【发明内容】

[0013]针对现有二维码(例如个性二维码)所存在的不足,本公开的各实施例提出了一种可嵌入大比例图形的二维码,相应地,本公开的各实施例还提出了用于该二维码的编码方法、编码设备、解码方法、以及解码设备。
[0014]与现有技术(例如现有的个性二维码直接套用标准二维码的实现方式)相比,本公开的各实施例中的二维码采用了新的技术,特别定义了可嵌入大比例图形的画布区域,因此可以嵌入大比例图像。此外,该画布区域也是一种嵌入的可变形状的画布区域,因此使得二维码能够实现一种整体可变的外形,因此属于一种外形可变的二维码。
[0015]本公开的一个方面提供了一种可嵌入大比例图形的二维码,包括定位符、控制区、数据区和画布区,其中:
[0016]所述定位符包括对所述二维码进行识别和定位的定位信息;
[0017]所述控制区包括对所述二维码进行配置的配置信息,所述配置信息包括与所述二维码使用的二维码模板相对应的二维码模板信息;
[0018]所述数据区包括与所述二维码代表的原始信息相对应的数据信息,所述数据区的位置和大小根据所述二维码模板来确定;
[0019]所述画布区用于嵌入所述大比例图形,所述画布区的位置和大小根据所述二维码模板来确定。
[0020]根据本公开的一个实施例,所述定位信息包括定位符,所述二维码模板信息包括二维码模板编号,所述二维码模板存储于数据源中并且定义了所述二维码的形状和大小、以及所述数据区和所述画布区的位置和大小。
[0021]根据本公开的一个实施例,所述配置信息还包括以下各项中的至少一项:
[0022]I)掩码编号:定义了对所述数据信息进行转换运算的规则;
[0023]2)数据纠错等级编号:定义了对所述数据信息的纠错等级;
[0024]3)数据压缩方法编号:定义了对所述数据信息的压缩方法;
[0025]4)数据加密方法编号:定义了对所述数据信息的加密方法;
[0026]5)控制区纠错码:对所述配置信息计算得到控制区纠错码。
[0027]根据本公开的一个实施例,所述原始信息包括统一资源定位符,所述原始信息经编码以及以下各项中的至少一项后形成所述数据信息:压缩、加密、纠错码计算、以及掩码计算。
[0028]根据本公开的一个实施例,所述大比例图形包括图片和/或文字信息,所述二维码在识读时能够根据所述定位信息对所述二维码进行识别和定位,然后解读出所述控制区中的所述配置信息,以便根据所述配置信息中的二维码模板信息来获得所述二维码使用的二维码模板,所述二维码模板包括关于所述二维码的布局信息的数据点阵,所述数据点阵定义了所述二维码的形状和大小、以及所述数据区和所述画布区的位置和大小。
[0029]根据本公开的一个实施例,还包括间隔区,所述间隔区包括定位间隔区和数据间隔区;其中所述定位间隔区是所述定位符四周的空白,宽度为一个点阵基本元素;所述数据间隔区是所述数据区与所述画布区、和/或所述数据区与所述二维码外部的空白,宽度为一个点阵基本元素。
[0030]本公开的一个方面提供了一种可嵌入大比例图形的二维码的编码方法,包括:
[0031]选择二维码模板:所述二维码模板包括关于所述二维码的布局信息的数据点阵,选择的二维码模板要满足:所述布局信息定义的定位符、数据区和控制区不会覆盖到原始图片在画布区所要展示的内容,并且所述数据区能够容纳将要编码到所述二维码中的最大编码长度;
[0032]数据区编码:根据所述布局信息中关于所述数据区的定义将所述数据区的数据信息填充到所述数据点阵,所述数据信息是由所述二维码代表的原始信息经编码以及以下各项中的至少一项后形成的:压缩、加密、纠错码计算、以及掩码计算;
[0033]控制区编码:根据所述布局信息中关于所述控制区的定义将二维码模板编号、以及以下各项中的至少一项填充到所述数据点阵:掩码编号、数据纠错等级编号、数据压缩方法编号、数据加密方法编号、以及控制区纠错码;
[0034]生成二维码:根据所述布局信息中关于所述定位符和所述间隔区的定义将所述定位符和所述间隔区的编码填充到所述数据点阵,并将所述数据点阵转换为模板图片,然后将所述模板图片叠加到所述原始图片上,以形成所述可嵌入大比例图形的二维码。
[0035]本公开的一个方面提供了一种可嵌入大比例图形的二维码的编码设备,被配置为执行根据以上所述的可嵌入大比例图形的二维码的编码方法;或者被配置为生成以上所述的可嵌入大比例图形的二维码。
[0036]本公开的一个方面提供了一种可嵌入大比例图形的二维码的解码方法,包括:
[0037]二维码点阵转换:采集所述可嵌入大比例图形的二维码的图像并进行二值化处理,然后在生成的二值化图像中查找定位符,并根据所述定位符的位置将所述二值化图像转换为二维码点阵;
[0038]控制区解码:在所述二维码点阵中读取控制区编码,并对所述控制区编码进行解码以获得所述控制区的配置信息,所述配置信息包括二维码模板编号,以及以下各项中的至少一项:掩码编号、数据纠错等级编号、数据压缩方法编号、数据加密方法编号、以及控制区纠错码;
[0039]获取二维码模板:根据所述二维码模板编号,从数据源中获得所述二维码使用的二维码模板;
[0040]数据区解码:根据所述二维码模板关于数据区的定义,从所述二维码点阵读取所述数据区的数据信息,以获得所述二维码代表的原始信息。
[0041]本公开的一个方面提供了一种可嵌入大比例图形的二维码的解码设备,被配置为执行根据以上所述的可嵌入大比例图形的二维码的解码方法;或者被配置为识读以上所述的可嵌入大比例图形的二维码。
[0042]通过以上的实施例,可以提供一种可嵌入大比例图形的二维码及其编码和解码方法和设备。
【附图说明】
[0043]现将仅通过示例的方式,参考所附附图对本公开的实施例进行描述,其中
[0044]图1图示了QR 二维码的示意图;
[0045]图2图示了DM 二维码的示意图;
[0046]图3图示了个性二维码的示例的示意图;
[0047]图4图示了个性二维码的另一示例的示意图;
[0048]图5图示了根据本公开的实施例的可嵌入大比例图形的二维码的示意图;
[0049]图6图示了根据本公开的实施例的二维码模板的示意图;
[0050]图7图示了根据本公开的实施例的原始图片的示意图;
[0051]图8图示了根据本公开的实施例的二维码的编码流程示意图;
[0052]图9图示了根据本公开的实施例的二维码的解码流程示意图;
[0053]图10图示了根据本公开的实施例的“回”字形定位符;
[0054]图11图示了根据本公开的实施例的控制区的位置和码序示例;
[0055]图12图示了根据本公开的实施例的图像的二值化处理流程示例;
[0056]图13图示了根据本公开的实施例的未加掩码的数据区的示例;
[0057]图14图示了根据本公开的实施例的加上控制区数据的示例;以及
[0058]图15图示了根据本公开的实施例的二值化后的图像的示例。
【具体实施方式】
[0059]现将结合附图对本公开的实施例进行具体的描述。应当注意的是,附图中对相似的部件或者功能组件可能使用同样的数字标示。所附附图仅仅旨在说明本公开的实施例。本领域的技术人员可以在不偏离本公开精神和保护范围的基础上从下述描述得到替代的实施方式。
[0060]根据本公开的一个方面,提供了一种可嵌入大比例图形的二维码,本公开的可嵌入大比例图形的二维码是一种适应于例如行业应用和移动增值业务的新型二维码技术。
[0061][可嵌入大比例图形的二维码]
[0062]本公开的一个方面提供了一种可嵌入大比例图形的二维码,包括定位符、控制区、数据区和画布区,其中:
[0063]所述定位符包括对所述二维码进行识别和定位的定位信息(例如3个“回”字形的定位符);
[0064]所述控制区包括对所述二维码进行配置的配置信息(例如代表配置信息的编码),所述配置信息包括与所述二维码使用的二维码模板相对应的二维码模板信息(例如二维码模板编码);
[0065]所述数据区包括与所述二维码代表的原始信息相对应的数据信息(例如数据编码),所述数据区的位置和大小根据所述二维码模板来确定;
[0066]所述画布区用于嵌入所述大比例图形,所述画布区的位置和大小根据所述二维码模板来确定。
[0067]根据本公开的一个实施例,所述定位信息包括定位符(例如3个“回”字形的定位符),所述二维码模板信息包括二维码模板编号,所述二维码模板存储于数据源中并且定义了所述二维码的形状和大小、以及所述数据区和所述画布区的位置和大小。
[0068]根据本公开的一个实施例,所述配置信息还包括以下各项中的至少一项:
[0069]I)掩码编号:定义了对所述数据信息进行转换运算的规则;
[0070]2)数据纠错等级编号:定义了对所述数据信息的纠错等级;
[0071]3)数据压缩方法编号:定义了对所述数据信息的压缩方法;
[0072]4)数据加密方法编号:定义了对所述数据信息的加密方法;
[0073]5)控制区纠错码:对所述配置信息计算得到控制区纠错码。
[0074]根据本公开的一个实施例,所述原始信息包括统一资源定位符,所述原始信息经编码以及以下各项中的至少一项后形成所述数据信息:压缩、加密、纠错码计算、以及掩码计算。
[0075]根据本公开的一个实施例,所述大比例图形包括图片和/或文字信息,所述二维码在识读时能够根据所述定位信息对所述二维码进行识别和定位,然后解读出所述控制区中的所述配置信息,以便根据所述配置信息中的二维码模板信息来获得所述二维码使用的二维码模板,所述二维码模板包括关于所述二维码的布局信息的数据点阵,所述数据点阵定义了所述二维码的形状和大小、以及所述数据区和所述画布区的位置和大小。
[0076]根据本公开的一个实施例,还包括间隔区,所述间隔区包括定位间隔区和数据间隔区;其中所述定位间隔区是所述定位符四周的空白,宽度为一个点阵基本元素;所述数据间隔区是所述数据区与所述画布区、和/或所述数据区与所述二维码外部的空白,宽度为一个点阵基本元素。
[0077]例如,图5是根据本公开的实施例的可嵌入大比例图形的二维码的示意图。从图5中可以看到该新型的二维码例如是不规则形状的,并且原始图片(如图7所示)例如可以完全嵌入到这种二维码中。
[0078]这种二维码的大小、形状、数据部分和图像部分的布局例如是由二维码模板(如图6所示)来决定的。这种二维码例如通过二维码模板编号来指定使用的二维码模板。二维码模板例如可以是任何自定义的模板,理论上可以定义大量的不同形状和大小的模板,从而使得最终获得的二维码可以嵌入大比例图像,而且画布区可以任意定义,从而使得嵌入大比例图形的二维码中的画布区的图像呈现各种形状和样式,因此克服了现有技术的缺陷。
[0079]图6是根据本公开的实施例的二维码模板的示意图,其中描述了本公开的二维码的编码结构。这种二维码例如由定位符201、控制区202、数据区203、画布区204、以及间隔区205、206所组成。
[0080]控制区202例如包含了这个二维码的配置信息,该配置信息例如包括二维码模板编号、掩码编号、数据纠错等级编号、数据压缩方法编号、数据加密方法编号。控制区本身例如是独立进行纠错编码的。
[0081]数据区203例如是由一些深色和浅色的信息单元组成的,分别表示二进制的I或O。数据区203的位置是由二维码模板所决定的,而二维码模板编号例如编码在控制区202中。数据区203的所有信息单元,表示了包含纠错编码的M个字节的二进制数据。
[0082]数据区203中的数据,例如是二维码所代表的原始信息(例如网址等)的二进制编码。还可以在二进制编码上进行数据压缩和加密。
[0083]本公开提供的二维码,例如由定位符201、控制区202、数据区203、画布区204、间隔区205、206组成。而间隔区205、206例如包括了定位间隔区、画布间隔区、外部间隔区。该二维码可定义出大量不同形状、不同的信息量、不同画布大小和不同画面位置的二维码模板,并可以控制信息纠错编码的纠错等级,可控制信息的压缩方法,可控制信息的加密方法。具体的形状、信息量、画布大小位置、信息压缩和加密方法,可以根据应用需求进行配置。配置的信息例如保存在控制区202中。
[0084]在解码时,例如可以根据定位符201对二维码进行快速地识别和定位,然后解读出例如控制区202中的配置信息,获得例如二维码模板,从而动态地对二维码进行解码。
[0085]具体来说,例如本公开的二维码的组成如下:
[0086]1.定位符201:3个“回”字形的定位符201,每个回字的大小是7*7个点阵元素,其中横竖的笔画宽度都是一个点阵元素。从横向(竖向)看,回字都是7行(列),7行(列)的黑白宽度(高度)比例为:(参见图10);
[0087]第一行:黑7
[0088]第二行:黑1:白5:黑I
[0089]第三行:黑1:白1:黑3:白1:黑I
[0090]第四行:黑1:白!:黑!:白!:黑!:白!:黑!
[0091]第五行:黑1:白【:黑3:白1:黑I
[0092]第六行:黑1:白5:黑I
[0093]第七行:黑7
[0094]使用“回”字型定位符是为了在机器识别时快速与其他流行的二维码区分开来,同时人眼也可以直观地分辨出该型的二维码。
[0095]但是,应理解的是本公开中的“回”字型符可以在技术上略做改动,完全可以使用其它的符号作为定位符,也可能满足与其他二维码快速区分的要求。
[0096]2.控制区202:控制区202通常拆分成多个部分,分散在定位符201附近。控制区202包含的字节数和具体的位置,可以根据实际的需要进行调整。
[0097]例如,图11展示了一个以60位码长的二进制数表示的控制区。控制区位置以相对于定位符来表示。图11同时编制了一种编码序列。控制区点阵中每个点,在数字上对应一个比特,在图形上对应于一个深色或浅色的方块。在图形上的深浅色方块解码为比特之后,(解码过程例如可以参见二值化步骤),点阵中相应位置的比特,按从右到左,从上到下的顺序串接为一个60位码长的二进制数字。
[0098]控制区202包含二维码的配置信息,例如包括:
[0099]I) 二维码模板编号:二维码模板定义了一个二维码的形状、大小、数据区、画布区的位置和大小,还可以定义控制区和间隔区的位置和大小。
[0100]图2展示了一个二维码模板的实例。其中,二维码模板例如存储在模板数据源中,通过二维码模板编号检索到一套二维码模板。模板数据源可以是数据库、磁盘文件或云存储等任意的存储空间。二维码模板例如是一个数字点阵,模板规定了点阵的大小,以及点阵中每个点的功能,即每个点是属于或不属于二维码的,是属于二维码中定位符、控制区、间隔区、数据区还是画布区。
[0101]具体来说,二维码模板例如可以用一个N*M的二维数组来表示N*M的点阵,数组的每个元素用3个bit的代码来表示点的功能,如下表I所示:
[0102]表I
[0103]点的功能模板中元素的二进制代码
[0104]不属于二维码 000
[0105]201 定位区001
[0106]202 控制区010
[0107]203 数据区011
[0108]204 画布区100
[0109]205/206 间隔区 101
[0110]根据实际需要,二维码模板编号可以是从6位到18位的比特,编码容量为64个到256K个二维码模板。
[0111]2)掩码编号:一个掩码定义了一套对数据区编码进行转换计算的方法。通过对数据区编码进行特定的转换计算,可以避免数据区中出现影响到解码的排列组合,比如出现了与定位符相同的图案。
[0112]第一个转换计算的例子是隔行取反,即对数据区中所有偶数行(或奇数行)执行I/O的取反运算。
[0113]第二个例子是隔列取反。
[0114]根据实际需要,掩码编号可以是I位到3位比特,可以定义2-8种转换计算的方法。
[0115]在解码时,根据掩码编号,使用相同的转换计算,就可以去除掩码,得到原先的数据。
[0116]3)数据纠错等级编号:定义了对数据区编码的纠错等级。
[0117]数据区的数据信息例如使用Reed-Solomon纠错编码算法来计算纠错码。不同纠错等级提供了不同的纠错能力,如下表2所示。
[0118]表2
[0119]纠错等级纠错能力
[0120]I7%
[0121]2 15%
[0122] 3 25%
[0123]430%
[0124]数据区的长度是由二维码模板规定的,由数据区长度和纠错等级,可以计算出可纠错字节数、纠错码长度和有效数据长度。由纠错码长度和有效数据长度,可以使用例如Reed-So 1mon纠错算法计算出数据区的纠错码。
[0125]以图2所示的二维码模板为例,数据区是33个字节,第3个纠错等级要求25%纠错能力,则可知9是最小的整数,满足9 / 33 >= 25%,因此可纠错字节数为9。纠错编码字节错=可纠错字节数* 2,即需要18个字节的纠错编码。有效数据长度=数据区长度-纠错编码长度,即有15个字节的有效数据长度。
[0126]图2所示的二维码模板,在各个纠错等级下的计算结果例如为,如下表3所示:
[0127]表3
[0128]纠错等级数据区长度有效数据长度纠错编码字节数可纠错字节数纠错能力
[0129]I 33 27 6 3 9%
[0130]2 33 23 10 5 15%
[0131]3 33 15 18 9 27%
[0132]4 33 11 22 11 33%
[0133]数据纠错等级编号例如占用2个比特。
[0134]4)数据压缩方法编号:定义了对数据区203编码的压缩方法。
[0135]数据压缩方法编号指定了是否对数据进行压缩,以及使用哪种压缩方法来压缩数据。数据压缩方法可以是任意公开或未公开的压缩方法。比如Huffman编码。
[0136]数据压缩方法编号例如占用2至5个比特。
[0137]5)数据加密方法编号:定义了对数据区203编码的加密方法。
[0138]数据加密方法编号指定了是否对数据进行加密,以及使用哪种加密方法来加密数据。数据加密方法可以是任意公开或未公开的加密方法。比如DES或RSA算法。
[0139]数据加密方法编号例如占用2至5个比特。
[0140]6)控制区的纠错码:对控制区202编码计算得到纠错码。
[0141]控制区的有效控制数据,例如包括二维码模板编号、掩码编号、数据纠错等级编号编号、数据压缩方法编号、数据加密方法编号,串接一起一共13到33个比特,控制区中剩余47到27个比特作为纠错码。有效控制数据例如通过BCH编码算法计算得到控制区的纠错码。
[0142]3.数据区203:
[0143]控制区中的二维码模板编号指定了一个二维码模板,在二模码模板中,定义了数据区由点阵上哪些位置的点所组成。将所有这些组成数据区的点所代表的0/1按从右到左、从上到下的顺序串接成一串二进制数字,就构成了完整的数据区的编码。
[0144]数据区中的原始信息例如是内容的二进制编码。本公开并不限定原始信息进行二进制编码的方式。原始信息可以是数字、各国文字、或是多媒体等,其可以是所有二进制信息的混合,而且可以直接进行二进制编码。然后二进制的原始信息通过压缩、加密、纠错码计算和掩码计算一系列的步骤,最终得到的一串二进制数字,构成了完整的数据区的数据信息(例如数据编码)。
[0145]数据区中的原始信息也可以是一个网站URL,作为大量、实时信息的索引。应用程序解码得到URL后,可以使用URL访问网站得到大量的、实时更新的信息。
[0146]定位符、控制区、数据区一起构成了二维码的全部编码,在图像中,二维码点阵中的每个二值(1/0)由一个边长为D的方块表示,以深色、浅色分别表示1、0,深色、浅色都可以是彩色。
[0147]4.画布区204。
[0148]控制区中的二维码模板编号指定了一个二维码模板,在二模码模板中,定义了画布区的位置和大小形状。画布区是用来置入图片、文字信息的区域。只要图片、文字中没有出现可能干扰到数据解码的图案,任何图片、文字或组合都可以置入到画布区中。
[0149]在画布区中要避免出现的干扰图案,主要是要避免出现例如三个大小相同、且构成一个直角三角形的回字形图案。画布区中如果出现这样的图案,将可能误导解码。
[0150]5.定位间隔区205:“回”字形定位符四周的空白,宽度为一个点阵基本元素。
[0151]6.数据间隔区206:这是数据区与画布区、数据区与二维码外部之间,宽度为一个点阵元素的空白。
[0152]具体实施中,本公开中实施例的二维码,对应于不同的应用,二维码模板、加密算法,压缩算法,纠错编码算法、纠错等级、掩码,以及嵌入的图片都可以设定为不一样的数值,以满足不同的需要。并可以根据不同的需求将本公开的二维码设定为一种公开的可以满足广大需求的如QR码和DM码一样的公开的二维码(公码),也可以设定为不公开其加密算法或加密和解密参数的非公开二维码(私码)。
[0153]本公开各实施例的二维码的主要优点:
[0154]1.普通的二维码,使用固定的或规则的形状和尺寸,而本公开各实施例所公开的二维码的完全可以是不规则的形状和尺寸。
[0155]2.本公开各实施例的二维码,可以嵌入大比例的图像,而不损害二维码的纠错能力,可以更有效地设计出包含清晰图像的小型、微型二维码。
[0156]3.本公开各实施例的二维码,数据可以加密,而加密方法可以是公开的加密方法,比如DES,RSA等,或者使用定制的私有加密方法。
[0157]本公开各实施例的二维码可以应用于以下各个领域,但并不局限于这些领域:
[0158]1.防伪
[0159]2.防窜和物流管理
[0160]3.移动互联网。
[0161][可嵌入大比例图形的二维码的编码方法和设备]
[0162]本公开的一个方面提供了一种可嵌入大比例图形的二维码的编码方法,包括:
[0163]选择二维码模板:所述二维码模板包括关于所述二维码的布局信息的数据点阵,选择的二维码模板要满足:所述布局信息定义的定位符、数据区和控制区不会覆盖到原始图片在画布区所要展示的内容,并且所述数据区能够容纳将要编码到所述二维码中的最大编码长度;
[0164]数据区编码:根据所述布局信息中关于所述数据区的定义将所述数据区的数据信息填充到所述数据点阵,所述数据信息是由所述二维码代表的原始信息经编码以及以下各项中的至少一项后形成的:压缩、加密、纠错码计算、以及掩码计算;
[0165]控制区编码:根据所述布局信息中关于所述控制区的定义将二维码模板编号、以及以下各项中的至少一项填充到所述数据点阵:掩码编号、数据纠错等级编号、数据压缩方法编号、数据加密方法编号、以及控制区纠错码;
[0166]生成二维码:根据所述布局信息中关于所述定位符和所述间隔区的定义将所述定位符和所述间隔区的编码填充到所述数据点阵,并将所述数据点阵转换为模板图片,然后将所述模板图片叠加到所述原始图片上,以形成所述可嵌入大比例图形的二维码。
[0167]根据本公开的一个实施方式,例如可以提供了一种可嵌入大比例图形的二维码的编码方法,包括:
[0168]步骤1.获得要合成到二维码中的图片文件;
[0169]步骤2.对原始图片进行扫描检查,找出可能干扰解码的图案,具体的过程如下:
[0170]a)图像的二值化处理:将彩色图像转化为灰度图像,每个点以灰度值O到255来表示,再根据灰度值的分布找出合适的阀值,将每个点转换为I或O两个值;
[0171]b)图像的干扰图案检测:在二值化处理后的图像中,找出可能被识别为“回”字型定位符的图案;
[0172]步骤3.选择数据纠错等级编号,并根据需要选择是否对数据加密、压缩以及数据加密、压缩的方式;
[0173]步骤4.选择合适的二维码模板;二维码模板要满足:
[0174]a)定位区、数据区、间隔区不会覆盖到原始图片所要展现的主要内容;
[0175]b)数据区能够容纳将要编码到二维码中的最大编码长度;
[0176]步骤5.原始信息直接进行二进制编码,作为二维码原始数据,并根据是否选择对数据加密、压缩而对二维码原始数据进行加密、压缩;
[0177]步骤6.数据打包:在数据信息前面加上数据信息的长度信息,后面填充上任意固定数据,使编码数据长度等于规定的码字总长度;
[0178]步骤7.计算数据纠错码:对步骤6的结果计算纠错码,将纠错码放在有效数据后面,构成了全部数据区数据;
[0179]步骤8.填充数据区:将数据区数据的二进制码,按二维码模板中数据区的位置定义,逐位,按从右到左,从上到下的顺序填充到点阵中的数据区;
[0180]步骤9.加上掩码:判断步骤8生成的点阵中,数据区是否出现可能干扰到解码的图案,并使用掩码,对点阵进行转换运算以消除干扰图案;
[0181]步骤10.生成控制区数据:将二维码模板编号、掩码编号、纠错等级编号、压缩方法编号、加密方法编号,按顺序串接到一起,组成了控制区的有效数据;
[0182]步骤11.计算控制区纠错码:对控制区的有效数据计算出纠错码,放在有效数据后面,构成了全部控制区数据;
[0183]步骤12.将控制区数据,按二维码模板中的定义,填充到点阵中的控制区;
[0184]步骤13.按二维码模板中的定义,将固定的定位符,填充到点阵中的定位区;
[0185]步骤14.将点阵转换为二维码图片,并将二维码图片叠加到原始图片上,形成完整的可嵌入大比例图形的二维码。
[0186]例如,本公开可嵌入大比例图形的二维码的解码方法,可以包括如下具体步骤:
[0187]1.获得(例如客户给出)要合成到二维码中的图片文件;
[0188]2.对原始图片(例如使用开发的计算机软件)进行扫描检查,找出可能干扰解码的图案。主要是要避免出现三个大小相同、且构成一个直角三角形的回字形图案。如果原始图片符合条件,可以进入下一个步骤。否则,客户根据检查的结果修改图片。扫描检查具体包括两个子步骤:
[0189]a)图像的二值化处理:将彩色图像转化为灰度图像,每个点以灰度值0到255来表示。从中找出最大的灰度值和最小的灰度值,再根据灰度值的分布找出合适的阀值,将每个点转换为1或〇两个值。这一步骤和后文的解码过程中的第2个步骤“图像的二值化处理”是基本相同的,这里先不展开。[〇19〇] b)图像的干扰图案检测:在二值化处理后的图像点阵中,找出三个大小相同、且构成一个直角三角形的回字形图案。这一步骤和后文的解码过程中的第3个步骤“定位符的检测”是基本相同的,这里先不展开。
[0191]3.选择数据纠错等级编号。数据纠错等级编号是要根据二维码的大小、印刷(显示)质量、印刷(显示)媒介、使用场合等具体的应用需求来选择的。一般来说,二维码标签越小、印刷质量越差、使用场合较为复杂,就需要更高的纠错等级。
[0192]4.选择数据加密、压缩的方式。根据应用的具体需求来选择。[〇193]5.挑选合适的二维码模板。二维码模板要满足于:
[0194]a)定位区、数据区、间隔区不会覆盖到原始图片所要展现的主要内容
[0195]b)数据区可以容纳将要编码到二维码中的最大编码长度。原始信息量可以例如从需求调研中得到,然后可以根据数据加密、压缩方式计算出经过加密、压缩处理后的编码长度,再根据数据纠错等级编号,计算出需要保存的最大编码长度。
[0196]确定了二维码模板,则数据区的长度就确定了。同时根据数据纠错等级编号,可以计算得出有效数据长度(计算方法例如参见上文提到的“数据纠错等级编号编号”)。
[0197]6.原始信息直接进行二进制编码,作为二维码原始数据。
[0198]7.对原始数据进行加密,这一步是可选步骤;[〇199]8.对加密数据进行压缩,这一步是可选步骤。
[0200]9.数据打包:计算压缩数据的编码长度,以字节数表示,放置在压缩数据前面。如果数据区的总长度不大于255个字节,则数据长度以1个字节表示。如果数据区的总长度在 256-65535个字节之间,则数据长度以2个字节表示,依此类推。
[0201]如果编码长度小于有效数据长度,则在压缩数据后面填满任意固定数据。
[0202]10.计算数据纠错码:对上一步的结果,例如用Reed-Solomon算法计算纠错码,将纠错码放在有效数据后面,构成了全部数据区数据。[〇2〇3]11.填充数据区:将数据区数据的二进制码,按二维码模板中数据区的位置定义,逐位,按从右到左,从上到下的顺序填充到点阵中的数据区。
[0204]12.加上掩码:判断上一步生成的点阵中,数据区是否出现可能干扰到解码的图案,比如出现了“回”字形的图案。使用掩码,对点阵进行转换运算,可以消除干扰图案。
[0205]13.生成控制区数据:将二维码模板编号、掩码编号、纠错等级编号、压缩方法编号、加密方法编号,按顺序串接到一起,组成了控制区的有效数据。
[0206]14.计算控制区纠错码:对控制区的有效数据例如用BCH算法计算出纠错码,放在有效数据后面,构成了全部控制区数据。
[0207]15.将控制区数据,按二维码模板中的定义,填充到点阵中的控制区。[〇2〇8]16.按二维码模板中的定义,将固定的定位符,填充到点阵中的定位区。[〇2〇9]17.将点阵转换为二维码图片。点阵中的每个点按1或0,分别映射为图片中一个长宽为m*n像素的深色或浅色方块。深色方块对应的灰度值应大于画布区中像素的最大灰度值,浅色方块对应的灰度值应小于画布区中像素的最小灰度值。
[0210]方块的长度为[〇211] m =二维码的印刷(显示)宽度/点阵的列数*印刷(显示冲每单位长度的像素数[〇212]方块的宽度为[〇213] n =二维码的印刷(显示)高度/点阵的行数*印刷(显示冲每单位宽度的像素数
[0214]18.将二维码图片叠加到原始图片上,形成完整的嵌入图片的二维码。
[0215]举例来说,如图8所示,图8是本发明所公开的二维码的编码流程,对本二维码的编码过程进行说明,其详细说明如下:
[0216]1.检测准备要嵌入的原始图片。以图3为例,由检测软件对原始图像进行二值化处理,然后检测图像,找出可能被识别为“回”字型定位符的图案。如果存在这样的图案,标识出来,交给美工修改图片。[〇217]2.选择数据纠错等级编号。在示例中使用第1个纠错等级,纠错能力为9%。
[0218]3.选择数据加密、压缩的方式。在示例中依简化介绍的目的,不使用加密和压缩。 使用或不使用加密、压缩,或使用何种方式的加密、压缩方式,不影响编码解码的流程。
[0219]4.挑选一个二维码模板。根据原始图片的特征,以及需要的信息容量和纠错等级, 人工选择一个合适的二维码模板。示例中使用图2所示的二维码模板。
[0220]由二维码模板可知,数据区长度为33个字节,则可纠错字节数为最小的整数n,满足n / 33彡9%,可知n = 3。因此纠错编码字节数=n * 2 = 6个字节,有效数据长度= 数据区长度-纠错编码字节数=27个字节。
[0221]5.从原始信息读取二进制码。示例中要编码的原始信息为“可嵌入大比例图形的二维码”,其Unicode字符集下的二进制码为(EF 53 4C ro 65 51 27 59 D4 6B 8B 4F FE 56 62 5F 84 76 8C 4E F4 7E 01 78)16
[0222]6.加密。读入原始信息,根据参数对信息进行可选的加密处理。本示例不需要加您I_Lj 〇
[0223]7.压缩。对上一步的结果进行可选的压缩处理。本示例不需要数据压缩。
[0224]8.数据打包。把上一步的结果的字节数放在包的最前面,然后放入上一步的结果数据,最后填充上一串0或者其他任意数据,使数据包长度达到规定长度。
[0225]本字例数据的字节长度是24,表示长度的包头本身再占用1个字节,包尾补上2个字节的0,凑足27个字节的有效数据长度。因此数据包为
[0226](18 EF 53 4C 5D 65 51 27 59 D4 6B 8B 4F FE 56 62 5F 84 76 8C 4E F4 7E 01 78 00 00)16
[0227]9.计算纠错码。。对上一步结果的数据包,用BCH算法计算出6个字节的纠错码(BD C4 55 61 79 E6) 16,将纠错码加到有效数据后面,得
[0228](18 EF 53 4C 5D 65 51 27 59 D4 6B 8B 4F FE 56 62 5F 84 76 8C 4E F4 7E 01 78 00 00 BD C4 55 61 79 E6)16
[0229]10.生成初步数据点阵。按模板中定义的数据区位置,将上一步数据的二进制值是:
[0230](000110001110111101010011010011000101110101100101010100010010011101011001110101000110101110001011010011111111111001010110011000100101111110000100011101101000110001001110111101000111111000000001011110000000000000000000101111011100010001010101011000010111100111100110)2
[0231]将该值逐位,按从右到左,从上到下的顺序填充到点阵中的数据区。结果见图13。
[0232]11.加上掩码。在上一步生成的数据点阵中,判断数据区是否出现了可能干扰到解码的图案,比如出现了“回”字的图案的点阵。如果出现了,在预定义的若干种掩码中,选择结果最优的一种,对初步数据点阵应用掩码进行转换,消除干扰图案。
[0233]由于示例的数据点阵中不出现“回”字形的图案,不需要在数据上加掩码。
[0234]假如出现了“回”字形图案,选择掩码运算来消除干扰图案。第一个掩码运算方法的例子是隔行取反,即对数据区中所有偶数行(或奇数行)执行1/0的取反运算。
[0235]第二个例子是隔列取反。选择不同的掩码运算方法进行试算,如果试算的结果中不出现干扰图案,那么就可以使用这个掩码。
[0236]12.生成控制区数据。将前面步骤中确定的二维码模板编号、纠错等级编号、掩码编号、数据压缩方法编号、数据加密方法编号,串接起来组成控制区的有效数据。
[0237]在本例中,设二维码模板编号为(0000 0001 1100)2,纠错等级编号为(00)2,掩码编号为(000)2,压缩方法编号为(000)2,加密方法编号为(0000)2,则控制区的有效数据为 (0000 0001 1100 0000 0000 0000)2即(01 C0 00)16。
[0238]13.计算控制区纠错码。对控制区的有效数据用BCH算法计算出纠错码,放在有效数据后面,构成了全部控制区数据。
[0239]对控制区有效数据(01 C0 00)16用此11算法逐字节计算出每字节121^丨、总共 36bit的纠错码,按顺序串在一起,结果为(49 F2 37 00 0)16.将纠错码加到控制区有效数据后面,为(01 C0 00 49 F2 37 00 0)16.构成了全部控制区数据。[〇24〇]14.将控制区数据,按二维码模板中的定义的控制区位置,按从右到左,从上到下的顺序,填充到点阵中的控制区。结果见图14。
[0241]15.按二维码模板中的定义,将固定的定位符,填充到点阵中的定位区。
[0242]16.将数据点阵转换为二维码图案。点阵中的每个点按1或0,分别映射为图片中一个长宽为m*n像素的深色或浅色方块。深色方块对应的灰度值应大于画布区中像素的最大灰度值,浅色方块对应的灰度值应小于画布区中像素的最小灰度值。在示例中深色块RGB= (255,255,255),浅色块RGB=(0,0,0),m = n = 5,在300DPI的输出设备上,二维码本身的边长为73 * 5/ 300217英寸?3.089厘米。
[0243]17.将二维码图案叠加到原始图片中。形成完整的二维码,输出到文件或者屏幕、 打印机等外设上。结果见图1的实例。
[0244]相应地,根据本公开的一个方面,还提供了一种可嵌入大比例图形的二维码的编码设备,被配置为执行根据以上所述的可嵌入大比例图形的二维码的编码方法;或者被配置为生成以上所述的可嵌入大比例图形的二维码。
[0245]例如,本公开的编码设备可以在具有许多类型的计算机系统配置(包括个人计算机、桌面型计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或者可编程的客户电子装置、网络PC、小型计算机、大型计算机、移动电话、PDA、写字板、寻呼机、路由器、交换机等)的网络计算环境中实践,也可以在分布式系统环境中实践,其中通过网络链接(通过硬接线数据链路、无线数据链路或者通过硬接线和无线数据链路的组合)的本地和远程计算机系统二者执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
[0246]例如,本公开的编码设备可以实施为具有无线通信功能的移动设备。然而,可以理解,这仅仅是示例性而非限制性的。其他类型的移动终端也可以容易地采用本公开的实施方式,诸如便携式数字助理(PDA)、寻呼机、移动计算机、移动电视、游戏设备、膝上型计算机、照相机、录像机、GPS设备以及其他类型的语音和文本通信系统。诸如车载式移动终端之类的固定式移动终端同样可以容易地使用本公开的实施方式。
[0247][可嵌入大比例图形的二维码的解码方法和设备]
[0248]本公开的一个方面提供了一种可嵌入大比例图形的二维码的解码方法,包括:
[0249]二维码点阵转换:采集所述可嵌入大比例图形的二维码的图像并进行二值化处理,然后在生成的二值化图像中查找定位符,并根据所述定位符的位置将所述二值化图像转换为二维码点阵;[〇25〇]控制区解码:在所述二维码点阵中读取控制区编码,并对所述控制区编码进行解码以获得所述控制区的配置信息,所述配置信息包括二维码模板编号,以及以下各项中的至少一项:掩码编号、数据纠错等级编号、数据压缩方法编号、数据加密方法编号、以及控制区纠错码;
[0251]获取二维码模板:根据所述二维码模板编号,从数据源中获得所述二维码使用的二维码模板;
[0252]数据区解码:根据所述二维码模板关于数据区的定义,从所述二维码点阵读取所述数据区的数据信息,以获得所述二维码代表的原始信息。
[0253]根据本公开的一个实施方式,提供了一种可嵌入大比例图形的二维码的解码方法,包括:
[0254]步骤1.图像采集:通过图像采集设备采集可嵌入大比例图形的二维码的图像信号,将采集到的模拟信号转换为数字信号输出;
[0255]步骤2.图像的二值化处理:将彩色图像转化为灰度图像,每个点以灰度值0到255 来表示;再根据灰度值的分布找出合适的阀值,将每个点转换为1或〇两个值;
[0256]步骤3.定位符的检测:从二值化的图像中,寻找三个“回”字型的定位符号;如果无法找到,说明这幅图像不是要解码的二维码;如果找到了三个“回”字型定位符,根据其相对位置,能够找出对应于左上角的定位符;
[0257]步骤4.转换为二维码点阵:找到了三个定位符,二维码图像的位置能够确定,每个信息单元大小也能够根据找到的定位符图案来确定;使用图形透视转换方法,按信息单元的大小,将二值化图像转换为二维码点阵;
[0258]步骤5.控制区信息读取:在二维码点阵中,控制区的位置是相对固定的,因此,从二维码点阵中,能够直接读取控制区编码;对控制区编码进行纠错解码,得到控制区数据, 包括了二维码模板编号、掩码编号、数据纠错编号、压缩方法编号和加密方法编号;
[0259]步骤6.检索二维码模板:使用二维码模板编号,从模板数据源中检索到二维码模板数据;[〇26〇]步骤7.消除数据区掩码:从二维码模板中,能够得知数据区的位置,然后根据控制区中定义的掩码编号,用相应的掩码算法来消除数据区点阵中的掩码;
[0261]步骤8.获取数据区编码:按数据区的位置,在二维码点阵中读取数据区编码;
[0262]步骤9.数据区纠错解码:按控制区中定义的数据纠错编号对数据区编码进行纠错解码;
[0263]步骤10.数据解包:纠错解码后的数据区编码,从数据包中获取到数据信息;
[0264]步骤11.信息解压和解密:按控制区中定义的压缩方法编号和加密方法编号,对数据信息进行解压缩和解密,得到原始数据信息;如果在编码的时候没有进行压缩和加密,则该步骤能够跳过;
[0265]步骤12.输出解码得到的原始数据信息。
[0266]例如,本公开的可嵌入大比例图形的二维码的解码方法,可以包含以下具体步骤:
[0267]1.图像采集:通过图像采集设备采集二维码图像信号,将采集到的模拟信号转换为数字信号输出。
[0268]2.图像的二值化处理:参考图12,分两步将数字彩色图像转化为1/0两个值的点阵。
[0269]a)将数字彩色图像转化为灰度图像,每个像素点以灰度值0到255来表示。
[0270]转换的经验公式为 Gray = (R*l%95 + G*38469 + B*7472) / ( 2 I6)
[0271]上述公式中,代入每个像素点的RecUGreeruBlue值,得到相应的灰度值;[〇272] b)再根据灰度值的分布找出合适的阀值,将每个值为0到255的点转换为1或0两个值;
[0273] 该步骤例如可以将灰度图像切隔为X * Y个小块,每个小块的大小为n * n,边缘区域切割出来的小块大小可以不足n * n。对每一个小块中的像素点,计算出灰度值分布的直方图,找出直方图中的两个峰值。设灰度值较大的峰值为P1,相应的灰度值为VI;灰度值较小的峰值为P2,相应的灰度值为V2。然后在VI和V2之间找出谷值P3,相应的灰度值V3,满足V3与VI和V2尽量远,同时P3尽量小两个条件。经验公式是
[0274]R = (V3 - VI) 2 * (V3 - V2) 2 * (P1- P3) * (P2 - P3)
[0275]即在VI和V2之间找到最小的R值,相应的V3作为谷值。最后V3用作该小块中的阀值,小块中所有灰度值不大于V3的点转换为1,灰度值大于V3的点转换为0。
[0276]3.定位符的检测:从二值化的图像中,寻找三个“回”字型的定位符。具体步骤例如可以是:
[0277]a)逐行检查二值化的点阵,寻找符合黑白宽度比例为(黑1:白1:黑1: 白1:黑1:白1:黑1)的水平线段,得到中点C及线段长度S1。然后以C点为中心检测垂直方向和对角方向,如果垂直方向和对角方向都出现了以C点为中心的,符合一定黑白长度比例(黑1:白1:黑1:白1:黑1:白1:黑1)的线段,并且垂直线段的长度S2与S1相差10%以内,对角线段的长度S3、S4与S1相差50%以内,则可认为找到了一个 “回”字形定位符号,记下C点和线段长度S,其中S= (SI + S2)/2;
[0278]b)在二值化图像中继续扫描,找到所有符合判断条件的C和S;
[0279]c)如果最后找到的C少于3个,则认为这幅图像不是本发明的二维码。如果最后找到的C多于3个,则挑选出其中S值最接近于S平均值的3个C点;[〇28〇] d)挑选出来的3个点,构成了一个顶点为XYZ的三角形。找出三角形中最长的一条边,设为XZ,则Y点可对应于二维码中左上角的定位符中心,X点和Z点分别对应于左下角和右上角的定位符中心。
[0281]4.转换为二维码点阵:按透视旋转定律,使用透视变换方法,将二值图像变换为透视二值图像二维码点阵。方法是:[0282 ] a)通过连接X点和Y点的辅助线,使用Br e s enham直线算法,计算出定位符的高度; [〇283] b)同理通过连接Y点和Z点的辅助线,计算出定位符的宽度;
[0284] c)点阵元素的边长D =(定位符高度+定位符宽度)/ 14
[0285](1)建立新的平面坐标,其中有乂’、¥’、2’三个点,对应于原乂、¥、2三个点,而且父’ Y’与Y’Z’之间的夹角为直角。D(x,y)表示两点之间的距离,则
[0286]D(X,,Y,)= D(X,Y) / D
[0287]D(Y,,Z,)= D(Y,Z) /D
[0288]e)使用透视变换方法,将对应于点XYZ的二值图像,转换到对应于点X’ Y’ Z’的二维码点阵。
[0289]5.控制区信息读取:在二维码点阵中,控制区的位置是固定的,因此,可以从二维码点阵中,直接读取控制区编码。对控制区编码进行BCH纠错解码后,得到控制区的数据,包括了二维码模板编号、掩码编号、数据纠错编号、压缩方法编号、加密方法编号。[〇29〇]6.检索二维码模板:使用二维码模板编号,从模板数据源中检索到二维码模板数据。模板数据源可以是数据库、磁盘文件或云存储等任意的存储空间。
[0291]7.消除数据区掩码:从二维码模板中,可以得知数据区的位置。然后根据控制区中定义的掩码编号,用相应的掩码算法来消除数据区点阵中的掩码。
[0292]8.获取数据区编码:按数据区的位置,在二维码点阵中读取数据区编码。
[0293]9.数据区纠错解码:按控制区中定义的数据纠错编号对数据区编码进行纠错解码。
[0294]10.数据解包:纠错解码后的数据区编码,前面的1个或几个字节(由数据区长度决定),即是实际的数据字节数。从数据区编码中读出数据。
[0295]11.信息解压:按控制区中定义的压缩方法编号,对数据进行解压缩。如果在编码的时候没有进行压缩,这一步可以跳过。
[0296]12.解密:按控制区中定义的加密方法编号,对数据进行解密。如果在编码的时候没有进行加密,这一步可以跳过。
[0297]13.得到了编码到二维码中的原始二进制信息。
[0298]举例来说,如图9所示,图9是本发明所公开的二维码的解码流程,对本公开的二维码的解码过程进行说明,其详细说明如下:[〇299]1.图像采集:通过图像采集设备采集二维码图像信号,将采集到的模拟信号转换为数字信号,生成彩色图像。以图1为例,图1是宽365个像素,高382个像素的图像,这里用灰度图进行说明,但实际使用中可以使用彩色图。
[0300]2.图像的二值化处理:参考图12,分两步将数字彩色图像转化为1/0两个值的点阵。
[0301]a)将数字彩色图像转化为灰度图像,每个像素点以灰度值0到255来表示。
[0302]转换的经验公式为 Gray = (R*l%95 + G*38469 + B*7472) / ( 2 I6)[〇3〇3]上述公式中,代入每个像素点的RecUGreeruBlue值,得到相应的灰度值。[〇3〇4] b)再根据灰度值的分布找出合适的阀值,将每个值为0到255的点转换为1或0两个值。
[0305] 该步骤例如可以将灰度图像切隔为X * Y个小块,每个小块的大小为n * n,边缘区域切割出来的小块大小可以不足n * n。
[0306] 在本示例中,设n = 8,则X = 365 / 8 ?46,Y =382 / 8?48
[0307]对每一个小块中的像素点,计算出灰度值分布的直方图,找出直方图中的两个峰值。设灰度值较大的峰值为P1,相应的灰度值为VI;灰度值较小的峰值为P2,相应的灰度值为V2。然后在VI和V2之间找出谷值P3,相应的灰度值V3,满足V3与VI和V2尽量远,同时P3尽量小两个条件。经验公式是
[0308]R = (V3 - VI) 2 * (V3 - V2) 2 * (P1- P3) * (P2 - P3)[0309 ]即在V1和V2之间找到最小的R值,相应的V3作为谷值。最后V3用作该小块中的阀值,小块中所有灰度值不大于V3的点转换为1,灰度值大于V3的点转换为0。[〇31〇]二值化的处理结果,例如参见图15所示。[〇311]3.定位符的检测:从二值化的图像中,寻找三个“回”字型的定位符号。
[0312] a)逐行检查二值化的点阵,寻找符合黑白宽度比例为(黑1:白1:黑1: 白1:黑1:白1:黑1)的水平线段,得到中点C及线段长度S1。然后以C点为中心检测垂直方向和对角方向,如果垂直方向和对角方向都出现了以C点为中心的,符合一定黑白长度比例(黑1:白1:黑1:白1:黑1:白1:黑1)的线段,并且垂直线段的长度S2与S1相差10%以内,对角线段的长度S3、S4与S1相差50%以内,则可认为找到了一个 “回”字形定位符号,记下C点和线段长度S,其中S= (SI + S2)/2;[〇313] b)在二值化图像中继续扫描,找到所有符合判断条件的C和S;
[0314] c)如果最后找到的C少于3个,则认为这幅图像不是本公开的二维码。如果最后找到的C多于3个,则挑选出其中S值最接近于S平均值的3个C点;[〇315] d)挑选出来的3个点,构成了一个顶点为XYZ的三角形。找出三角形中最长的一条边,设为XZ,则Y点可对应于二维码中左上角的定位符中心,X点和Z点分别对应于左下角和右上角的定位符中心;[〇316] e)在本示例的二值化图像中,可以找到XYZ三个定位符的中心点。
[0317]4.转换为二维码点阵:按透视旋转定律,使用透视变换方法,将二值图像变换为透视二值图像二维码点阵。方法是:[〇318] a)通过连接X点和Y点的辅助线,使用Br e senham直线算法,计算出定位符的高度。 在本示例中计算结果为35。[〇319] b)同理通过连接Y点和Z点的辅助线,计算出定位符的宽度。在本示例中计算结果为35。
[0320] c)点阵元素的边长D =(定位符高度+定位符宽度)/ 14。在本示例中计算结果为5。
[0321](1)建立新的平面坐标,其中有乂’、¥’、2’三个点,对应于原乂、¥、2三个点,而且父’ Y’与Y’Z’之间的夹角为直角。D(x,y)表示两点之间的距离,则
[0322]D(X’,Y’)= D(X, Y) / D。在本示例中D(X’,Y’)= 240 / 5 = 48。
[0323]D(Y’,Z’)= D(Y, Z) /D。在本示例中D(X’,Y’)= 240 / 5 = 48。
[0324]e)使用透视变换方法,将对应于点XYZ的二值图像,转换到对应于点X’ Y’ Z’的二维码点阵。
[0325]5.控制区信息读取:在二维码点阵中,控制区的位置是固定的,因此,可以从二维码点阵中,直接读取控制区编码。对控制区编码进行BCH纠错解码后,得到控制区的数据,包括了二维码模板编号、掩码编号、数据纠错编号、压缩方法编号、加密方法编号。
[0326]在本示例中,解码出了与编码时相同的全部控制区数据。
[0327]6.检索二维码模板:使用二维码模板编号,从模板数据源中检索到二维码模板数据。模板数据源可以是数据库、磁盘文件或云存储等任意的存储空间。
[0328]7.消除数据区掩码:从二维码模板中,可以得知数据区的位置。然后根据控制区中定义的掩码编号,用相应的掩码算法来消除数据区点阵中的掩码。
[0329]在本示例中,因为掩码编号是0,因此不需要进行掩码运算。[〇33〇]8.获取数据区编码:按数据区的位置,在二维码点阵中读取数据区编码[〇331]9.数据区纠错解码:按控制区中定义的数据纠错编号对数据区编码进行纠错解码;
[0332]10.数据解包:纠错解码后的数据区编码,前面的1个或几个字节(由数据区长度决定),即是实际的数据字节数。从数据区编码中读出数据。
[0333]在本示例中,在数据区读出了与编码时相同的数据。
[0334]11.信息解压:按控制区中定义的压缩方法编号,对数据进行解压缩。如果在编码的时候没有进行压缩,这一步可以跳过。
[0335]12.解密:按控制区中定义的加密方法编号,对数据进行解密。如果在编码的时候没有进行加密,这一步可以跳过。
[0336]13.得到了编码到二维码中的原始二进制信息。
[0337]在本示例中,解码得到了原始二进制信息:(EF 53 4C 5D 65 51 27 59 D4 6B 8B 4?卩£ 56 62 5? 84 76 80 4£?4 7£0178)16。这段二进制码即对应于1]111(3〇(16字符集下的文字“可嵌入大比例图形的二维码”。
[0338]相应地,根据本公开的一个方面,还提供了一种可嵌入大比例图形的二维码的解码设备,被配置为执行根据以上所述的可嵌入大比例图形的二维码的解码方法;或者被配置为识读以上所述的可嵌入大比例图形的二维码。
[0339]例如,本公开的解码设备可以在具有许多类型的计算机系统配置(包括个人计算机、桌面型计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或者可编程的客户电子装置、网络PC、小型计算机、大型计算机、移动电话、PDA、写字板、寻呼机、路由器、交换机等)的网络计算环境中实践,也可以在分布式系统环境中实践,其中通过网络链接(通过硬接线数据链路、无线数据链路或者通过硬接线和无线数据链路的组合)的本地和远程计算机系统二者执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
[0340]例如,本公开的解码设备可以实施为具有无线通信功能的移动设备。然而,可以理解,这仅仅是示例性而非限制性的。其他类型的移动终端也可以容易地采用本公开的实施方式,诸如便携式数字助理(PDA)、寻呼机、移动计算机、移动电视、游戏设备、膝上型计算机、照相机、录像机、GPS设备以及其他类型的语音和文本通信系统。诸如车载式移动终端之类的固定式移动终端同样可以容易地使用本公开的实施方式。
[0341]应当理解,本公开的以上方法和过程的步骤仅是示例性的,而非限制性的,可以理解的是这些步骤或流程可以按照任意合理的顺序来执行,任何步骤可以进行组合或分成其它的子步骤来执行,这些都涵盖在本公开所要保护的范围之内。
[0342]应当理解,本公开的以上设备(例如编码设备、解码设备)和装置可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本公开的实施例的设备和装置不仅可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、 晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如固件)来实现。
[0343]应当注意,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
[0344]通过以上描述和相关附图中所给出的教导,这里所给出的本公开的许多修改形式和其它实施方式将被本公开相关领域的技术人员所意识到。因此,所要理解的是,本公开的实施方式并不局限于所公开的【具体实施方式】,并且修改形式和其它实施方式意在包括在本公开的范围之内。此外,虽然以上描述和相关附图在部件和/或功能的某些示例组合形式的背景下对示例实施方式进行了描述,但是应当意识到的是,可以由备选实施方式提供部件和/或功能的不同组合形式而并不背离本公开的范围。就这点而言,例如,与以上明确描述的有所不同的部件和/或功能的其它组合形式也被预期处于本公开的范围之内。虽然这里采用了具体术语,但是它们仅以一般且描述性的含义所使用而并非意在进行限制。
【主权项】
1.一种可嵌入大比例图形的二维码,包括定位符、控制区、数据区和画布区,其中: 所述定位符包括对所述二维码进行识别和定位的定位信息; 所述控制区包括对所述二维码进行配置的配置信息,所述配置信息包括与所述二维码使用的二维码模板相对应的二维码模板信息; 所述数据区包括与所述二维码代表的原始信息相对应的数据信息,所述数据区的位置和大小根据所述二维码模板来确定; 所述画布区用于嵌入所述大比例图形,所述画布区的位置和大小根据所述二维码模板来确定。2.根据权利要求1所述的二维码,其中,所述二维码模板存储于数据源中。3.根据权利要求1或2所述的二维码,其中,所述二维码模板包括关于所述二维码的布局信息的数据点阵。4.根据权利要求1或2所述的二维码,还包括间隔区,所述间隔区包括定位间隔区和数据间隔区;其中所述定位间隔区是所述定位符四周的空白,宽度为一个点阵基本元素;所述数据间隔区是所述数据区与所述画布区、和/或所述数据区与所述二维码外部的空白,宽度为一个点阵基本元素。5.—种可嵌入大比例图形的二维码的编码设备,被配置为生成权利要求1-4中任一项所述的可嵌入大比例图形的二维码。6.—种可嵌入大比例图形的二维码的解码设备,被配置为识读权利要求1-4中任一项所述的可嵌入大比例图形的二维码。
【文档编号】G06K7/14GK205608756SQ201520968132
【公开日】2016年9月28日
【申请日】2015年11月30日
【发明人】朱灏, 谢右鸿, 林蔚
【申请人】林蔚
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1