了解:二维码原理及图解
1 二维码
https://img.zcool.cn/community/01e1ab5bc5aa8da801213dea4ac270.gif
二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一种编码方式。它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。二维码生成器http://www.erweicaihong.cn/二维彩虹提供专业的二维码在线生成和美化。在线生成器可把文本、电子邮件、名片、网址、微信收款等信息一键制作自定义动态二维码图片,不仅能够随时让用户更改二维码背后的信息而无需更改二维码,而且能够让用户追踪最有价值的市场数据!
二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的、黑白相间的、记录数据符号信息的图形;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。
简单来说,将数据通过特定的编码变成‘0’和‘1’数据串。?‘0’和‘1’ 分别用黑(深)和白(浅)小方块替代,将黑白小方块按一定的规则顺序放在二维码中。当用户使用二维码读取器扫描时,通过相应的格式读取出黑白小方块并替换成相应的'0'和'1'串,再通过相应的编码转换成对应的数据内容,如商品编码,网站链接等。
2 二维码结构
2.1 二维码的结构图
2.2 功能图形(Function Patterns)
2.2.1 版本与大小
二维码共有40个版本,分别版本1,版本2,... ,版本40。如下图是一个版本1和版本2的大小示意图以及版本41的示意图。
版本1的大小是21*21,即21*21个小方块组成;版本2的大小是25*25;版本40的大小是177*177。
版本为b和大小为d*d的关系d=17+4*b,b={1,2,...,40}。
?2.2.2?空白区(Quiet zone)
空白区为环绕在符号四周的4个模块宽的区域,其反射率应与浅色模块相同。
2.2.3?寻像图形(Finder pattern)
寻像图形包括三个相同的位置探测图形(Position Detection Patterns),分别位于符号的左上角、右上角和左下角,如图所示。每个位置探测图形可以看作是由3个重叠的同心正方形组成,分别为7*7深(黑)色模块,5*5浅(白)色模块,3*3深色模块。位置探测图形的模块宽度比为1:1:3:1:1。符号中其他地方遇到类似图形的可能性极小,因此可以在迅速地识别可能的QR码符号。识别组成寻像图形的三个位置探测图形,可以明确地确定视场中符号的位置和方向。
2.2.4?分隔符(Separators)
在每个位置探测图形和编码区域之间有宽度为1个模块的分隔符,全部由白色模块组成。
2.2.5?定位图形(Timing Patterns)
水平和垂直定位图形分别为一个模块宽的一行和一列,由深色与浅色模块交替组成,其开始和结尾都是深色模块。水平定位图形位于符号上部的两个位置探测图形之间,在第6行。垂直定位图形位于符号左侧的两个位置探测图形之间,在第6列。它们的作用是确定符号的密度和版本,提供决定模块坐标的基准位置。
2.2.6?校正图形(Alignment Patterns)
每个校正图形可看作是3个重叠的同心正方形﹐由5×5个的深色模块,3×3个的浅色模块以及位于中心的一个深色模块组成。校正图形的数量视符号的版本号而定,版本2以上(含版本2)的符号均有校正图形。
2.3 编码区格式
2.3.1 版本信息(Version Information)
版本信息为18位,其中,6位数据位,12位通过BCH(18,6)编码计算出的纠错位。6位数据为版本信息,最高位为第1位。12位纠错信息在6位数据之后。
只有版本7~40 的符号包含版本信息,没有任何版本信息的结果全为0。所以不必对版本信息进行掩模。如图例子所示。
最终的版本信息应映射在符号中预留的位置。需要注意的是,由于版本信息的正确译码是整个符号正确译码的关键,因此版本信息在符号中出现两次以提供冗余。版本信息的最低位模块放在编号为0的位置上,最高位放在编号为17的位置上。
?6行×3列模块组成的版本信息块放在定位图形的上面,其右侧紧临右上角位置探测图形的分隔符3行×6列模块组成的版本信息块放在定位图形的左侧,其下边紧临左下角位置探测图形的分隔符。
2.3.2 格式信息(Format Information)
格式信息为15位,其中有5位数据位,10位用BCH(15,5)编码计算得到的纠错位。第1、2数据位是符号的纠错等级,见表13。格式信息数据的第3到第5位的内容为掩模图形,如下版本5-H的例子。按纠错位计算方法计算10位纠错数据,并加在5个数据位之后。
随后,将15位格式信息与掩模图形101010000010010进行XOR运算,以确保纠错等级和掩模图形参考合在一起的结果不全是0。
格式信息掩模后的结果应映射到符号中为其保留的区域内,如下图所示。需要注意的是,格式信息在符号中出现两次以提供冗余,因为它的正确译码对整个符号的译码至关重要。
2.3.3?编码过程
a)数据分析
分析所输入的数据流,确定要进行编码的字符的类型。
b) 数据编码
采用所定义的规则,将数据字符转换为位流。
c) 纠错编码
按需要将码字序列分块,以便按块生成相应的纠错码字,并将其加入到相应的数据码字序列的后面。
d) 构造最终信息
在每一块中置入数据和纠错码字,必要时加剩余位。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? e) 在矩阵中布置模块
将寻像图形、分隔符、定位图形、校正图形与码字模块一起放入矩阵。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?f) 掩模
用8种掩模图形依次对符号的编码区域的位图进行掩模处理,评价所得到的8种结果,选择最优的一种。
g) 格式和版本信息
生成版本信息(如果需要)和格式信息,构成符号。
2.3.4?译码过程
从识读一个QR码符号到输出数据字符的译码步骤是编码程序的逆过程。
a)定位并获取符号图像。深色与浅色模块识别为由“0”与“1”组成的阵列。
b)识读格式信息(按需要去除掩模图形并完成对格式信息模块的纠错,识别纠错等级与掩模图形参考)。
c) 识读版本信息(如果应用),确定符号的版本。
d) 用掩模图形(掩模图形参考已经从格式信息中得出)对编码区域的位图进行异或处理,消除掩模。
e)根据模块排列规则,识读符号字符,恢复信息的数据与纠错码字。
f)用与纠错等级信息相对应的纠错码字检测错误,如果发现错误,则进行纠错。? ? ? ? ? ? ? ? ? ? ? ? ? ? g)根据模式指示符和字符计数指示符将数据码字划分成多个部分。
h)最后﹐按照使用的模式进行译码,得出数据字符并输出结果。
需要细究的可参考标准。?
参考文献:
GB/T18284—2000?快速响应矩阵码
ISO/IEC 18004:2000 pdf? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?知乎-二维码原理
3 二维码功能?
(1)信息获取(名片、地图、WIFI密码、资料)
(2)网站跳转(跳转到微博、手机网站、网站)
(3)广告推送(用户扫码,直接浏览商家推送的视频、音频广告)
(4)手机电商(用户扫码、手机直接购物下单)
(5)防伪溯源(用户扫码、即可查看生产地;同时后台可以获取最终消费地)
(6)优惠促销(用户扫码,下载电子优惠券,抽奖)
(7)会员管理(用户手机上获取电子会员信息、VIP服务)
(8)手机支付(扫描商品二维码,通过银行或第三方支付提供的手机端通道完成支付)
(9)账号登录(扫描二维码进行各个网站或软件的登录)
页:
[1]