基于ldpc码的二维条码编码与解码方法

文档序号:6335329阅读:555来源:国知局
专利名称:基于ldpc码的二维条码编码与解码方法
技术领域
本发明涉及一种二维条码的编码和解码方法,尤其涉及一种基于LDPC码的二维 条码的编码与解码方法。
背景技术
条码技术自20世纪70年代初问世以来,发展十分迅速,仅仅20年时间,它已广 泛应用于商业流通、仓储、医疗卫生、图书情报、邮政、铁路、交通运输、生产自动化管理等领 域。条码技术的应用极大地提高了数据采集和信息处理的速度,改善了人们的工作和生活 环境,提高了工作效率,并为管理的科学化和现代化做出了重要贡献。条码技术发展早期采用的是一维条码,通过水平排列的条、空来表达信息,数据量 较小,只能存储字母和数字,尺寸比较大,损坏后不能读取。而在通用商品条码的应用系统 中,对商品信息,如生产日期、价格等的描述必须依赖数据库的支持。在没有预先建立商品 数据库或不便联网的地方,一维条码表示汉字和图像信息几乎是不可能的,即使可以表示, 也显得十分不便且效率很低。二维条码具有储存量大、保密性高、追踪性高、抗损性强、备援性大、成本便宜等特 性,这些特性特别适用于表单、安全保密、追踪、证照、存货盘点、资料备援等方面。在目前几十种二维要码中,常用的码制有PDF417 二维条码,Datamatrix 二维条 码,Maxicode 二维条码,QR Code,Code 49,Code 16K, Code one 等,除了这些常见的二维条 码之外,还有Vericode条码、CP条码、Codablock F条码、田字码、Ultracode条码,Aztec 条码。这些二维条码可以分为两类堆叠式/行排式二维条码和矩阵式二维条码。堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成,在编码设 计、校验原理、识读方式等方面继承了一维条码的一些特点,识读设备与条码印刷与一维条 码技术兼容。但由于行数的增加,需要对行进行判定、其译码算法与软件也不完全相同于一 维条码。有代表性的行排式二维条码有C0DE49、CODE 16K、PDF417等。PDF 417 (US 5304786 Α)是由多个一维条码外加部分控制图案组成,缺点在于采用了一个基于929个码字(4个黑 白间隔)的编码方式,每个条码字符只能代表9. 2位数据,大大降低了单个PDF417条码的 数据量。矩阵式二维条码又称棋盘式二维条码,以矩阵的形式组成,在矩阵相应元素位置 上用“点”表示二进制“1”,用“空”表示二进制“0”,由“点”和“空”的排列组成代码。具有 代表性的矩阵式二维条码有Code One,Maxi Code,QR Code,Data Matrix 等。QR Code,是 由日本Denso公司于1994年9月研制的用于工业自动化的矩阵二维码,条码只能是方形, 而且不能扫描同步解码。QR Code虽能表示汉字,但表示数量却有所限制。容量也有所限 制,理论上仅能表示1817个“汉字”字符。在其最大面积177个Z尺寸和纠错能力最低的 时候750个纠错字节时,其最大数据容量为2956个字节。QR Code,Data Matrix等较通用 二维码设计之初都倾向于简单易读的正方形,在取代一维码的过程中,相应的版面则需要 重新设计。
当这些二维码用于印刷制品时,由于印刷品易于磨损,使二维码图像变得模糊,识 别率降低,目前市场上的二维码还没有良好的解决方案。LDPC 码即低密度奇偶校验码(Low Density Parity Check Code,LDPC),它由 Robert G. Gallager博士于1963年提出的一类具有稀疏校验矩阵的线性分组码,通过校验 矩阵定义的一类线性码,为使译码可行,在码长较长时需要校验矩阵满足“稀疏性”,即校验 矩阵中1的密度比较低,也就是要求校验矩阵中1的个数远小于0的个数,并且码长越长, 密度就要越低。LDPC不仅有逼近Shannon极限的良好性能,而且译码复杂度较低,结构灵 活,是近年信道编码领域的研究热点,目前已广泛应用于深空通信、光纤通信、卫星数字视 频和音频广播等领域。LDPC码已成为第四代通信系统(4G)强有力的竞争者,而基于LDPC 码的编码方案已经被下一代卫星数字视频广播标准DVB-S2采纳。在最新的IEEE 802. 16E 中列为推荐编码方法。随着现代高新技术的发展,迫切需要用条码在有限的几何空间内表示更多的信 息,以满足千变万化的信息表示的需要。特别是需要一种信息容量大、纠错能力强的二维条 码,优选是能任意设置长宽比例、支持多种类型编码、定位更容易。

