为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

图像处理二维码解码技术

2017-09-02 18页 doc 96KB 31阅读

用户头像

is_426115

暂无简介

举报
图像处理二维码解码技术图像处理二维码解码技术 东华大学研究生课程论文封面 教师填写: 得分 任课教师签名 年 月 日 学生填写: 姓名 学号 专业 导师 课程名称 任课教师 课程学分 上课时间 20 至20 学年 第 学期 星期 递交时间 年 月 日 本人郑重声明:我恪守学术道德,崇尚严谨学风。所呈交的课程论文,是本人独立进行研究工作所取得的成果。除文中已明确注明和引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品及成果的内容。论文为本人亲自撰写,我对所写的内容负责,并完全意识到本声明的法律结果由本人承担。 ...
图像处理二维码解码技术
图像处理二维码解码技术 东华大学研究生课程论文封面 教师填写: 得分 任课教师签名 年 月 日 学生填写: 姓名 学号 专业 导师 课程名称 任课教师 课程学分 上课时间 20 至20 学年 第 学期 星期 递交时间 年 月 日 本人郑重声明:我恪守学术道德,崇尚严谨学风。所呈交的课程论文,是本人独立进行研究工作所取得的成果。除文中已明确注明和引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品及成果的内容。论文为本人亲自撰写,我对所写的内容负责,并完全意识到本声明的法律结果由本人承担。 论文作者签名: 摘 要 在自动识别技术中,二维条码技术以其低成本、快速识读、大信息量、高安全性等优点,在社会生活中应用越来越广泛。物联网技术的蓬勃发展,也对二维条技术提供了广阔的应用空间。相应的二维条码编码、解码技术研究已经很多,应用上也基本成熟。目前,随着移动通信技术的飞速发展,手机的拥有量和使用量越来越大,功能也越来越强。二维条码技术和移动通信技术的结合,促成了手机二维码的诞生。因此,研究在手机等带有摄像头的智能嵌入式设备中的解码技术变得非常必要。与PC 系统下的解码方式相比,手机型号多种多样,性能差别很大,摄像头拍摄时受环境干扰也多。在复杂条件下如何有效进行二维条码解码的研究就显得非常必要。本文以QR 二维条码为例,通过图像处理技术对带有摄像头的智能设备采集的二维条码图像进行分析处理,解码出二维条码的编码信息,为手机二维码的广泛应用打下一定的技术基础。 关键词:QR,二维码,编解码,物联网 1 目录 目录 .................................................................................................................................................. 2 1 绪 论............................................................................................................................................. 1 1.1 目的和要求 ........................................................................................................................ 1 1.2 设计内容 ............................................................................................................................ 1 1.3 总体设计 .................................................................................................................... 1 2 二维码简介 ................................................................................................................................... 2 2.1 定义 .................................................................................................................................... 2 2.2 原理 .................................................................................................................................... 2 2.3 应用 .................................................................................................................................... 3 3 二维码解码技术 ........................................................................................................................... 4 3.1 算法总体 .................................................................................................................... 4 3.2 图像的灰度化 .................................................................................................................... 4 3.3 图像的降噪处理 ................................................................................................................ 5 3.4 图像的二值化处理 ............................................................................................................ 6 3.5 图形的定位 ........................................................................................................................ 7 3.6 常规扫描方法 .................................................................................................................... 7 3.7 测试和调试 ...................................................................................................................... 11 结论 ................................................................................................................................................ 13 致谢 ................................................................................................................................................ 14 参考文献......................................................................................................................................... 15 2 1 绪 论 1.1 目的和要求 本课题主要研究二维条码的识别程序及译码方法,使用C语言来开发二维码的识别程序。查找并阅读相关资料,了解基本的内容,利用需求分析文档,对整个系统有个初步的架构。搜寻实验用的文件文档集和研究过程中用到的各种工具软件。根据已有的资料并借助面向对象的程序设计思想对系统各模块进行分析、建模、设计。使用C语言来开发二维码识别程序。 1.2 设计内容 本文主要来完成二维码识别和译码程序,运用图像校正、二值化、边缘检测等各种图像处理方法实现条码的预处理,并进行二维码码的解码,结合图像处理技术,完成了基于图像处理的二维码快速识别的解码系统。 1.3 总体设计方案 本设计的主要任务是在研究二维条码的码制的基础上实现对二维码的告诉采集与识别,详细分析二维码的基本特点、符号结构;在条码图像识别方面,研究了对采集的条码图像进行预处理的方法,即:对图像进行整形。运用图像校正、二值化、去噪、边缘检测、图像旋转、数据纠错等多种图像处理方法实现条码图像的预处理、条码定位、条码分割和数据提取。对预处理后的条码图像进行译码。 1 2 二维码简介 2.1 定义 二维条码/二维码(英文名:QR Code) 是用某种特定的几何图形按一定规律在平面(二维方向)分布的黑白相间的图形记录数据符号信息的。二维码是DOI(Digital Object Unique Identifier,数字对象唯一识别符)的一种,全球最大的二维码资源中心是“渡云” ,为全球用户统一提供了“唯一数据样本”的物品、人员、组织二维码识别信息 2.2 原理 二维码的原理可以从矩阵式二维码的原理和行列式二维码的原理来讲述。 矩阵式二维码(又称棋盘式二维码)是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。下图是国内常用的矩阵式二维码实例,手机正常扫描后会跳出高可靠性的信息:在矩阵元素位置上,出现方点、圆点或其他形状点表示二进制“1”,不出现点表示二进制的“0”,点的排列组合确定了矩阵式二维码所代表的意义。矩阵式二维码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。具有代表性的矩阵式二维码有:Code One、Maxi Code、QR Code、 Data Matrix等。 图21*21的矩阵中,黑白的区域在QR码规范中被指定为固定的位置,称为寻像图形(finder pattern)和定位图形(timingpattern)。寻像图形和定位图形用来帮助解码程序确定图形中具体符号的坐标。黄色的区域用来保存被编码的数据内容以及纠错信息码。蓝色的区域,用来标识纠错的级别(也就是Level L到Level H)和所谓的"Mask pattern",这个区域被称为“格式化信息”(format information)。 行排式二维码(又称:堆积式二维码或层排式二维码),其编码原理是建立在一维码基础之上,按需要堆积成二行或多行。它在编码设计、校验原理、识读方式等方面继承了一维码的一些特点,识读设备与条码印刷与一维码技术兼容。但由于行数的增加,需要对行进行判定、其译码算法与软件也不完全相同于一维码。 2 有代表性的行排式二维码有CODE49、CODE 16K、PDF417等。其中的CODE49,是1987年由 David Allair 博士研制,Intermec 公司推出的第一个二维码。 2.3 应用 网络资源下载(网址链接,APP下载) 二维码名片(拍码即可快速导入联系人) 证照应用(身份证、识别证、会员证等证照之资料登记及自动输入) 支付方式(拍码支付,方便快捷) 车辆管理应用(驾驶证,车辆的年审文件等基本信息转化保存在二维码) 景点门票应用(景点门票,采用二维码进行售票、检票,提高通行效率) 表单应用(公文表单、商业表单、进出口报单、舱单等资料之传送交换) 婚礼应用(传统的婚礼要大派请柬,2013年婚礼只用发一张二维码即可) 会议服务(二维码彩信短信邀请函,二维码签到,彩信会刊、会后感谢) 追踪应用(生产线零件、客户服务、邮购运送、维修记录等自动追踪) 创意应用(二维码指示牌,二维码宣传广告,二维码食品身份证) 保密应用(商业情报、政治情报、军事情报等机密资料之加密及传递) 3 3 二维码解码技术 3.1 算法总体流程 首先,对采集的彩色图像进行灰度化,以提高后继的运行速度。 其次,去除噪声。采用十字形中值滤波去除噪音对二码图像的干扰主要是盐粒噪声。 再次,利用灰度直方图工具,使用迭代法选取适当的阈值,对二维码进行二值化处理,使其变为白底黑色条码。 最后,确定二维码的位置探测图形,对条码进行定位,旋转至水平后,获得条码数据,以便下一步进行解码。 灰度化 去噪 二值化 寻找探测图 形 确定旋转角获得数据 旋转 定位 度 图3.1 算法总体流程 3.2 图像的灰度化 灰度化的常用方法有两种: 1.Gray(i,j) = 0.299 * R(i,j) + 0.587 * G(i,j) + 0.114 * B(i,j) 2.Gray(i,j) = [30 * R(i,j) + 59 * G(i,j) + 11 * B(i,j)]/100 本设计进行灰度化的实现函数如下: internal virtual void imageToGrayScale(int[][] image) 4 { for (int y = 0; y < image[0].Length; y++) { for (int x = 0; x < image.Length; x++) { int r = image[x][y] >> 16 & 0xFF; int g = image[x][y] >> 8 & 0xFF; int b = image[x][y] & 0xFF; int m = (r * 30 + g * 59 + b * 11) / 100; image[x][y] = m; } } 3.3 图像的降噪处理 降噪的方法很多,选用的是中值滤波法,因为中值滤波是一种非线性平滑滤 波器。中值滤波在降低噪声的同时,又可以保持图像的细节,使用中值滤波时能 较好保护图像的边缘。 中值滤波的滤波窗口的形状和尺寸对滤波效果有一定的影响。常用的中值滤 波窗口形状一般为正方形、十字形等。就一般经验而言,对于有缓慢变化的较长 轮廓线物体的图像,适合使用正方形窗口;对于包含尖角物体的图像,适合使用 十字形窗口。窗口大小一般小于图像中最小有效物尺寸为宜。 中值滤波的函数实现如下: internal virtual bool[][] applyMedianFilter(bool[][] image, int threshold) { bool[][] filteredMatrix = new bool[image.Length][]; for (int i = 0; i < image.Length; i++) { filteredMatrix[i] = new bool[image[0].Length]; 5 } //filtering noise in image with median filter int numPointDark; for (int y = 1; y < image[0].Length - 1; y++) { for (int x = 1; x < image.Length - 1; x++) { //if (image[x][y] == true) { numPointDark = 0; for (int fy = - 1; fy < 2; fy++) { for (int fx = - 1; fx < 2; fx++) { if (image[x + fx][y + fy] == true) { numPointDark++; } } } if (numPointDark > threshold) filteredMatrix[x][y] = POINT_DARK; } } return filteredMatrix; } 3.4 图像的二值化处理 二值化就是将图像转换成只有黑或白两种颜色,二值的方法也有很多,一种较为常用的是阈值法,取一个合适的阈值,使图像中每一个像素点应该属于目标还是背景区域,从而产生相应的二值图像。 6 设原始图像为f(x,y),按照一定的准则在该图像中找到特征阈值T,将图像分割为两部分,分割后的图像为: bfxyT,, (,)0gxy,(,),b f(x,y),T1, (2-1) 其中,b为黑,b为白。 01 在QR码的图像二值化中,一般取b=1,b=0,也就是: 01 fxyT,,1 (,)gxy,(,),0 f(x,y),T, (2-2) 根据确定阈值的取样范围来分,二值化的方法可以分为全局阈值法与局部阈值法。全局阈值法对整幅图像的所有像素点进行取样,通过相关算法计算出一个阈值,进行二值化。而局部阈值法(又称为自适应阈值法)是将整幅图像划分成若干区域(通常是均匀划分),对每块区域中的像素点进行阈值计算,每块区域得出一个阈值,然后分块进行二值化[9,10,11]。使用局部阈值法时,每一块区域的二值化过程是独立进行的。 本文使用的是中间值法,先对区域中所有像素点进行遍历,找出最大的灰度值Graymax和最小的灰度值Graymin,然后求出最大灰度值与最小灰度值的中间值Graymid,将该灰度值作为区域的阈值,即 T = Graymid = (Graymax + Graymin) / 2。 3.5 图形的定位 图3.2 定位图形 3.6 常规扫描方法 GB/T 18284-2000中推荐的扫描方法如下: 1. 在X方向进行依次扫描。 7 a) 固定Y坐标的取值,在X方向上画一条水平直线(称为扫描线)进行扫 描。当扫描线被黑白相间地截为1:1:3:1:1时,可以认为该直线穿过了 位置探测图形。在实际判定时,比例系数允许0.5的误差,即比例系数 为1的,允许范围为0.5~1.5,比例系数为3的,允许范围为2.5~3.5。 b) 当寻找到有直线穿过位置探测图形时,记录下位置探测图形的外边缘相 遇的第一点和最后一点A和B。由A、B两点为端点的线段称为扫描线段。 将扫描线段保存下来。 图3.3 扫描线段 2. 在Y方向,使用相同的方法,进行垂直扫描,同样保存扫描得到的扫描 线段。 扫描步骤获得的扫描线段是没有经过分类的,也就是对于特定的一条扫 描线段,无法获知其具体对应于三个位置探测图形中的哪一个。在计算 位置探测图形中心坐标之前,要将所有的扫描线段按照位置进行归类。 一般采用距离邻域法进行扫描线段的分类。 距离邻域法的思想是:给定一个距离阈值d。,当两条扫描线段的中点的T 距离小于d。时,认为两条扫描线段在同一个邻域内,将它们分为一类,T 反之则归为不同的类别。 距离邻域法的具体步骤如下: (1) 给定一个距离阈值d。,d。要求满足以下条件:位于同一个位置探测图TT 形之中的任意两点之间的距离小于d。,位于不同位置探测图形中的任意T 两点之间的距离大于d T (2) 新建一个类别,将第1条扫描线段归入其中。 (3) 对于第i条扫描线段l(2?i?n),做以下操作: i a) 求出l的中点C。 ii b) 分别计算C与在已存在的每一个类别中的第一条扫描线段的中点i 8 的距离d,若d,d,则直接将l加入相应类别中。 Ti c) 若无法找到l可以加入的类别,则新建一个类别,将l加入其中。 ii(4)将所有类别按照包含扫描线段的数目进行从大到小排序,保存前3个类别(即包含扫描线段数目最多的3个类别),其余的视为误判得到的扫描线段(在位置探测图形以外的位置得到的符合扫描特征的扫描线段),直接舍去。 距离邻域法结束后得到的分好3个类别的扫描线段就分别对应了3个位置探测图形。距离邻域法的关键就是距离阈值的选取。一般对于不同大小的QR码图像,要使用不同的距离阈值。 其中GB/T 18284-2000中推荐的位置探测图形中心坐标的计算方法如下: (1) 在X方向的扫描线段中找出最外侧的两条,分别取中点,记为A、B。 由A、B两点连一条直线。 图3.4 对X方向扫描线段的处理 (2) 在Y方向的扫描线段中找出最外侧的两条,分别取中点,记为C、D。 由C、D两点连一条直线。 图3.5 对Y方向扫描线段的处理 (3) 计算直线AB与直线CD的交点O,即为位置探测图形中心点。 9 图3.6 位置探测图形中心点 将QR码符号的左上、右上位置探测图形的中心分别记为A、B。连接A、B。直线AB与水平线的夹角α即为QR码符号的旋转角度。 图3.7 旋转角度 对于该旋转角度α,求出其正弦值sinα与余弦值cosα即可。具体计算公式如下: yy,BAsin,,AB (2-3) xx,BAcos,,AB (2-4) 其中, 22,,,,AB,x,x,y,yABAB (2-5) 在GB/T 18284-2000中定义的位置探测图形边长的计算是基于无旋转图像的,在无旋转图像中,水平扫描线段的长度即为位置探测图形的边长。 水平扫描线段AB的长度即为位置探测图形的边长X。 图3.8 位置探测图形的边长 10 对于经过旋转的QR码图像,先通过插值算法生成旋正的QR码图像,然后按照如上所述的方法进行位置探测图形边长的计算 3.7 测试和调试 为了便于调试,本文设计了一个QR编码的方法,用于生成QR图像,再把生成的图像用识别器进行识别。 界面如下: 图3.9 调试界面 其中实现QR编译的类为QRCodeEncoder ,主要的属性有:QRCodeEncodeMode、QRCodeScale、QRCodeVersion、QRCodeErrorCorrect,编译方法声明为 Bitmap Encode( String , Encoding ),设置好QRCodeEncoder的属性后,再调用QRCodeEncoder. Encode( 需编码的字符串 ,字符串的字符集 )就可以得到字符串对应的QR码,结果是一个Bitmap类,可以保存为图片。 图3.10 二维码图片 QR码的识别处理,封装在QRCodeDecoder类中,该类有一个解码方法声明为 String 11 decode(QRCodeImage) ,其中QRCodeImage为需要识别的图片,返值为识别后的字符串,要使用QRCodeImage,可以在生成QRCodeImage对象的时候,传一个Bitmap对象。 译码界面如下: 图3.11 译码界面 12 结论 本文已详细分析了图像的识别技术,在此基础上,根据新的应用需求也可以进行其它条码的识别。研究二维码图像的识别技术。运用图像校正、二值化、去噪、边缘检测、Hough变换、图像旋转等多种图像处理方法实现条码图像的预处理、条码定位、条码分割和数据提取。但由于各方面的原因,仍然存在着许多问题有待于进一步研究,比如识别算法的单一性问题以及纠错问题等,在稳定性和高效性也有进一步改进的可能。希望在后续工作中进一步改进和完善系统的功能。 二维码由于具有高密度、大容量、纠错能力强、可表示文字图像等信息、可加密等优点,己广泛应用于传统的工业自动化生产线、医疗服务、收费系统、商品管理系统及信息查询系统等各个领域。而且随着当今信息技术的发展和网络的普及,二维条码将有更大的商机和更广阔的发展前景。 13 致谢 在课程设计的这段时间里,每个阶段的工作与学习都充满着酸甜苦辣,不过一切总将过去。在任课老师的悉心指导以及同学的帮助与鼓励下,我顺利地完成课程设计,在此,我对他们表示衷心地感谢~首先,我要感谢我的任课老师范红。范老师平易近人,和蔼可亲,很少批评我们,对我们不会的问题,她都不厌其烦的给我们讲解,并教会我很多新的知识。在本次课程设计的过程中,范老师给予了许多的关怀,帮助和支持。在此,向范老师表示深深的谢意。其次,我还要感谢学校,是她提供了良好的学习条件和生活环境。课程设计期间,图书馆相关的书籍为我提供了很好的查阅平台,还有学校的电子阅览室有着丰富的文献资料供我查阅,这都给我顺利完成课程设计带来了很大的方便。 14 参考文献 [1]李弼程,彭天强,彭波.智能图像处理技术[M].北京:电子工业出版社,2004 [2]于殿涨.图像检测与处理技术[M].西安:西安电子科技大学出版社,2006 [3]杨淑莹.VC+十图像处理程序设计[M].北京:北方交通大学出版社,2003 [4]孙家广.计算机图形学[M].北京:清华大学出版社,2002 [5]何斌,马天予,王运坚.VisualC++数字图象处理[M].北京:人民邮电出版社,2002 [6]中国物品编码中心.条码技术与应用[M].北京:清华大学出版社,2004 [7]张成海,郭卫华. QRCode一种新型的矩阵符号[M].北京:中国标准出版社,2000。 [8]中国物品编码中心.QRCode二维码技术与应用[M].北京:中国标准出版社,2002。 [9]王新梅.纠错码与差错控制.北京:人民邮电出版社[M],1989. [10]朱诗兵,刘作学,李迎春.信息论与编码理论[M].北京:科学出版社,2005 [11]刘宏伟,严妍.快速响应码的识别和解码[M].北京:计算机工程与设计,2005.6 15
/
本文档为【图像处理二维码解码技术】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索