《二维码识别的初步研究.doc》由会员分享,可在线阅读,更多相关《二维码识别的初步研究.doc(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流二维码识别的初步研究.精品文档.1. 什么是二维条形码:条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。一维条码是由一组粗细不同、黑白(或彩色)相间的条、空及其相应的字符(数字字母)组成的标记,即传统条码。如下图所示二维条码是用某种特定的几何图形按一定规律在平面(二维方向)上分布的条、空相间的图形来记录数据符号信息。如下图所示1.1条形码的分类(1)行排式二维条码 (2D STACKED BAR CODE)又称:堆积式二维条码或层排式二维条码,其编码原理是建立在一维条码基础之上,按需
2、要堆积成二行或多行。有代表性的行排式二维条码有:PDF417、CODE49、CODE 16K等。如下图所示(2)矩阵式二维条码 (2D MATRIX BAR CODE) 又称:棋盘式二维条码。有代表性的矩阵式二维条码有:QR Code 、Data Matrix、Maxi Code、Code one 等。QR 码 1.2二维码与一维码的比较条码类型信息密度与信息容量错误校验及纠错能力垂直方向是否携带信息用途对数据库和通信网络的依赖识别设备一维码信息密度低,信息容量少可通过校验字符进行错误校验,没有纠错能力不携带信息物品的标识多数应用场合对数据库和通信网络形成依赖可用线扫描器识读,如光笔、线阵CC
3、D、激光枪等二维码信息密度高,信息容量大具有错误校验和纠错能力,可根据需求设置不同的纠错级别携带信息对物品的描述可不依赖数据库及通讯网络而单独应用对于行排式二维条码可用线扫描器的多次扫描识读;对于矩阵式二维条码仅能用图像扫描器识读2. 二维码识别的原理(以QR码为例):2.1 QR码简介QR 码是快速识别矩阵码( quick response code)的简称,最早由日本Denso 公司在1994 年9 月推出,我国于2000 年底颁布了QR 码的国家标准。QR码符号呈正方形,由空白区、功能图形区、数据图形区组成。功能图形区又分为位置探测图形、校正图形、格式信息、版本信息、定位图形等不同图形格
4、式,如下图所示。各部分图形都由深色模块( 代表二进制1) 或浅色模块( 代表二进制0) 组成,位置清晰,功能性强,有利于进行图像处理和识别。根据编码数据量的多少,QR 码可以分为40 个版本,版本1 符号大小为21 21 模块。从版本1 到版本40,符号容量越来越大,相应的图像所占打印面积也随之增大,每增大一个版本,符号图像的每边就增加4 个模块。QR 码有较强的数据容错能力,使用Reed Solomon 码进行差错控制。根据需要,可以设定L、M、Q、H 四个纠错等级,分别可恢复传输或识读出错的约7%、15%、25%、30% 的码字信息。1. 位置探测图形、位置探测图形分隔符:用于对二维码的定
5、位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;这些黑白间隔的矩形块很容易进行图像处理的检测。2. 校正图形:根据尺寸的不同,矫正图形的个数也不同。矫正图形主要用于QR码形状的矫正,尤其是当QR码印刷在不平坦的面上,或者拍照时候发生畸变等。3. 定位图形:这些小的黑白相间的格子就好像坐标轴,在二维码上定义了网格。4. 格式信息:表示该二维码的纠错级别,分为L、M、Q、H;5. 数据区域:使用黑白的二进制网格编码内容。8个格子可以编码一个字节。6. 版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每
6、一版本符号比前一版本 每边增加4个模块。7. 纠错码字:用于修正二维码损坏带来的错误。2.2 QR二维码的识别原理2.2.1定位手机拍摄QR 码图像时,可能会同时采集到条码周围其他的图像。这些干扰图像会增加图像处理的复杂度,因此,可以把这些没必要的干扰图像通过裁切的方式去除。校正后,直接对正方形ABCD外的区域裁切,就可以去除其余背景。QR 码符号中有3 个位置探测图形,分别位于符号图像4 个角中的3 个角,每个位置探测图像都是由固定深浅颜色的模块组成。模块深浅颜色顺序为深色浅色深色浅色深色,各元素宽度的比例为1 1 3 1 1(如下图所示)。即使图像有旋转,位置探测图像的模块颜色顺序和宽度比
7、例也不变。对二值化后的图像按行、列分别逐点扫描,把同一灰度级的相邻像素记录为线段。如果有5 段线段的长度比例符合1 1 3 1 1,且深浅颜色顺序为深浅深浅深,则记录该线段。扫描完后,把行相邻的线段分为1 组,去除与所有线段都不相邻的行线段( 可能是随机的干扰线段) 。同样处理列线段,把行线段组和列线段组中相互交叉的组分类,求出交叉的行、列线段组的中心点,即为位置探测图形的中心。2.2.2 预处理基本原理:QR 码作为手机二维码,其应用模式如下图所示。手机等智能设备通过摄像头采集带有条码符号的图像,对图像进行灰度化、二值化、旋转校正等预处理,进行条码检测。如果检测到非QR 码,则重新采集; 如
8、果是QR 码,则进行图像信息的取样。用Reed Solomon 码的译码算法对取到的数据进行纠错译码,统计出现的错误数量。如果错误数量超出纠错容量,则纠错译码失败,重新采集图像; 如果可以正确进行纠错译码,则把纠错后的信息进行各种数据模式下的译码,恢复出编码信息,继而根据应用模式进行信息输出、发送短信或网址跳转等后续处理。2.2.2.1 灰度化智能设备通过摄像头采集到的图像一般是彩色图像。因为QR 码携带的信息只需深浅两色即可表征,所以可以把彩色图转换为灰度图,继而转换为二值图像来处理,灰度化和二值化后可以显著降低图像处理的复杂度。摄像头采集到的彩色图像,一般是在RGB 空间编码的。每个像素分
9、别用1 个字节表示R、G、B 三原色。如果把RGB 空间转换为YUV色彩空间,那么Y 分量刚好表示像素的亮度,可以作为灰度值。转换公式为转换时,不必计算U 和V 两个分量的值,只需按照Y = 0. 299R + 0. 587G + 0. 114B ( 2)计算每个像素对应的灰度值,存储为1 个字节( 即256 灰度级) 即可。2.2.2.2 二值化在用手机摄像头采集图像时,由于拍摄条件不同,环境光源的干扰较多,采集的图像经过灰度化后光线往往是不均衡的,如图( a) 所示。如果直接对其进行二值化,使用单一阈值,则会把灰色的背景区域处理成为黑色前景,掩盖了条码符号的信息。图( b) 所示为使用单阈
10、值算法生成自动阈值进行二值化的结果。可见,用这种方法二值化的图像难以恢复条码信息。对照该图像的直方图可见,直方图信息明显分为3 个波峰: 第1个波峰对应黑色的条码模块;第2个波峰对应灰色背景;第3个波峰对应白色模块和空白区域。为此,考虑对图像进行分块,应用改进的Niblack 局部阈值化算法,分别进行二值化3 4。图像的直方图如图( c) 所示,明显具有3 峰结构。按照直方图计算3 峰的区间,按区间边界的灰度值对图像进行分区。对每个区域分别二值化,再叠加,得到全局的二值化图像,如图( d) 所示。可见,多阈值进行的二值化效果明显高于单一阈值,可以有效去除光线不均的影响。为增强算法的适应性,避免
11、对光线均衡图像处理的复杂化,可按照以下步骤分类进行:1) 计算并考察输入图像的直方图,如果直方图呈现明显的双峰结构,说明该图像的光线均衡,直接用直方图双峰法计算全局阈值,对图像进行二值化;2) 如果图像直方图呈现单峰或弱双峰结构,说明图像偏亮或偏暗,可使用Otsu 算法计算全局阈值进行二值化;3) 如果图像直方图具有明显的3 峰结构,说明图像光照不均,可对图像进行分块,使用改进的Niblack 多阈值方法二值化图像。注释:灰度级直方图是灰度级的函数,描述图像中具有该灰度级像素的个数。如:0123001200013210 灰度级0123像素数74322.2.2.3 旋转处理因为手机摄像头拍摄时物
12、距较短,存在较明显的透视现象,所以拍出来的条码图像常常出现几何失真。QR 码图像本应是一个正方形,拍摄的图像却畸变成一个不规则的四边形。出现几何失真的QR 码图像,很难通过解码算法译出编码信息,必须进行校正。利用二维图像的投影变换,可以对失真图形进行校正。对手机拍摄的图像进行Hough变换,求出条码的4 条边界线。由边界线求出A、S、C、D 四个交点,如下图所示。设P为拍摄图像中任意一点,用齐次坐标表示为( x,y,1) 。在校正图像中存在唯一的一点P与P对应,其齐次坐标设为( xh,yh,h) ,则存在投影变换矩阵T,满足P = TP,即把的齐次坐标转换为普通坐标,有其中t22为比例因子,可
13、取为1。将图4 中A、S、C、D四个顶点坐标以及对应的校正图中的A、S、C、D分别代入式( 4) 、式( 5) ,可得8 个方程,解出矩阵T中的8 个未知数5。对拍摄图中的各像素,用式( 3) 计算得到校正值的坐标,再利用双线性插值方法进行插值,可直接得到旋转到水平方向的校正图,不需要再进行旋转校正。校正效果如下图 所示。注释:在对图像进行校正处理的时候也可以使用仿射变换。仿射变换:又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。包括:平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和错切(Shear)
14、。2.2.3 纠错与解码在译码之前通常需要对二维码进行分割,边缘检测后条码区域的边界不是很完整,所以需要进一步的修正边界,然后分割出一个完整的条码区域。首先采用区域增长的方法对符号进行分割,以此修正条码边界。其基本思想是从符号内的一个小区域(种子)开始,通过区域增长来修正条码边界,把符号内的所有点都包括在这个边界内。然后通过凸壳计算准确分割出整个符号。之后区域增长和凸壳计算交替进行,通常对那些密度比较大的条码重复两次就足够了,而对于那些模块组合比较稀疏的条码至少要重复四次,下面我们主要来进行译码的研究。把网格采样出的信息组成信息矩阵,按照6 个步骤进行纠错和译码。1) 格式信息译码。按照QR
15、码符号排列规则,取出水平方向上的15 位格式信息,与0x5412 进行按位异或( XOR) 操作去除掩膜; 用BCH 译码算法对格式信息BCH( 15,5) 译码。如无法正确译码,则取出竖直方向上的15 位格式信息进行同样操作。若2 个方向上的格式信息都无法正确译码,则无法继续识读,系统退出; 若可以正确译码,则可得到纠错等级和掩膜图形信息。2) 版本信息译码。版本7 40 的条码符号均含有版本信息。根据符号模块数量估算版本大小,如果版本在7 40 之间,则进行版本信息的译码。按照QR 码符号排列规则,取出右上角的18 位版本信息,用BCH 译码算法对版本信息BCH( 18,6) 译码。如果无
16、法正确译码,则取出左下角的18 位版本信息进行同样操作。若2 个区域的版本信息均无法正确译码,则无法继续识读,系统退出; 若可以正确译码,则可得到符号的版本。3) 去除符号掩膜。用步骤1) 得到的掩膜图形信息对符号进行异或( XOR) 操作,去除掩膜。4) 重组数据码字。按照QR 码的码字排列规则,对采样矩阵中的信息重新组合,得到数据码字和纠错码字。5) 纠错译码。用步骤1) 、2) 得到的版本和纠错等级信息,查表得到所使用的RS 码类别,用迭代译码算法对该RS 码译码6。若错误数量超出纠错容量,则无法继续识读,系统退出; 若可以正确译码,则可得到正确的数据码字。6) 数据译码。把数据码字按照
17、编码规则生成信息位流,按照位流中的模式指示符和字符计数指示符把位流分段,每段分别按照所用模式的规则译码,得到原始编码数据。3. 二维码技术的应用:二维条码具有储存量大、保密性高、追踪性高、抗损性强、备援性大、成本便宜等特性,这些特性特别适用于表单、安全保密、追踪、证照、存货盘点、资料备援等方面。1)表单应用 公文表单、商业表单、进出口报单、舱单等资料之传送交换,减少人工重覆输入表单资料,避免人为错误,降低人力成本2)保密应用 商业情报、经济情报、政治情报、军事情报、私人情报等机密资料之加密及传递。3)追踪应用 公文自动追踪、生产线零件自动追踪、客户服务自动追踪、邮购运送自动追踪、维修记录自动追踪、危险物品自动追踪、后勤补给自动追踪、医疗体检自动追踪、生态研究(动物、鸟类.)自动追踪等。4)证照应用 护照、身份证、挂号证、驾照、会员证、识别证、连锁店会员证等证照之资料登记及自动输入,发挥随到随读、立即取用的资讯管理效果。5)盘点应用 物流中心、仓储中心、联勤中心之货品及固定资产之自动盘点,发挥立即盘点、立即决策的效果。备援应用 文件表单的资料若不愿或不能以磁碟、光碟等电子媒体储存备援时,可利用二维条码来储存备援,携带方便,不怕折叠,保存时间长,又可影印传真,做更多备份。网络资源下载 可以应用到网上的资源下载,比如电子书,游戏,应用软件等等。
限制150内