二维码的生成与识别

大学最后一次课程设计,竟然是数字图像处理。能够想象有多为难,对于一个普通的二本学生来讲,这无疑是一个挑战。好在老师对咱们放低了要求,能够站在巨人的肩膀上,能够从网上down别人的代码,可是必定要弄懂。咱们组选择题目的是二维码的生成与识别。完成这个课设才发现日常生活中随处可见的二维码竟然这么复杂。果真不了解就没有发言权啊。测试

下面我就把我总结的关于二维码的相关知识点分享一下。ui

二维码

二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。编码

二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按必定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,经过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具备条码技术的一些共性:每种码制有其特定的字符集;每一个字符占有必定的宽度;具备必定的校验功能等。同时还具备对不一样行的信息自动识别功能、及处理图形旋转变化点。spa

二维码的结构

一、版本信息:version1(21*21),version2,...,version40,一共40个版本。版本表明每行有多少模块,每个版本比前一个版本增长4个码元,计算公式为(n-1)*4+21,每一个码元存储一个二进制0或者 1。1表明黑色,0表示白色。好比,version1表示每一行有21个码元。设计

二、格式信息:存储容错级别L(7%),M(15%),Q(25%),R(35%)。容错:容许存储的二维码信息出现重复部分,级别越高,重复信息所占比例越高。目的:即便二维码被图标遮住一部分,同样能够获取所有二维码内容。有图片的二维码, 图片不算二维码的一部分,它遮住一部分码元,但仍是能够扫描到全部内容。code

三、码字:实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误,就是说当码元被图片遮住,能够经过纠错码字来找回)。blog

四、位置探测图形、位置探测图形分隔符、定位图形,校订图形:用于对二维码的定位。位置探测图形用于标记矩形大小,3个图形肯定一个矩形。定位符是由于二维码有40个版本尺寸,当尺寸过大后须要有根标准线,否则扫描的时候可能会扫歪。图片

         具体的二维码结构如图1-1所示。ci

 

图:1-1二维码结构示意图数据分析

二维码的生成过程

信息按照必定的编码规则后变成二进制,经过黑白色造成矩形。

  1. 数据分析:肯定编码的字符类型,按相应的字符集转换成符号字符; 选择纠错等级,在规格必定的条件下,纠错等级越高其真实数据的容量越小。

格式

容量

数字

最多7089字符

字母

最多4296字符

二进制数(8 bit)

最多2953字节

日文汉字/片假名

最多1817字符(采用Shift JIS)

中文汉字

最多984字符(采用UTF-8)

中文汉字

最多1800字符(采用BIG5)

 

  1. 数据编码:将数据字符转换为位流,每8位一个码字,总体构成一个数据的码字序列。其实知道这个数据码字序列就知道了二维码的数据内容。
  2. 纠错编码:按须要将上面的码字序列分块,并根据纠错等级和分块的码字,产生纠错码字,并把纠错码字加入到数据码字序列后面,成为一个新的序列。

 

纠错等级

纠错水平

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.格式和版本信息:生成格式和版本信息放入相应区域内。

二维码的识别

一、定位图形:首先寻找探测图形,就是二维码上的三个方块。这三个方块的做用就是无论在哪一个方向扫描图形,均可以扫到,不信能够将手机翻转测试一下。在经过二维码上的定位图形和分隔符肯定二维码信息的图像。定位图形肯定二维码符号中模块的坐标,二维码中的模块都是固定的,包括校订图形,版本信息,数据和纠错码。分隔符呢,就是将探测图形与二维码信息图像分开。

二、灰度化二维码信息像素:手机拍到的图像都是彩色的,因此拍摄到二维码也不列外,它也是彩色的,只不过除了黑白,其余颜色很是浅而已。灰度化是指经过颜色的深浅来识别二维码,就是说颜色深的按深灰处理,浅色的按浅灰处理,去掉其余颜色。
三、去掉二维码信息像素的噪点:相机的传感器在把光线做为接收信号和输出过程产生的粗糙像素,这些粗糙的像素是照片中不该该出现的干扰因素。噪点就是指这些粗糙的像素。

四、二值化二维码信息像素:二值化是说将图像上像素灰度值设置为0或者255,也就是变成只有黑白两种颜色。第一步已经灰度化变成只有深灰和浅灰两种颜色,如今二值化是将深灰变成黑色,浅灰变成白色。为何变成黑白色呢。由于二维码图像实际上是由二进制的0或者1组成,0表明白色,1表明黑色。二维码在二值化时会将二维码图像变成只有黑白色的条码,而后根据解析公式什么的(由于像素是0-255之间,要所有转变成0或者255,估计得通过一些计算,而后0就是0,255变为1)转化成二进制信息。

五、二维码译码和纠错:将获得的二进制信息进行译码和纠错。获得的二进制信息是版本格式信息、数据和纠错码通过必定的编码方式生成的,因此译码是对版本格式信息,数据和纠错码进行解码和对比。纠错是和译码同时进行的,将数据进行纠错。获得数据

相关文章
相关标签/搜索