大学最后一次课程设计,竟然是数字图像处理。能够想象有多为难,对于一个普通的二本学生来讲,这无疑是一个挑战。好在老师对咱们放低了要求,能够站在巨人的肩膀上,能够从网上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二维码结构示意图数据分析
信息按照必定的编码规则后变成二进制,经过黑白色造成矩形。
格式 |
容量 |
数字 |
最多7089字符 |
字母 |
最多4296字符 |
二进制数(8 bit) |
最多2953字节 |
日文汉字/片假名 |
最多1817字符(采用Shift JIS) |
中文汉字 |
最多984字符(采用UTF-8) |
中文汉字 |
最多1800字符(采用BIG5) |
纠错等级 |
纠错水平 |
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)转化成二进制信息。
五、二维码译码和纠错:将获得的二进制信息进行译码和纠错。获得的二进制信息是版本格式信息、数据和纠错码通过必定的编码方式生成的,因此译码是对版本格式信息,数据和纠错码进行解码和对比。纠错是和译码同时进行的,将数据进行纠错。获得数据