伟德体育 -

伟德体育

当前位置: 主页 > 分类浏览 > 二维码的生成细节和原理 - AlanTu

二维码的生成细节和原理 - AlanTu

时间:2019-04-15来源:网络整理 作者:admin点击:

二维码也称为QR。 Code,QR全名要害 Response,它是晚近盛行的一种除去素养编码办法。,它比移交的酒吧好。 行为准则条码可以贮藏更多教训,它还可以表现更多的资料类型。:比方:字母,数字,日文,国文et cetera。在过来的表现概要的天和基本原理一天里,我理解了二维码图像建立的底细。,鉴于我所持的论点这是一密电码算法。,把本文写在这边。 ,暴露一下。研究好的人一齐研究。。

顾虑QR Code Specification,看一眼这么样地PDF。: 

初步

率先,让笔者从二维码的40个维度开端。。公职的版本。Version 1是21 x 21矩阵,Version 2是 25 x 25的矩阵,Version 3是29的级数。,每个附加版本,它将高处四的级数。,表现是:(V-1)* 4 + 21(V是版本号) 出色的Version 40,(40-1)*4+21 = 177,出色的的是177。 x 177 的正方形。

让笔者看法一二维码示例。:

方位形成图案
  • Position Detection Pattern是方位形成图案,标注二维码的矩形级数。三种方位模特儿是白边界上的称为分离装置。 for Postion Detection Patterns。三而做错四吝啬的三可以认同矩形。。
  • Timing 模特儿也用于方位。。产生因果关系是二维码有40个级数。,当级数太大时,必要条基准线。,别的方式,扫描能够是倾斜的。。
  • Alignment Patterns 鳎版本 超越2(表现版本2)的二维行为准则必要这么样地DeND,也用于方位瞄准。。
功用性资料
  • Format Information 它以各式各样的级数在。,用于贮藏相当多的版式资料。。
  • Version Information 在 >= Version 超越7,笔者必要预留两元3元。 x 6,贮藏相当多的版本教训。。
资料编码和离经叛道的行为错误校正码组
  • 除是你非常的说的嘛!质地外。,同样等等的被蜜饯上去。 Data Code 资料码 和 Error Correction Code 离经叛道的行为错误校正码组。

资料编码

让笔者先谈谈资料编码。。QR码倒退以下编码:

Numeric mode 数字编码,从0到9。即使必要编码的行为准则的数量做错3的落后于时代。,非常的,基本原理1位或2位数字将被替换为4位或7位。,同样等等3位数字将被编制。 10,12,14bits,要编译顺序多长时间安宁二维C的级数 3说明了这点)

Alphanumeric mode 字母编码。表现 0-9,极好的A到Z(无小写字母),打手势 % * + – . / : 表现间隔。这些字母被映照到字母指数表。。列举如下所示:(SP是空白区。,字母是字母,估价是其目的值。 编码迅速移动是将字母22分群聚。,当时的赴下表的45体系。,当时的把它沦陷二元系的11位。,即使基本原理有一单,当时的把它沦陷二元系6位。。编码模特儿和字母数必要编码成9个雅高, 11或13二元系(下表射中靶子表) 3)

Byte mode, 八位字节编码,它可以是0255 ISO-859-1字母。。相当多的二维码扫描器可以感到设想是。

Kanji mode 这是日文编码,它亦一双八位字节编码。。同一,也可以用于国文编码。日文和中国字的编码会减去一值。如:在0X8140 to 0x9FFC射中靶子字母将缩减8140。,0x040到0xEBBF射中靶子字母从0xC140中减去,当时的将前两个16位数字乘以0xC0。,当时的添加基本原理两个16个二元系位。,基本原理替换为13位编码。。如以下示例所示:

Extended Channel Interpretation (ECI) mode它首要用于特别字母集。。做错所相当多的扫描器都倒退这么样地编码。。

Structured Append mode用于混合编码,更确切地说,这么样地二维码表现多种编码体式。。

FNC1 mode这种编码办法首要用于相当多的特别贸易或贸易。。拿 ... 来说GS1条码等。。

简略起见,后头三将不在意的本提供免费入场券。 根究。

以下两个表,

  • Table 2 它是每个编码体式的编号。,它是用体式写的。 Information中。注:国文是1101
  • Table 3 表现了,不平等的版本的二维码(级数),因,数字,字母,八位字节与中国字模特儿,因独奏的编码的2位数字。(在二维码直立支柱中),有各式各样的编码直立支柱。,我不久以后再提。

让笔者看法各自的侦查。,

示例一:数字编码

AT版本 1的级数。,有毛病调整比例是H.。,编码: 01234567

1. 把这些数字陷于三组。 012 345 67

2. 把它们沦陷二元系。  012 转成 0000001100;  345 转成 0101011001;  67 转成 1000011。

3. 将这三个二元系字母串串在一齐。 0000001100 0101011001 1000011

4. 把数字计数替换成二元系数。 (版本) 1 h为10。 bits 8号码的二元系数是 0000001000

