二维码的生成与识别
二维码
二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据
李易峰身份证
型。
二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在
平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。
二维码的结构
头文字d第六部1、版本信息:version1(21*21),version2,...,version40,一共40个版本。版本代表每行有多少模
块,每一个版本比前一个版本增加4个码元,计算公式为(n-1)*4+21,每个码元存储一个二进制0或者 1。1代表黑,0表示白。比如,version1表示每一行有21个码元。
2、格式信息:存储容错级别L(7%),M(15%),Q(25%),R(35%)。容错:允许存储的二维码信息出现重复部分,级别越高,重复信息所占比例越高。目的:即使二维码被图标遮住
一部分,一样可以获取全部二维码内容。有图片的二维码, 图片不算二维码的一部分,它
遮住一部分码元,但还是可以扫描到所有内容。
张柏芝谢霆锋近况3、码字:实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误,就
通风座椅
是说当码元被图片遮住,可以通过纠错码字来回)。
4、位置探测图形、位置探测图形分隔符、定位图形,校正图形:用于对二维码的定位。
位置探测图形用于标记矩形大小,3个图形确定一个矩形。定位符是因为二维码有40个版
本尺寸,当尺寸过大后需要有根标准线,不然扫描的时候可能会扫歪。
具体的二维码结构如图1-1所示。
图:1-1二维码结构示意图
二维码的生成过程
信息按照一定的编码规则后变成二进制,通过黑白形成矩形。
自制兔灯笼100种1、数据分析:确定编码的字符类型,按相应的字符集转换成符号字符; 选择纠错等级,在规格一定的条件下,纠错等级越高其真实数据的容量越小。
格式 容量
天猫商城数字 最多7089字符
字母 最多4296字符
二进制数(8 bit) 最多2953字节
日文汉字/片假名 最多1817字符(采用Shift JIS) 中文汉字 最多984字符(采用UTF-8)
中文汉字 最多1800字符(采用BIG5)
2、数据编码:将数据字符转换为位流,每8位一个码字,整体构成一个数据的码字序列。其实知道这个数据码字序列就知道了二维码的数据内容。
3、纠错编码:按需要将上面的码字序列分块,并根据纠错等级和分块的码字,产生纠错码字,并把纠错码字加入到数据码字序列后面,成为一个新的序列。
纠错等级 纠错水平
L 7%字码修正
M 15%字码修正
Q 25%字码修正
H 30%字码修正
在二维码规格和纠错等级确定的情况下,其实它所能容纳的码字总数和纠错码字数也就确定了,比如:版本10,纠错等级时H时,总共能容纳346个码字,其中224个纠错码字。就是说二维码区域中大约1/3的码字时冗余的。对于这224个纠错码字,它能够纠正112个替代错误(如黑白颠倒)或者224个据读错误(无法读到或者无法译码),这样纠错容量为:112/346=32.4%。
4.构造最终数据信息:在规格确定的条件下,将上面产生的序列按次序放如分块中。按规定把数据分块,然后对每一块进行计算,得出相应的纠错码字区块,把纠错码字区块 按顺序构成一个序列,添加到原先的数据码字序列后面。
5.构造矩阵:将探测图形、分隔符、定位图形、校正图形和码字模块放入矩阵中。
6.掩摸:将掩摸图形用于符号的编码区域,使得二维码图形中的深和浅(黑和白)区域能够比率最优的分布。
7.格式和版本信息:生成格式和版本信息放入相应区域内。
二维码的识别
1、定位图形:首先寻探测图形,就是二维码上的三个方块。这三个方块的作用就是不管在哪个方向扫描图形,都可以扫到,不信可以将手机翻转测试一下。在通过二维码上的
定位图形和分隔符确定二维码信息的图像。定位图形确定二维码符号中模块的坐标,二维码中的模块都是固定的,包括校正图形,版本信息,数据和纠错码。分隔符呢,就是将探测图
形与二维码信息图像分开。
2、灰度化二维码信息像素:手机拍到的图像都是彩的,所以拍摄到二维码也不列外,它也是彩的,只不过除了黑白,其他颜非常浅而已。灰度化是指通过颜的深浅来识别二维码,就是说颜深的按深灰处理,浅的按浅灰处理,去掉其他颜。
3、去掉二维码信息像素的噪点:相机的传感器在把光线作为接收信号和输出过程产生的粗糙像素,这些粗糙的像素是照片中不应该出现的干扰因素。噪点就是指这些粗糙的像素。
4、二值化二维码信息像素:二值化是说将图像上像素灰度值设置为0或者255,也就是变成只有黑白两种颜。第一步已经灰度化变成只有深灰和浅灰两种颜,现在二值化是将深灰变成黑,浅灰变成白。为什么变成黑白呢。因为二维码图像其实是由二进制的0或者1组成,0代表白,1代表黑。二维码在二值化时会将二维码图像变成只有黑白