QR_Code识别实验报告.doc_第1页
QR_Code识别实验报告.doc_第2页
QR_Code识别实验报告.doc_第3页
QR_Code识别实验报告.doc_第4页
QR_Code识别实验报告.doc_第5页
免费预览已结束,剩余16页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程大作业实验报告 二维条码(QR Code)的认识和识别 课程名称:数字图像处理组 长: 舒明 学号: 200730540116 年级专业班级:07 通信 1 班 成员二: 丘晖 学号: 200730590123 年级专业班级:07 通信 1 班 成员三: 张旋 学号: 200730590131 年级专业班级:07 通信 1 班 指导教师邓继忠报告提交日期2010 年 5 月 31 日项目答辩日期2010 年 6 月 1 日摘 要 二维条码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。本实验研究对象是二维码之一 QRcode,完成对其的定位,实现统计模块数、获取版本号、标志图像的功能。关键词:二维码特点 QR 码定位模块数版本号标志图像实现图I ABSTRACT Two-dimensional bar code is a specific geometry according to certain rules in the plane (two-dimensional direction) distribution of black and white graphic record of the information data symbols in the code on the clever use of the preparation of the internal logic of the computer-based composition 0 1 bit stream of the concept, using the binary number corresponds with the geometric shape to represent the text value of information, through the image input device or the optical scanning device in order to achieve information literacy automatically processed automatically. The experimental study is one of the two-dimensional code QRcode, to complete their positioning, to achieve statistical module number, to obtain the version number, logo image features.Keys:Two-dimensional code QR Code Locate Module Number Version number Logo image Implementation plan II 目 录1.项目要求. 1 2.项目原理说明. 1 2.1 二维条码与一维条码 . 1 2.2 二维条码的分类 . 1 2.3 了解 QR code 码 . 2 2.4 编码. 6 3. 系统分析. 7 3.1 系统的主要功能分析 . 7 3.2 系统的关键问题及解决方法 . 7 4.系统设计. 8 4.1 程序流程图及说明 . 8 4.2 程序主要模块介绍 . 13 5 实验结果与分析. 14 5.1 实验结果 . 14 5.2 项目的创新之处 . 16 5.3 存在问题及改进设想 . 16 6.心得体会. 16 III 1.项目要求 1)自行查找资料,了解二维条形码(QR Code)的编码原理; 2)从网上或图书馆搜集一些而为条形码的样本图像,挑选一些简单的(内含较少汉字信息)样本用于识,样本不少于 10 个; 3)编写识别二维条码的程序; 4)调试与验证程序。 2.项目原理说明 2.1 二维条码与一维条码 二维条码和一维条码都是信息表示、携带和识读的手段,但是一维条码是对“物品”的标识,二维条码则是对“物品”的描述。 二维条码除了左右(条宽)的粗细及黑白线条有意义外,上下的条高也有意义,因此与一维条码相比,二维条码可存放的信息量较大。 二维条码具有信息量大、安全性高、读取率高、纠错能力强等特点。 2.2 二维条码的分类 二维条码可以分为堆叠式/行排式二维条码和矩阵式二维条码。 堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成;矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1”,用“空”表示二进制“0”,由“点”和“空”的排列组成代码。 2.2.1 堆叠式/行排式二维条码 行排式二维条码(又称:堆积式二维条码或层排式二维条码),其编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。 它在编码设计、校验原理、识读方式等方面继承了一维条码的一些特点,识1 读设备与条码印刷与一维条码技术兼容。但由于行数的增加,需要对行进行判定、其译码算法与软件也不完全相同于一维条码。 有代表性的行排式二维条码有 CODE49、CODE 16K、PDF417 等。 2.2.2 矩阵式二维码 短阵式二维条码(又称棋盘式二维条码)它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。 矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。 具有代表性的矩阵式二维条码有:Code One、Maxi Code、QR Code、Data Matrix等。 2.3 了解 QR code 码 2.3.1 QR code 的主要特点 (1)超高速识读: 从 QR Code 码的英文名称 Quick Response Code 可以看出,超高速识读特点是 QR Code 码区别于四一七条码、Data Matrix 等二维码的主要特性。由于在用CCD 识读 QR Code 码时,整个 QR Code 码符号中信息的读取是通过 QR Code 码符号的位置探测图形,用硬件来实现,因此,信息识读过程所需时间很短,它具有超高速识读特点。 用 CCD 二维条码识读设备,每秒可识读 30 个含有 100 个字符的 QR Code 码符号;对于含有相同数据信息的四一七条码符号,每秒仅能识读 3 个符号;对于Data Martix 矩阵码,每秒仅能识读 23 个符号。 (2)全方位识读: QR Code 码具有全方位(360u65289X识读特点,这是 QR Code 码优于行排式二维条码如四一七条码的另一主要特点,由于四一七条码是将一维条码符号在行排高度上的截短来实现的,因此,它很难实现全方位识读,其识读方位角仅为10 (3)能够有效地表示中国汉字、日本汉字: 2 由于其特定的数据压缩模式表示中国汉字和日本汉字,它仅用 13bit 可表示一个汉字,而四一七条码、Data Martix 等二维码没有特定的汉字表示模式,因此仅用字节表示模式来表示汉字,在用字节模式表示汉字时,需用 16bit(二个字节)表示一个汉字,因此比其它的二维条码表示汉字的效率提高了 20%。2.3.2 QR code 的符号结构 每个 QR code 码符号由名义上的正方形模块构成,组成一个正方形阵列,它由编码区域和包括寻像图像、分隔符、定位图像和校正图像在内的功能图像完成。功能图像不能用于数据编码。符号的四周由空白区包围。如图 1 所示: 图 1 QR Code 的图形结构2.3.3 符号版本和规格 共 40 种规格,分别为版本 1、版本 2 版本 40。版本 1 为 21*21 模块,版本 2 为 25*25 模块,每一版本比前一个版本每边多 4 个模块,以此类推,模块为 177*177 模块。如图 2、图 3、图 4 所示: 3 图 2 版本 1 的结构图 3 版本 2 的结构图 4 版本 7 的结构4 2.3.4 寻像图形 QR Code 图像具有三个位置探测图形,分别位于条码的左上、左下角。位置探测图形如下图所示,形特征是黑白条。比例为:黑白黑白黑= 1131。 由于位置探测图形具有特殊的比例,同时在掩模作用下,在 QR Code 条码的其他位置不可能出现这样比例的图形,所以可以通过找到三个位置探测图形来精确定位条码,如图 5 所示: 图 5 位置探测图形的结构2.3.5 定位图形 水平和垂直定位图分别为一个模块宽的一行和一列,由深色浅色模块交替组成,其开始和结束都是深色模块。水平定位图形位于上部的两个位置探测图形之间,符号的第六行。垂直定位图形位于左侧的两个位置探测图形之间,符号的第六列。它们的作用是确定符号的密度和版本,提供决定模块坐标的基准位置。见图 1。 2.3.6 校正图形 每个校正图形可看做是三个重叠的同心正方形,由(5*5)个的深色模块,(3*3)个的浅色模块以及位于中心的一个深色模块组成,校正图形的数量视符号的版本数而定,在模式 2 的符号中,版本 2 以上(含版本 2)的符号均有校正图像。见图 1。 2.3.7 编码区域 5 编码区域包括表示数据码字、纠错码字、版本信息和格式信息的符号字符。见图 1。 2.4 编码 2.4.1 数据分析 即分析输入的数据流,确定转换字符所使用的模式类型。QR Code 码包括几种不同的模型以便高效的转换数据字符,必要时可以进行模块之间的转换,从数字模式到日本汉字模式和中文汉字模式,每种模式所需要的位数逐渐增加,通过模式的转换可以使数据的为流长度最短。 2.4.2 数据编码 对于不同模式,按照各模式所定义规则,将数据字符转换为位流。当需要进行模式转换时,在新的模式转换起始位置加入模式指示符,在数据序列末端加入终止符,由此产生的位流可以分为每 8 位一个码字,必要时加入填充字符以满足不同版本所需要的数据码数。 2.4.3 纠错 QR Code 码采用相对纠错算法生成一系列纠错码字,添加数据码字序列之后,使符号在遇到损坏时不至于丢失数据。共有 L、M、Q、H 四个纠错等级,对应四种纠错容量。 根据版本和纠错等级,将数据码字分为一块或多块,对每一块分别进行纠错运算,每个版本,每个纠错等级的码字总数、纠错码字总数、纠错快的结构和数量都有规定。 2.4.4 掩为了提高 QR Code 码阅读的可靠性,最好均匀的安排深色和浅色模块,且尽可能避免位置探测图形出现在其他区域。具体方法是:依次将掩膜图形用于符号的编码区域,按评价结果选择,是深色浅色模块比率最优,且不希望出现图形最小化。 2.4.5 格式和版本信息 格式信息为 15 位,其中 5 位数据位,其余 10 位,其余 10 位有 BCH(15,5)6 编码得到的纠错位。 版本信息 18 位,其中 6 位数据位,其余 12 位是由 BCH(18,6)编码计算出来的纠错位。 3. 系统分析 3.1 系统的主要功能分析 3.1.1 QR Code 的版本识别,并算块数 在对 QR Code 解码过程中,我们首先要找到 QR Code 的具体位置并确定它的版本号和模块数,这就要找到三个作为确定条码位置的位置探测图形,根据位置探测图形固有的 7*7 模块数的特点和探测图形与条码宽度的比较,可以计算出条码的模块数,继而得出版本号。 3.1.2 QR Code 定位并标位置图像 寻找探测图形即为 QR Code 的定位,首先把左上角探测图形命名为方块 1,左下角探测图形命名为方块 2,右上角探测图形命名为方块 3,可以用扫描黑色像素函数,逐行扫描和逐列扫描找出方块 1、2、3 的各边位置,找到探测位置图形后就可以用矩形标记函数和填充函数将三个方块的位置标记并填充为像素值是 0 的区域。 3.2 系统的关键问题及解决方法 第一个关键问题是找到三个方块的各边界位置,解决的方法是:用一个水平方向的循环和垂直方向的循环分别从左到右和从上到下扫描确定每列和每行的黑色像素点数,从左到右扫描每一列时,一旦出现黑色像素即可判定为方块 1和方块 2 的左边界,继续扫描直到当黑色像素消失,这时候可以判定为方块 3的右边界。 同理从上到下扫描每一行时候可以判定出方块 1 和方块 3 的上边界,方块 2的下边届;确定了方块 1 上边界和左边界的位置后,只扫描方块 1 的上边界那一行,从方块 1 的左边界从左到右开始扫描,首次出现黑色像素为 0 的时候即可判7 定为方块 1 和方块 2 的右边界,然后从方块 3 的右边界从右到左扫描,首次出现黑色像素为 0 的时候即可判定为方块 3 的左边界,同理,根据单列扫描额度方法可以判定出方块 1 和方块 3 的下边界和方块 2 的上边界,至此,三个位置探测图形的四个边界都已经找到。 第二个关键问题是识别版本号和计算模块数,解决的方法是:找到方块 1的左边界 left1 和右边界 right1,找到方块 3 的右边界 right3 之后,则right1-left1 为方块 1 的宽度,right3-left1 为 QR Code 的宽度,可用公式7*(right3-left1)/( right1-left1)得出 QR Code 的模块数。 4.系统设计 4.1 程序流程图及说明 假设我们将定位正方形的四条边的位置设为 up1,down1,left1,right1。如图 6 所示: 图 6 变量的设定以此类推,分别设定其他两个定位正方形的边长位置为 up2, down2, left2, 8 right2; up3, down3, left3, right3。为了得到他们的位置,我们可以采用行列扫描的方式,如图 7 所示:图 7 扫描方式下面,我们用框图形式介绍我们如何得到 up1, down1, left1, right1。见图 8。行扫描列扫描否像素值为 0 是计数值加 1 否列尾9 是图 8 程序框图通过这个程序框图我们便得到了每一列像素值为 0(黑色点)的个数。由于图像是二值的,所以我们只要找到第一个计数值不为 0 的那一列就是 left1 的值,同理,我们可以得到 left2,以及 right3。同理,当我采用先行扫描,再列扫描的方式的话,就可以得到 up1, up3, down2的值。在这 6 个值的基础上,我们就可以求出剩余的 6 个值。具体代码如下:/统计每列黑色像素的个数for(x=0;xwidth;x+) for(y=0;yheight;y+) IPI_GetPixelValue (SourceImage, x, y, &pixval); if(pixval=0) ax+; /找出 1、2 左边界和 3 右边界for(x=0;x1) left1=x+1; left2=x+1; break; for(x=width-1;x0;x-) if(ax=0&ax-11) right3=x-1; break; 10 /统计每行黑色像素的个数for(y=0;yheight;y+) for(x=left1;xwidth;x+) IPI_GetPixelValue (SourceImage, x, y, &pixval); if(pixval=0) by+; /找出 1、3 上边界和 2 下边界for(y=0;y1) up1=y+1; up3=y+1; break; for(y=height-1;y0;y-) if(by=0&by-11) down2=y-1; break; /找出 1、2 右边界for(x=left1;x0) right1=x-1; right2=x-1; break; /找出 1、3 下边界for(y=up1;y0) 11 down1=y-1; down3=y-1; break; /找出 3 左边界for(x=right3;x0;x-) IPI_GetPixelValue (SourceImage, x, up1, &pixval); if(pixval0) left3=x-1; break; /找出 2 上边界for(y=down2;y0;y-) IPI_GetPixelValue (SourceImage, left1, y, &pixval); if(pixval0) up2=y-1; break; n=(right3-left1+1)/(right1-left1+1)/7); /计算模块数version=(n-21)/4+1; /计算版本号通过设定断点,再点击变量窗口,我们可以很清楚的看到 3 个定位正方形四条边的具体位置。见图 9。12 图 9 变量窗口得到了定位正方形的位置,我们也就可以提取 QR Code 的编码图形区了。4.2 程序主要模块介绍 图 10 程序的主界面程序的主界面如图 10 所示,我们程序包含的功能有 3 个:打开 QR Code 图形;获取版本号和模块数;标记图像获得编码图形区。13 5 实验结果与分析 5.1 实验结果 程序运行情况如图 11 图 12、图 13 所示:图 11 打开 QR Code 图片14 图 12 计算版本号图 13 标记图形15 5.2 项目的创新之处 在 QR Code 的编码区域是有专门的读取版本号的编码的,但是我们通过其图形

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论