5. 在前面添加0001和第四音级步的编码。  0001 0000001000 0000001100 0101011001 1000011

例二:字母编码

AT版本 1的级数。,有毛病调整比例是H.。,编码: AC-42

1. 从字母指数表中查找 AC-42 第五钞票的指数。 (10,12,41,4,2)

2. 22字组分类 (10,12) (41,4) (2)

三。将每个组替换为二元系11位。

(10,12) 10*45+12 值得的 462 转成 00111001110
(41,4) 41*45+4 值得的 1849 转成 11100111001
(2) 值得的 2 转成 000010

4. 衔接这些二元系体系。:00111001110 11100111001 000010

5. 将字母数更顶替二元系数。 (版本) 1-H为9 bits 5字,5替换 000000101

6. 在头上附带说明行为准则监视。 0010 又第五步编码。  0010 000000101 00111001110 11100111001 000010

停车站符和补码打手势

即使笔者打照面 整体的的弦是编码的。,鉴于上面的例二,笔者可以获益上面的行为准则。,

编码字母数HELLO 整体的编码
001000000101101100001011 01111000110 10001011100 10110111000 10011010100 001101

笔者必要添加一终结。:

编码字母数HELLO 整体的编码完毕
001000000101101100001011 01111000110 10001011100 10110111000 10011010100 0011010000
8位重排

即使所相当多的编码累积而成做错8个落后于时代笔者还要在后头附带说明十足的0,拿 ... 来说,上面有78位。,因而,笔者必要高处两个零点。,当时的鉴于8位停止字组分类。:

00100000   01011011   00001011   01111000   11010001   01110010   11011100   01001101   01000011   01000000

补齐码(Padding 八位字节)

基本原理,即使即使还没有获得笔者最大的bits数的限度局限,笔者还要加相当多的补齐码(Padding 八位字节),Padding 八位字节反复上面的两个八位字节。:11101100 00010001 (二元到十进制记数制是236和17)。,我两个都不知情为什么,只知情Spec上是非常的写的)顾虑每一Version的每一种错误校正比例的最大Bits限度局限,你可以在意到QR。 Code 使格式化秒十八页至32页面7表。。

呈现笔者必要编码版本。 1 q离经叛道的行为调整电平,非常的,它的最大要辛勤挣得的104位。,它上面单独地80个一块。,因而,必要24个一块。,那是三Paddings。 Bytes,笔者将高处三。,因而笔者获益上面的行为准则。:

00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100

上面的行为准则是资料行为准则。,叫Data Codewords,每一8位称为码字母。,笔者还必要将错误校正教训添加到这些资料行为准则中。。

离经叛道的行为错误校正码组

笔者议论了相当多的错误校正比例。,Error Correction Code Level,二维码错误校正有四分染色体约定,这执意为什么二维码是有缺陷的,可以被清除掉的产生因果关系。,这执意为什么大约人在二维行为准则的结心添加图标。。

错误校正才能
L程度7%的字母可以被缓解。
M级15%的字母可以被缓解。
Q程度25%的字母可以被缓解。
氢程度30%的字母可以被缓解。

非常的,QR什么将离经叛道的行为错误校正码组添加到资料行为准则中?,笔者必要对资料行为准则停止字组分类。,更确切地说,它被分为不平等的的块。,当时的,对每个块停止离经叛道的行为错误校正码组。,什么字组分类,笔者可以检查QR。 Code Spec的第33页到44页的Table-13到Table-22的下定义表。在意基本原理两列。:

  • Number of Error Code Correction Blocks :你必要各自的坚定地?。
  • Error Correction Code Per Blocks:每个块射中靶子行为准则数。,同样行为准则的号码,更确切地说,8八位字节的八位字节数是好多?。

举个侦查:关于版本 5 + q离经叛道的行为调整电平:你必要4个坚定地(2个坚定地作为一集中),共两组),在概要的组的两个块射中靶子15位资料。 + 各 9位离经叛道的行为错误校正码组(Notes):表射中靶子码字母是一8位的八位字节(请在意):在基本原理一侦查中,(c), k, r 表现是:c = k + 2 * r,因小注解说。:离经叛道的行为错误校正码组的使满意以内离经叛道的行为错误校正码组的宗派地。

下图供应了一5-Q的侦查(因二元系写将MAK)。,因而,我应用十进制记数制体系。,笔者可以在意到每个区块有18个码字母。,这是18位8位的二元系数。

资料每个块的离经叛道的行为错误校正码组
1167 85 70 134 87 38 85 194 119 50 6 18 6 103 38213 199 11 45 115 247 241 223 229 248 154 117 154 111 86 161 111 39
2246 246 66 7 118 134 242 7 38 86 22 198 199 146 687 204 96 60 202 182 124 157 200 134 27 129 209 17 163 163 120 133
21182 230 247 119 50 7 118 134 87 38 82 6 134 151 50 7148 116 177 212 76 133 75 242 238 76 195 230 189 10 108 240 192 141
270 247 118 86 194 6 151 50 16 236 17 236 17 236 17 236235 159 5 173 24 147 59 33 106 40 255 172 82 2 131 32 178 236

