1、定位图形:首先寻找探测图形,就是二维码上的三个方块。这三个方块的作用就是不管在哪个方向扫描图形,都可以扫到,不信可以将手机翻转测试一下。在通过二维码上的定位图形和分隔符确定二维码信息的图像。定位图形确定二维码符号中模块的坐标,二维码中的模块都是固定的,包括校正图形,版本信息,数据和纠错码。分隔符呢,就是将探测图形与二维码信息图像分开。
2、灰度化二维码信息像素:手机拍到的图像都是彩色的,所以拍摄到二维码也不列外,它也是彩色的,只不过除了黑白,其他颜色非常浅而已。灰度化是指通过颜色的深浅来识别二维码,就是说颜色深的按深灰处理,浅色的按浅灰处理,去掉其他颜色。
3、去掉二维码信息像素的噪点:相机的传感器在把光线作为接收信号和输出过程产生的粗糙像素,这些粗糙的像素是照片中不应该出现的干扰因素。噪点就是指这些粗糙的像素。
4、二值化二维码信息像素:二值化是说将图像上像素灰度值设置为0或者255,也就是变成只有黑白两种颜色。第一步已经灰度化变成只有深灰和浅灰两种颜色,现在二值化是将深灰变成黑色,浅灰变成白色。为什么变成黑白色呢。因为二维码图像其实是由二进制的0或者1组成,0代表白色,1代表黑色。二维码在二值化时会将二维码图像变成只有黑白色的条码,然后根据解析公式什么的(因为像素是0-255之间,要全部转变成0或者255,估计得经过一些计算,然后0就是0,255变为1)转化成二进制信息。
5、二维码译码和纠错:将得到的二进制信息进行译码和纠错。得到的二进制信息是版本格式信息、数据和纠错码经过一定的编码方式生成的,所以译码是对版本格式信息,数据和纠错码进行解码和对比。纠错是和译码同时进行的,将数据进行纠错。得到数据
加粗样式版本信息: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个版本尺寸,当尺寸过大后需要有根标准线,不然扫描的时候可能会扫歪。