发明内容
基于以上原因,本发明意在提供一种信息容量大、纠错能力强的二维条码,优选是 能任意设置长宽比例、支持多种类型编码、定位更容易。为此,本发明提供一种基于LPDC编码的二维条码的编码方法,用以将输入的原始 二进制数据信息通过基于低密度奇偶校验码(LDPC)的编码压缩方法来输出可附着在载体 上的二维条码,其特征在于包括以下步骤A、根据输入的原始二进制数据信息的编码类型处理得到byte类型的输入信息;B、对该byte类型的输入信息进行第一压缩,该第一压缩的压缩类型可以是变长 压缩或定长压缩;C、根据第一压缩的结果计算需要存储的信息长度,根据编码类型以及压缩类型得 到待编码信息;D、对该待编码信息进行第二压缩,该第二压缩为LDPC编码压缩;E、将第二压缩的结果与版本信息整合得到压缩信息;F、设置标志位,生成二维条码图像。此外,本发明还相应地提供一种基于LPDC编码的二维条码的解码方法。该方法使 用一维线阵接触型或非接触型图像传感器获取二维条码的图像数据,经过基于LDPC的解 码方法来恢复输出二进制数据信息,其特征在于包括以下步骤A、采用均值灰化法对二维条码图像数据进行灰化,得到每个码元对应的灰度值;B、根据标志位图样寻找定位标识并获取像素大小值;C、按照像素大小值分块读取灰化得到的有效信息;D、采用二项分布方法优化该有效信息;E、从有效信息中截取版本信息;F、对截取版本信息之后的有效信息剩余部分进行第一解码,该第一解码可是LDPC 解码;
G、从第一解码得到的结果中截取包含编码类型以及压缩类型的头信息;H、根据头信息对第一解码得到的结果进行第二解码;I、根据第二解码的结果生成二进制数据信息。本发明通过将二维码与LDPC码有效结合起来,同时针对现有二维码的局限做了 更好的修正,重新制定一套生成与解析二维码的方法,具有以下优点1.采用LDPC码取代Reed-Solomon纠错码,在同样码长,获得更高的码率,增加编 码容量。译码时,软输出图像信息,采用置信传播(BP)译码方式,更易识别模糊图像,使二 维码具有更强的纠错性。根据二项分布特征计算码元01概率,增加对模糊二维码的解码性 能。2.可任意设置长宽比例,便于替换现有的长方形的一维码。3.默认支持GB18030及UTF-8类型,同时支持自定义的其他类型编码。4.采用定长与Huffman变长两种压缩方式,提高信息的压缩比,进一步增加信息容量。5.超大的编码空间,理论上可支持65535个byte信息量,仿真测试轻松编、解 20000多个汉字。6.取消复杂而实用度欠缺的二维码定位符样式,使用简洁有效的定位样式,更易 定位。