注:二维码离经叛道的行为错误校正码组首要是经过Reed SoLo取得的。 error 调整(Reed Solomon错误校正算法)取得。。因该算法,这对我来说很复杂。,外面有很多算学计算。,比方:聚合除法,将1-255的数字映照到2的N幂(0)。<=n<=255)的伽罗瓦域Galois Field之类的神一样的东西,又基于这些基础的错误校正算学表现,因我的资料基础差,因我来说太过复杂,因而我一时半会儿还有点没搞明白,还在研究中,因而,我在这边就不展开说这些东西了。还请大家见谅了。(自然,即使有朋友很明白,也繁请教教我)

终极编码

使混杂定位球

即使你以为笔者可以开端画画,你就错了。二维码的愚昧无知技术还没有实现。,它还要把资料编码和离经叛道的行为错误校正码组的许多的codewords更迭放在一齐。什么更迭?,正规军列举如下:

用于资料行为准则:先取每个块的概要的码字母,当时的鉴于,当时的概要的秒。,同样类推。如:是你非常的说的嘛!示例射中靶子资料 码字母列举如下:

块 167857013487388519411950618610338
块 224624666711813424273886221981991466
块 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, 236, 38, 6, 50, 17, 7, 236, 213, 87, 148, 235, 199, 204, 116, 159, 11, 96, 177, 5, 45, 60, 212, 173, 115, 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

基本原理,添加提示位。,大约版本的QR,关于是不敷的。,还要附带说明Remainder Bits,比方:是你非常的说的嘛!的5Q版的二维码,并添加7位。,Remainder 一块加零。。版本必要好多剩余物 bit,你可以在意到QR。 Code 使格式化第十五页面1的下定义表。

二维行为准则标图

Position Detection Pattern

率先,概要的,职位。 检测形成图案绘制在三个角上。。(憎恨版本什么),形成图案的级数是同样之大。

Alignment Pattern

当时的,再把Alignment形成图案画上(憎恨版本什么),形成图案的级数是同样之大。

顾虑Alignment的职位,可以检查QR Code SPEC的第八十的页码或张数下定义表(不充分表)

下图是上面表射中靶子版本8的示例(6),24,42)

Timing Pattern

接上去是时期。 Pattern的线(这么样地不必多说了)

Format Information

其次是膜。 Information,上面图片射中靶子蓝色宗派。。

Format Information是一15个bits的教训,每个位的职位列举如下所示。:(在意图片射中靶子笨蛋。) Module,这种情况常常产生。

这15位表现:

  • 5位资料:在位的,2位用于指向式的要应用哪班型的有毛病。 Correction Level, 3位指向式的应用何许的口罩。
  • 10个错误校正位。首要经过BCH 计算行为准则

当时的,15位将用101010000010010停止XOR运算。。这么样就抵押无力的因笔者选用了00的错误校正比例和000的Mask,创造一切白。,这将高处笔者的扫描器图像认同的异议。。

上面是一侦查。:

顾虑Error Correction 比例显示鄙人表中。:

顾虑掩码模特儿,如后头的表。 23个法案。

Version Information

接上去是版本。 教训(版本7不久以后必要此行为准则),上面图片射中靶子蓝色宗派。。

Version 教训,一共有权18位。,它表现6位版本号和12位离经叛道的行为错误校正码组。,上面是一侦查。:

装填物职位列举如下:

资料和资料离经叛道的行为错误校正码组

当时的笔者填写基本原理的行为准则。,填写终极编码的办法列举如下。:从左下角开端,笔者将沿着对某社团进行经济歧视狼吞虎咽地吃东西笔者的获名次。,1是黑色的。,0是白的。。即使偶遇上面的非资料区域,当时的到处或跃过。。

掩码形成图案

这么样上去,笔者的相片预备好了。,然而,或许that的复数点是不安定的。,即使有大面积的空白或黑色块,它将告知笔者扫描认同的努力地。。因而,笔者还必要做遮蔽买卖。,这否复杂。,QR有8个面具可以应用。,列举如下所示:在位的,每个掩模的表现在每个图下。。同样面具,说白了,伸出面建立的图形停止异或运算。。掩码将只使生效与资料区域的异或。,无力的使发生功用区。(注:选择拨的掩模亦算法。

其掩码的认同码列举如下所示。:(在位的我,j对应于上面的X。,y)

上面是相当多的面罩。,笔者可以在意到相当多的面具 XOR资料早已进入相当碎。。

美容面具后的二维码是终极的类似地图的事物。。

好了,你可以尝试作曲QR的编码顺序。,自然,你可以使用互联网网络找到芦苇杆。 Soloman错误校正算法库,或许看一眼同样等等人的源行为准则是什么取得这么样地繁琐的编码的。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
相关内容
推荐内容