二维码的设计原理和生成规格

所需积分/C币:11 2017-10-02 23:49:06 2.09MB PDF
41
收藏 收藏
举报

二维码的设计原理和生成规格.二维码的设计原理和生成规格.二维码的设计原理和生成规格.二维码的设计原理和生成规格.二维码的设计原理和生成规格.
Kanji mode这是日文编码,也是双字节编码。同样,也可以用于中文编码。日文和汉 字的编码会减去一个值。如:在0X8140to0X9FFC中的字符会减去8140,在0XF040到 OXEBBE 中的字符要减去0XC140,然后把前两位拿出米乘以0XC0,然后再加上后两位,最后转成 13bi的编码。如下图小例: Input character 点 若 (Shift JIS value) 935F E4AA 1. Subtract 8140 or C140 935F·8140=121F E4AA·c140=236A 2. Multiply m s b. by CO 12xc0=D80 23xc0=1A40 3. Add Is b D80+1F=D9F 1A40+6A=1AAA 4. Convert to 13 bit binary 0D9F+011011001111 1AAA中1101010101010 Extended Channel Interpretation(ECD)node主要用于特殊的字符集。并不是所有 的扫措尜都支持这种编码。 Structured Append mode用于混合编码,也就是说,这个二维码中包含了多种编码格 式 FNC1mode这种编码方式主要是给一些特殊的工业或行业用的。比如GS1条形码之类的。 简单起见,后面三种不会在本文中讨论。 下面两张表中, ● Table2是各个编码格式的“编号”,这个东西要写在 Format Information中。注: 中文是1101 Tale3表示了,不同版本(尺寸)的二维码,对丁,数字,字狩,字节和Kanj模 式下,对于单个编码的2进制的位数。(在二维码的规格說明书中,有各种各枰的编 码规范表,斤而还会提到) Table 2-Mode indicators Mode Indicator ECI 0111 Numeric 0001 Alphanumeric 0010 B-bit Byte 0100 anji 1000 Structured A d 0011 FNC1 0101(First position) 1001(Second position) Terminator(End of Message)0000 Table 3- Number of bits in character Count Indicator Version Numeric Alphanumeric B-bit Byte Mor Mode Mode Mo 1 to 9 10 9 10t26 11 16 10 27t040 14 13 16 12 下面我们看几个示例, 示例一:数字编码 在 Version1的尺寸下,纠错级別为H的情况下,编码:01234567 1.把上述数字分成三组:01234567 2.把他们转成二进制:012转成00000010;345转成0101011001;67转成 1000011。 3.把这三个二进制串起来:0000010001010110011000011 4.把数字的个数转成二进制( version1-H是10bits):s个数字的二进制是 0000001000 5.把数字编码的标志∞001和第4步的编码加到前面:000100000000000 01010110011000011 示例二:字符编码 在 Version1的尺寸下,纠错级别为H的情况下,编码:AC-42 1.从字符索引表中找到AC-42这五个字条的索引(10,12,41,4,2) 2.两两分组:(10,12)(41,4)(2) 3.把每一组转成11bis的二进制: 10,12)10=45+12等于462转成00111001110 (41,4)41*45+4等于1849转成11100111001 (2)等于2转成000010 4.把这些二进制连接起来:0011100111011100111001000010 5.把字符的个数转成二进制( ersion1为9bits):5个字符,5转成000001 6.在头上加上编码标识0010和第5步的个数编码:00100000010100111001110 11100L11001000010 结束符和补齐符 假如我们有个HEL0 WORLD的字符串要编码,根据上面的示例二,我们可以得到下面的 编码, 编码字符数 HELLO WORLD的编码 00100000010110110000101101111000110100010111001011011100010011010100001101 我们还要加上结束符; 编码字符数 IELL0WOHD的编码 结束 0110000101101111000110100010111001011011100010011010100 0010000001011 0000 001101 按8bits重排 如果所有的编码加起来不是8个倍数我们还要在后面加上足够的0,比如上面共有78 个bits,所以,我们还要加上2个0,然后按8个bits分好组: 001000000l01101100001011C1111000110100010111001011011100 010011010100001101000000 补齐码( Padding bytes) 最后,如果如果还没有达到我们最大的bits数的限訇,我们还要加些补齐码( Padding Bytes), Padding Bytes就是重复下面的两个 bytes:11101100001001(这两个二进制 转成十进制是236和17,我也不知道为什么,只知道Spc上是这么写的)关于每一个 Version 的每一种纠错级别的最大Bits限制,可以参看 QR Code Spec的第28页到32页的 Table-7 一表 假设我们需要编码的是 Version1的Q纠错级,那么,其最大需要104个bits,而我 们上面只有80个hits,所以,还需要24个bits,也就是需要3个 Padding Byt es,我们 就添加三个,于是得到下面的编码: 0010000001011011000010110111100011010001011100101101110001001101 0100001101000000111011000001000111101100 纠错码 上面我们说到了一些纠错级别, Error correction code level,二维码中有四种级别 的纠错,这就是为什么二维码有残缺还能扫出米,也就是为什么有人在二维码的中心位置加 入图标。 错误修正容量 L水平7%的字码可被修正 M水平15%的字码可被修正 Q水平25%的字码可被修正 H水平30%的字码可被修正 那么,QR是怎么对数据码加上纠错码的?首先,我们需要对数据码进行分组,也就是 分成不同的Bock,然后对各个 Block进行纠错绽码,对于如何分組,我们可以查看 QR COde Spee的第33页到14页的 Table-13到 Table-22的定义表。注意最后两列: Number of error Cade Correction blacks:需要分多少个块。 Error correction code per blocks:每一个块中的code个数,所谓的code的个数, 也就是有多少个8bits的字节 26 1 (134,10813) M 2 (6743,12) Q 72 2 33159) 2 (3416.9) H 88 2 (3311.111 2 (34.1211 172 36 2 (B669) M 64 (4327,8) Q 96 4 (4319,12) H 112 (43,15,14) (c k, r) c= total number of codewords ks number of data codewords r= number of error correction capacity Error correct on capacity is less than half the number of error correction codewords to reduce the probability of misdecodes 举个例子:上述的 Version5+Q纠错级:需要4个 Blocks(2个B1cks为一组,共 两组),头一组的两个 Blocks中各15个bits数据+各9个bits的纠错码(注:表中的 codewords就是一个8biLs的bye)(冉注:最后一例中的(c,k,r)的公式为:c-k+ 2*r,因为后郾注解释了:纠错码的容量小于纠错码的一半) 下图给一个5-Q的示例(因为二进制写起来会让表格太大,所以,我都用了十进制) 组块 数据 对每个块的纠错码 6785701348738851941195062131991145115247241223229248154 18610338 1171541118616111139 246246667118134242738862287204966020218212415720013427129 2 1981991466 20917163163120133 1822302471195071181348738148116177212761337524223876195230 826134151507 18910108240192141 70247118861946151501623617235159517324147593310640255172 2361723617236 82213132178236 注:二维码的纠错码主要是通过Reed- Solomon error correction(里德-所罗门纠错 算法)来实现的。对于这个算法,对于我来说是相当的复杂,里面有很多的数学计算,比如: 多项式除法,把1-255的数映射成2的n次方(0<n<-255)的伽罗瓦域 Galois ficld之 类的神一样的东西,以及基于这些基础的纠错数学公式,因为我的数据基础差,对于我来说 太过复杂,所以我一时半会儿还有点没搞明白,还在学习中,所以,我在这里就不展开说 这些东西了。还请大家见谅了。(当然,如果有朋友很明白,也繁谞教教我) 最终编码 穿插放置 如果你以为我们可以开始画图,你就错了。二维码的混乱技术还没有玩完,它还要把数 据码和纠错码的各个 codewords交替放在一起。如何交替呢,规则如下: 对于数据码:把每个块的第一个 codewords先拿出来按顺度排列好,然后再取第一块的 第二个,如此类推。如:上述示例中的 Data Codeword s如下: 块167857013487388519411950618610338 块22462466711813424273886221981991466 块31822302471195071181348738826134151507 块4702471188619461515016236172361723617236 我们先取第一列的:67,246,182,70 然后再取第二列的:67,246,182,70,85,246,230,247 如此类推:67,246,182,70:85,246,230,247………,38,6, 50,17,7,236 对于纠错码,也是一样: 块121319911451152472412232292481541171541118616111139 块28720496602021821241572001342712920917163163120133 块314811617721276133752422387619523018910108240192141 块423515951732414759331064025517282213132178236 和数据码取的一样,得到:213,87,148,235,199,204,116,159,……………39 133,141,236 然后,再把这两组放在一起(纠错码放在数据码之后)得到: 67,246,182,70,85,246,230,247,70,66,247,118,134,7,119,86,87,118, 50,194,38,134,7,6,85,242,118,151,194,7,134,50,119,38,87,16,50, 86,38,236,6,22,82,17,18,198,6,236.6,199,134.17,103,146,151,2:6, 38,6,50,17,7,236,213,87,148,235,199,204,116,159,11,96,177,5,45, 60,212,173,15,202,76,24,247,182,133,147,241,124,75,59,223,157,242, 33,229,200,238,106,248,134,76,40,154,27,195,255,117,129,230,172, 154,209,189,82,111,17,10,2,86,163,108,131,161,163,240,32,111,120, 192.178.39,133.141,236 Remainder bits 最后冉加上 Reminder bits,对于某些 Version的R,上面的还不够长度,还要加上 Remainder Bits,比如:上述的5Q版的二维码,还要加上7个bits, Remainder bits加零 就好了。关于哪些 Version需要多少个 Remainder bit,可以参看 QR Code Spec的第15页 的 Table-1的定义表 画二维码图 Position detection pattern 首先,先把 Position detection图案画在三个角上。 Alignment Pattern 然后,再把 Alignment图案画上 关于 Alignment的位置,可以查看 QR Code Spec的第81页的 Table-E.1的定义表(下 表是不完全表格) Table E. 1-Rowlcolumn coordinates of center module of Alignment Patterns Version Number of Rowi Column coordinates of center module Alignment atterns 18 456789 二666666666 220424答 38 666 46 2850 下图是根据上述表格中的 Version8的一个例子(6,24,42) Version 8 QR Code 0,0 6 囗回回24 回回42 6 2442 Timing Pattern 接下来是 Timing Pallern的线(这个不用多说了)

...展开详情
试读 15P 二维码的设计原理和生成规格
立即下载 身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享精英

关注 私信
上传资源赚钱or赚积分
最新推荐
二维码的设计原理和生成规格 11积分/C币 立即下载
1/15
二维码的设计原理和生成规格第1页
二维码的设计原理和生成规格第2页
二维码的设计原理和生成规格第3页

试读结束, 可继续读2页

11积分/C币 立即下载