二维码编码过程_第1页
二维码编码过程_第2页
二维码编码过程_第3页
二维码编码过程_第4页
二维码编码过程_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一步:数据编码第二步:结束码和补齐码第三步:纠错码第四步:最终编码Numeric Mode(数字编码)Alphanumeric modeAlphanumeric mode(字符编码)(字符编码)Chinese ModeChinese Mode(中文编码)(中文编码)其他其他一共有40种版本,从1到40。每一种版本有4种纠错级。编码:1-H版本中的“01234567”首先将输入的数据每三位分为一组,将每组数据转换为10位二进制数据。余下的一或两位转换为4或7位的二进制数据01234567012345670120123453456767012012000000110034534501010110

2、0167671000011000000110001010110011000011000000110001010110011000011000000110001010110011000011在数据二进制之前加上字符个数的二进制数据(这个二进制数据的个数由表三决定)。1-H版本为10位,“01234567”有8个数字字符,将0000001000添加在数据之前:000000100000000011000101011001100001100000010000001最后由表二给出数字编码的标志:0001编码完成编码:1-H版本中的“AC-42”1. 从字符索引表中找到 AC-42 这五个字条的索引(10

3、,12,41,4,2)2. 两两分组: (10,12) (41,4) (2)3.把每一组转成11bits的二进制: (10,12) (45进制)进制)-10 x45+12 = 462 (10进制)进制)-00111001110(2进制)进制)(41,4) -41x45+4 =1849 - 11100111001(2) -转成转成 000010(6位,最大位,最大44二进制位为二进制位为6位)位)4. 把这些二进制连接起来: 00111001110 11100111001 0000105. 把字符的个数转成二进制 (1-H版本9 bits ):5个字符,5转成 0000001016. 在头上加上

4、编码标识 0010 和第5步的个数编码: 00100000001010011100111011100111001000010假如我们有个“HELLO WORLD”的字符串要编码,根据上面的示例二,我们可以得到下面的编码加上结束符:0000然后8bits重排:如果所有的编码加起来不是8个倍数我们还要在后面加上足够的0,比如上面一共有78个bits,所以,我们还要加上2个0,然后按8个bits分好组:00100000 01011011 00001011 01111000 1101000101110010 11011100 01001101 01000011 0100000000最后,如果如果还没有

5、达到我们最大的bits数的限制(表七),我们还要加一些补齐码(Padding Bytes),补齐码就是重复下面的两个bytes:11101100和 00010001。假设我们需要编码的是版本 1的Q纠错级,那么,其最大需要104个bits,而我们上面只有80个bits,所以,还需要补24个bits,也就是需要3个Padding Bytes,我们就添加三个,于是得到下面的编码:00100000 01011011 00001011 01111000 1101000101110010 11011100 01001101 01000011 01000000001110110011101100 0001

6、000100010001 1110110011101100重复下面的两个bytes:11101100和 00010001二维码中有四种级别的纠错,这就是为什么二维码有残缺还能扫出来,也就是为什么有人在二维码的中心位置加入图标。具体步骤:首先,我们需要对数据码进行分组,也就是分成不同的组(Block),然后对各个组进行纠错编码。对于如何分组,参见QR码编码规范(QR Code Specification)中的表13-表22.需要分多少块,每一块有多少个码字(8bits)举一个5-Q版本的例子:块数为2+2=4块,头一组(c,k,r)=(33,15,9),的两个Blocks中各15个bits数据

7、+ 2* 9个bits的纠错码。第二组同理,16+2*9=34bits下面是一个5-Q版本的示例:二进制写起来太庞大,所以这里用十进制写。纠错码主要通过里德-所罗门纠错算法算出来,太难,不做介绍。首先穿插放置:把数据码和纠错码的各个码字穿插放置。规则如下:对于数据码:把每个块的第一个码字先拿出来按顺度排列好然后再取第二列的:67, 246, 182, 70, 85,246,230 ,247如此类推:67, 246, 182, 70, 85,246,230 ,247 ,38,6,50,17,7,236先取第一列的:67, 246, 182, 70纠错码也是一样和数据码取的一样,得到:213,87

8、,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, 。120, 192, 178, 39, 133, 141, 236最后根据表一,将剩余字(Remainder Bits)补齐。5-Q版本还需要补7bits,7*8=56个0.第一步:位置探测图形第二步:矫正图形和校准线第三步:

9、格式信息和版本信息第四步:画数据第五步:掩膜首先,先把位置探测图形( Position Detection )图案画在三个角上。(无论是什么版本,这个图案的尺寸就是这么大)然后,再把矫正( Alignment )图案画上(无论什么版本,这个图案的尺寸就是这么大)接下来是校准的线(Timing Pattern)完成前三部得到的图形。完成前三部得到的图形。接下来是格式信息( Formation Information )5个数据位:其中,2个bits用于表示使用什么样的纠错等级, 3个bits表示使用什么样的掩膜。10个纠错位。主要通过附录C来计算。然后,将15位格式信息与掩模图形10101000

10、0010010进行XOR运算,以确保纠错等级和掩模图形合在一起的结果不全是0。格式信息出现了两次冗余,因为这对正确译码非常关键。例:设定纠错等级为M:00掩模图形参考:101数据:00101BCH位:0011011100掩模前的位序列:001010011011100用于XOR操作的掩模图形:101010000010010格式信息模块图形:100000011001110再接下来是版本信息( Version Information )(版本7以后需要这个编码)版本信息一共是18个bits,其中包括6个bits的版本号以及12个bits的纠错码(根据附录计算)例如: 版本号: 7 数据:000111BCH位: 110010010100格式信息模块图形: 000111110010010100然后是填接我们的最终编码,最终编码的填充方式如下:从左下角开始沿着红线填我们的各个bits,1是黑色,0是白色。如果遇到了上面的非数据区,则绕开或跳过。这样下来,我们的图就填好了,但是,也许那些点并不均衡,如果出现大面积的空白或黑块,会造成扫描识别的困难。所以,我们还要做掩膜操作QR有8个掩膜可以使用,如下所示。所谓掩膜,就是和上面生成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论