以下将参照附图来详细说明依照本发明的基于LPDC编码的二维条码的编码和解 码方法的流程。图1为基于LPDC编码的二维条码的编码方法的流程图;图2为本发明所使用的LPDC编码方法流程图;图3为基于LPDC编码的二维条码的解码方法的流程图;图4为本发明所使用的LPDC解码方法流程图;图5a及5b为本发明使用Huffman压缩的结点构成示意图;图5c为本发明使用的信息位构成示意图;图6为本发明的二维条码的标志位的示意图;以及图7为依照本发明的二项分布对数似然比率函数的示意图。
具体实施例方式现参照附图来详细说明本发明技术方案的特征及其技术效果,公开了一种基于 LDPC码的二维条码编码与解码方法。附图1显示了依照本发明的基于LDPC码的二维条码编码方法的基本流程。步骤100,输入待处理的字符。输入的字符可以是数字、字母、ASCII码、 IS0-8859-1字符集、GB18030字符集、UTF8字符集等。本发明与当前二维条码常用的QR code编码方法相比,增加了 GB18030的编码类型,默认支持全部中文,而QR code中的KANJI 类型中只能支持6000多个汉字,应用上不再受中文字符编码的限制。步骤101,根据输入的字符得到输入数组。该输入数组为byte数组,默认支持以下6种编码类型。每种类型都有一个用来标识字符集的标识V,为编码方法定义的固定值。每 个字符需要的bit数用block值来表示,该block值将用于后续的判断压缩类型。6种编码 类型分别为a) Numeric 数字类型标识值为ν = 1。字符包括0123456789,-. / ,需要的bit数block = 4。其 中,0-9代表数字10代表空格(对应ASCII码为32)11代表逗号“,”(对应ASCII码为44)12代表折号“_” (对应ASCII码为45)13代表句点“· ”(对应ASCII码为46)14代表斜杠“/”(对应ASCII码为47)15代表冒号“,,(对应ASCII码为58)b) Alpha 字母类型标识值为ν = 2。字符包括I 和从32到94的ASCII码,需要的bit数block =6。当选择这种字母类型时,需要先将传入的字符串中的小写字母全部转化为大写字母。0-61 代表 ASCI I 码 32-9462代表竖杠“ I ”,(对应ASCII码为124)63代表波浪号“ ”(对应ASCII码为126)c)ASCII 码类型标识值为ν = 3。字符包括128个ASCII码,需要的bit数block = 7。d) Byte 类型标识值为ν = 4。默认采用IS0-8859-1字符集,需要的bit数block = 8。当采 用这种Byte类型时,可直接传byte数组进行编码,解码后返回byte数组,不做转码。e) CN 类型标识值为ν = 5。该汉字字符需要的bit数block = 8。采用GB18030字符集转 码,不对byte数组做其他处理。f) UTF8 类型标识值为ν = 6。需要的bit数block = 8。采用UTF8字符集转码,不对byte数 组做其他处理。步骤101中得到的byte数组的长度定义为η。步骤102,对步骤101得到的输入数组-也即byte数组-进行Huffman压缩。步 骤102中的Huffman压缩为变长压缩方式,首先统计第一 byte数组中每个byte出现的频 率,构建Huffman树,其中右子节点为0,左子节点为1。统计完词频之后,采用后序遍历加结点度的算法存储Huffman树。设每个结点拥 有一个0-3的状态位,0表示该结点为叶子结点,1表示该结点只有左子结点,2表示该结点 只有右子结点,3表示该结点有左、右子结点,则该状态位即为每个结点的结点度。后序遍 历Huffman树,同时计算每个结点的结点度。每个结点可以存储为8位结点信息+2位结点度。
在译码时,我们只用到Huffman树中的叶子结点,所以在每个结点信息前增加1位 的标志位,如附图5a所示。当标识位为1时,代表该结点有效,后面紧跟8位结点信息。当 为0时,代表该结点信息无用,后面不存储结点信息,紧跟2位结点度。为提升压缩比率,可根据编码类型V,确定结点信息存储的位数,即block值。如附 图5b所示,例如当Alpha字母类型时,block = 6则每个结点信息只需要6个bit位。经过一系列压缩后,获得Huffman树的bit位为cp,也即压缩后得到的Huffman树 长度为CP,其对应的变长信息长度为P。保存该压缩得到的结果。步骤103,判断压缩类型。压缩类型用ctype来标识,当输入的byte数组长度η 满足n*block > cp+p时,应采用Huffman压缩,设定ctype = 1,不再对步骤102得到的 Huffman压缩结果调整,后续处理时直接调用该Huffman压缩树。反之,也即当byte数组长 度η满足n*block < = cp+p时,则应采用定长压缩,设定ctype = 0,抛弃Huffman压缩,采
用定长压缩重新压一遍。步骤102采用的Huffman编码比QRcode的定长相加的方法压缩比更高,同时可以 依据设定的编码类型对Huffman树也进行压缩。步骤104,计算存储信息长度。设信息位数目为k,码长为N,则码率R = k/N,(这 里k等于头部信息与压缩信息位数之和),N = k/R。在稍后的编码过程中我们采用IEEE 802. 16e中的QC-LDPC码,这种码要求码长必须为24的整数倍,所以由R和k求出符合条件 的最小N,然后求出信息长度L =最小的NXR,L > = k。在定长压缩时,k = 4+3+16+压缩信息位数目。在Huffman压缩时,k = 4+3+12+16+Huf fman树信息长度cp+变长信息长度P。定义扩展因子ζ = L/24。步骤105,设置头部信息。定义一个待编码数组,为初始长度为L的bit数组data, 用于存放待编码的数据。data的前4位存放编码类型值ν,紧跟3位存放压缩类型值ctype。 ν和ctype共同构成待编码数组data的头部信息。步骤106,设置压缩信息。当定长压缩时,在待编码数组data中添加16位长度,用 以存放输入数组-byte数组的长度η。之后循环添加byte,每个byte占block个bit数。 当Huffman压缩时,在data中添加12位,存放Huffman树的节点个数;再添加16位,存放 byte数组长度η ;再添加长度为cp的Huffman树信息;之后添加长度为ρ的压缩后的变长 信息。如下所示添加完压缩信息后,如果已添加长度小于步骤104中的信息长度L,则余下位随机 添加。随机规则为1/3的概率为1,2/3概率为0。步骤107,对待编码数组data进行LDPC编码。为提高效率,将待编码数据data 按最长sLen = 2304XR切割,分段编码。参照图2,采用业界常用的标准LDPC算法,对待 编码数组data进行分段编码。具体的算法可参考IEEE 802. 16e Annex G LDPC direct encoding, G. 6Method 2。例如先设置码长(分段后每段各自的长度)和码率R,根据码率R获取指定的模板 矩阵Hbm,接着生成基矩阵Hb,按照近视下三角矩阵编码方法将Hb划分为如下形式
权利要求
1.一种二维条码的编码方法,用以将输入的原始二进制数据信息通过基于低密度奇偶 校验码(LDPC)的编码压缩方法来输出可附着在载体上的二维条码,其特征在于包括以下 步骤A、根据输入的原始二进制数据信息的编码类型处理得到byte类型的输入信息;B、对该byte类型的输入信息进行第一压缩,该第一压缩的压缩类型可以是变长压缩 或定长压缩;C、根据第一压缩的结果计算需要存储的信息长度,根据编码类型以及压缩类型得到待 编码信息;D、对该待编码信息进行第二压缩,该第二压缩为LDPC编码压缩;E、将第二压缩的结果与版本信息整合得到压缩信息;F、设置标志位,生成二维条码图像。
2.如权利要求1所述的二维条码的编码方法,其中步骤A的输入信息可支持数字、字 母、ASCII码、Byte、汉字CN以及UTF8等6种编码类型。
3.如权利要求1所述的二维条码的编码方法,其中步骤B包括Bi、对该byte类型的输入信息进行Huffman变长压缩;B2、当步骤Bl得到的Huffman树长度与变长信息长度之和小于等于byte类型的输入 信息的长度与编码类型所用的bit数之乘积时,改用定长压缩。
4.如权利要求1所述的二维条码的编码方法,其中步骤E的版本信息也采用LDPC编码 压缩,将版本信息存放在压缩信息的中间1/2处。
5.如权利要求1所述的二维条码的编码方法,其中在步骤F中,标志位在二维条码图像 的左上、右上和左下角均填充7 X 7大小的信息1而其外围添加信息0,二维条码图像的右下 角仅填充为1X1大小的信息1。
6.如权利要求1所述的二维条码的编码方法,其中在步骤F中,根据原始输入的像素大 小可调整二维条码图像为非正方形。
7.—种二维条码的解码方法,使用一维线阵接触型或非接触型图像传感器获取二维条 码的图像数据,经过基于LDPC的解码方法来恢复输出二进制数据信息,其特征在于包括以 下步骤A、采用均值灰化法对二维条码图像数据进行灰化,得到每个码元对应的灰度值;B、根据标志位图样寻找定位标识并获取像素大小值;C、按照像素大小值分块读取灰化得到的有效信息;D、采用二项分布方法优化该有效信息;E、从有效信息中截取版本信息;F、对截取版本信息之后的有效信息剩余部分进行第一解码,该第一解码可是LDPC解码;G、从第一解码得到的结果中截取包含编码类型以及压缩类型的头信息;H、根据头信息对第一解码得到的结果进行第二解码;I、根据第二解码的结果生成二进制数据信息。
8.如权利要求7所述的二维条码的解码方法,其中步骤D包括由各个码元的灰度值查表得到二项分布的对数似然比率,遍历有效信息,用该对数似然比率覆盖灰度值。
9.如权利要求7所述的二维条码的解码方法,其中步骤E包括 在有效信息的中间1/2处截取版本信息。
10.如权利要求7所述的二维条码的解码方法,其中步骤H包括当压缩类型值为O时,进行定长译码;当压缩类型值为1时,进行Huffman变长译码。
全文摘要
一种基于LDPC编码的二维条码的编码方法,包括步骤根据输入二进制数据信息的编码类型处理得到输入信息;对输入信息进行变长压缩或定长压缩;根据压缩的结果计算需要存储的信息长度,根据编码类型以及压缩类型得到待编码信息;对待编码信息进行LDPC编码压缩;将压缩的结果与版本信息整合得到压缩信息;设置标志位,生成二维条码图像。本发明的编码方法信息容量大、纠错能力强,还能任意设置长宽比例、支持多种类型编码、定位更容易。
文档编号G06K19/06GK102004935SQ201010534320
公开日2011年4月6日 申请日期2010年11月8日 优先权日2010年11月8日
发明者佟野 申请人:佟野
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1