(电路与系统专业论文)基于嵌入式平台的pdf417二维条码的识别设计与研究.pdf_第1页
(电路与系统专业论文)基于嵌入式平台的pdf417二维条码的识别设计与研究.pdf_第2页
(电路与系统专业论文)基于嵌入式平台的pdf417二维条码的识别设计与研究.pdf_第3页
(电路与系统专业论文)基于嵌入式平台的pdf417二维条码的识别设计与研究.pdf_第4页
(电路与系统专业论文)基于嵌入式平台的pdf417二维条码的识别设计与研究.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(电路与系统专业论文)基于嵌入式平台的pdf417二维条码的识别设计与研究.pdf.pdf 免费下载

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

文档简介

基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 1 1 课题研究背景及意义 1 绪论 二维条码( 铆o - 击m e n s i o n mb a r c o d e ) 作为一种全新的信息存储、传递和识别 技术,现今已被许多国家应用于商业流通、仓储、医疗卫生、图书情报、邮政、 铁路、交通运输、生产自动化管理等领域【1 1 。条码技术的诞生从根本上改变了人 们对信息的采集以及处理方式,即实现了信息化、现代化社会所要求的信息高速 处理,又对人们的工作环境质量、生活水平状况有着极大地提升。它的广泛使用 为人类社会的信息化、自动化、现代化作出了十分重要的贡献。 由于一维条码逐渐不能满足人类的实际应用需求,国外在上世纪8 0 年代末开 始研究二维条码技术,迫切希望发明一种新的条码,除了具有一维条码制作容易、 信息采集速度快、灵活实用、设备结构简单、成本低等特点外,还能够具有信息 容量大、可靠性高、保密防伪性强等优点。目前世界范围内已研制出多种码制的 二维条码,常见的有:p d f 4 1 7 、q rc o d e 、c o d e 4 9 、d a t am a t r i x 、m a ) 【i c o d e 等, 其中以美国的p d f 4 1 7 码,日本的q r 码以及韩国的d a 组m a t r i x 使用最为广泛。 与一维条码相比,各码制的二维条码主要有以下几方面的优势:1 信息密度高以及 信息容量大;2 具有错误校验和纠错能力:3 垂直方向携带信息;4 不依赖数据库 和通信网络。 而随着物联网时代的到来,计算机、通信、电子一体化趋势日益明显,主流的 条码识别设备也向着小型化、智能化、网络化发展。嵌入式系统是一种面向应用 的系统,以微电子技术和计算机技术为核心,辅助以传感技术和通信技术,强调 硬件与软件的协同性与完整性,软件与硬件的可裁剪性,以满足系统对功能、成 本、体积和功耗的要求【2 】。由于其功能强大、体积小、必要时还可配用实时操作 系统等特点,嵌入式系统适用于条码识别系统的开发。近年来,手机终端已俨然 成为条码识读的嵌入式智能设备,通过白带的摄像头采集并对条码进行识别、译 码,最终将解码信息使用于各种应用,如:网上支付、票务、商品认证、安全防 伪等。因此基于嵌入式系统的二维条码识读研究具有重要的实用价值。 硕士学位论文 1 2 条码技术简介 一维条码是由黑色的“条 以及白色的“空”按某种方式排列组合而成,如 图1 1 所示。条和空以不同的方式组合来表达不同的编码信息,通过使用条码识 读设备,可将这些各不相同的组合方式解释成计算机所能理解的数字信号。识读 得基本原理为:由于黑色、白色对光线具有不同的反射率,使用特定的光学设备 将光线投射到条码上,通过接收反射光并使用光电转换电路生成电信号,后续经 过信号放大,滤波以及整形成方波信号,最后译码成二进制或十进制信息。由于 一维条码所能表达的信息有限,对事物进行编码时,需要建立数据库来存放事物 的基本信息,并将事物的基本信息与条码编码信息一一对应起来。正因如此,使 用一维条码来识别事物,是通过链接并比对数据库中的信息实现的。 哪 ! 25456 7 8 9 0 图l - l 一维条码 不同于一维条码的单方向性,二维条形码能够在横向和纵向两个方位同时表达 信息,由其排列的方式的不同可分为堆叠式二维条码和矩阵式二维条码。堆叠式 二维条码不仅在编码方式上类似于一维条码( 其可看成由若干行的一维条码堆叠 形成) ,其识度设备也可与一维条码兼容。常用的堆叠式二维条码有:嗍1 7 ( 四 一七码) 、c o d e 4 9 等( 如图1 2 所示) 。 吣鼢洲l 图1 2 四一七码与c o d e4 9 码 矩阵式二维条码的编码则是通过对黑白像素在矩形空间中的不同分布实现的。 常见的有:q rc o d e 、d a :c am a t r i x 等( 如图1 3 所示) 。 髓啊融m硼硼硼硼硼硼8_口 i-h阻i曩7-l_上 眭hhhh蕾nnh朋 畦畦畦畦畦mn叶叶n叶l 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 图1 - 3 q r 码与d a :t a m a 们x p d f 4 1 7 作为一种堆叠式二维条码,是由若干行一维条码堆叠而成的,在条码 符号的顶部和底部为空白区。上下空白区之间为多行结构,其最小行数为3 ,最大 行数为9 0 ,其结构如图1 4 所示,条码左端和右端分别包含一个条空比额定的起 始符和终止符,在中间数据符号字符的两端分别为带有行号的指示字符,其值指 示p d f 4 1 7 条码的行数、行号、数据区中符号字符的列数以及纠错等级。 起始符左指示符数据符号字符右指示符终止符 单元符号字符 图1 - 4 四一七条码符号结构 图1 5 所示为四一七条码的单位符号字符,它是组成该条码的基本单位,除条 码起始符和终止符以外,每个字符都由四个条砌和四个空( s p a c e ) 构成,每个条 和空包含1 6 个模块。在一个符号字符中,4 个条和4 个空的总模块数为1 7 【3 1 。 啪l 1 3 国内外发展研究现状 随着科技和信息技术的发展,现如今条码的识别已由带光栅的激光阅读器、线 硕士学位论文 性图像式识读器( l i i l e a ri i i l a g e r ) 、面阵c c d 图像式识读器发展到采用数字摄像机、 摄像头等来获取条码图像,并利用数字图像处理技术对条码进行识别解码。 相对于国外二维条码技术的广泛应用,二维条码识读技术在国内尚处于发展阶 段,为了满足国内各种应用需求,很多学者将大量的精力投入到条码自动识别技 术的研究中,取得了重要的研究成果,成果涵盖的内容主要针对二维条码采集识 别过程中出现的一系列问题,具体分为以下几个方面:条码的定位、条码失真矫 正、条码行列的切分、条码解码译码算法等。 条码的定位作为条码智能识别解码的第一步,也是最为重要的一步;在复杂背 景、条码位置未知的情况下,能否准确地定位条码并将条码从背景中分隔出来, 将直接影响到后续的识别和解码工作。针对上述问题,诸多学者做了大量探索研 究,并提出了关于条码定位许多有效的算法。文献【4 】中提出一种基于小波纹理分 析的检测方法,通过利用条码的高频子图的纹理相似性原理,合并具有该纹理特 征的子区域以生成连通域,认为该连通域包含有条码的数据区域,并利用低频子 图中的边界纹理检验上述连通域旁是否存在起始符与终止符,以达到定位条码的 目的。文献 5 】中提出了一种基于数学形态学运算和c 锄n y 边缘检测的定位算法。 使用c a n n y 算子检测图像边缘,并运用迭代膨胀运算生成条码候选区域,通过检测 候选区域是否为矩形、候选区域中是否存在条码的起始符和终止符来判断该区域 是否为条码区域。文献 6 】中一种基于自适应分类器的条码检测算法,将图像的灰 度无关、旋转无关的纹理特征与空间信息自适应的结合起来,对样本进行训练从 而得到二维条码的检测器。文献【7 】中提出了一种利用角点特征来筛选一维条码区 域的方法。通过检测子区域中是否具有一维条码区域所特有的的角点特征、灰度 特征来达到筛选条码区域的目的。文献 8 】中提出一种子区域多特征的方法来筛选 条码区域文献,将所采集到的图像分为若干个子区域,筛选保留子区域中符合对 比度、线性尺度、边缘强度要求的区域,即为条码区域。文献 9 提出一种基于边 缘方向特征的数据矩阵码定位方法,对于由方形模块所组成的矩阵式条码,利用 其子区域的边缘梯度方向角必定相互垂直的特点,提取出目标区域。上述方法均 能够较好地解决条码定位问题。 使用数字摄像机或摄像头采集条码图像时,由于角度的选取不佳和条码本身或 多或少存在的变形会导致采集的图像存在几何失真,因此条码成功定位并分隔后, 需要对条码图像进行失真矫正。文献 1 0 】中使用双线性变换【l l 】模型对二维条码类图 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 像进行线性失真矫正,文献 1 2 】中提出一种基于反透视变化【1 3 】模型的线性失真矫 正方法。上述两种方法对于倾斜、线性失真的情况,矫正效果比较理想。文献 1 4 】 中采用一种分块矫正的方法。通过在四一七条码的各列之间的边界上选取控制点, 将条码分为若干个子区域块,对各块分别进行插值矫正。该方法适用于矫正存在 非线性失真的条码类图像。 p d f 4 1 7 作为一种将各个单元码字堆叠放置的二维条码,在译码前需要将单元 码字分离出来,再依次进行识别解码。若能准确的定位行与行之间、列与列之间 的边界,便能准确的提取出单元码字。文献【1 5 】中提出一种基于统计学的方法来确 定条码的行数,按行数等分条码来达到分割的目的,但对于失真矫正不理想的情 况,会出现过度分割。文献 1 6 】中提出一种基于行列边界灰度投影的峰值检测方法, 通过确定边缘投影值的峰点来对行列进行分割,若存在污染以及噪声干扰的情况, 分割效果不理想。 各单元码字被分割出来后,可逐个对条空比进行识别,在这一方面有着许多有 效的方法。其中文献【1 6 】中提出基于投影算法的识别方法,对二值条码图像计算 竖直边缘,并进行竖直方向投影,计算投影峰值间的宽度与单位模块宽度的比值 来得出条空序列比。文献【1 7 】中提出一种基于滤波还原的方法,在采用基于投影 算法的方法进行识别之前,使用线性滤波器消除划痕和污点再进行复原卷积,能 增强抗噪性。文献 1 8 】提出一种基于中点检测的算法,并根据中点反推条空符号 占空比,能有效地减少边缘模糊所带来的影响。文献 1 9 】提出一种基于波形分析的 方法,估计出造成边缘模糊的点扩散函数,重建条码波形达到识别的目的。 1 4 论文的研究内容以及结构 本文主要研究p d f 4 1 7 条码的定位及识别算法,并在删1 1 开发板i 抽u x 操 作系统q t 平台下实现。该文较为全面的介绍了p d f 4 1 7 条码的符号以及结构特征、 编解码算法、r s 译码纠错算法;针对复杂背景的情况,提出了一种基于列边缘提 取的p d f 4 1 7 条码的定位提取方法。改进了传统的行列切分算法。采用一种基于 邻域标记的单位字符识别方法,实现了l i n u x 系统下利用u s b 摄像头采集条码图 像的实现、以及q t 环境下处理数字图像的方法,文章的最后给出基于嵌入式平台 的识别方法,完成条码的识别。 硕士学位论文 全文共分为六章,结构如下: 第一章为绪论,介绍了p d f 4 1 7 条码的研究背景、符号结构特点以及国内外现 状及动态,并对全文内容和章节进行规划。 第二章在p d f 4 1 7 条码的编码算法等方面进行了简要的介绍。 第三章研究了p d f 4 1 7 条码的预处理算法,其中包括条码的定位、阈值化以及 失真矫正,并对算法的性能进行了仿真。 第四章研究了条码的识别解码方法,其中包括条码的行列切分、单位字符的识 别算法以及译码算法。 第五章研究了嵌入式平台i i n u ) 【环境下的p d f 4 1 7 条码识别的实现。介绍了基 于嵌入式平台的p d f 4 1 7 条码识别系统的软硬件环境,介绍了l i n u x 系统下u s b 摄像头采集条码图像的方法,介绍了基于q t 类库的数字图像处理方案,实现对条 码的识别。 第六章为结束语。对全文的工作进行总结,总结该识别系统的所存在的不足, 并提出进一步的研究计划。 6 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 2p d f 4 17 二维条码编码 p d f 4 1 7 ( 四一七条码) 作为国际上最为先进、使用最为广泛的二维条码之一, 最早由美国的跏6 d ,公司将其作为公开的标准,在国内,国家技术监督局于1 9 9 7 年1 2 月发布了第一个条码国家标准丁1 7 1 7 2 1 9 9 7 p d f 4 1 7 条码。四一七条 码为一种典型的堆叠式二维条码,高密度的行排式结构以及采用世界上最为先进 的纠错编码技术使其具有较高的容量以及超强的纠错能力,四一七条码的最大数 据容量( 纠错等级为0 时) 可达1 8 5 0 个大写字母或2 7 1 0 个数字或1 1 0 8 个字节, 错误纠正码字数从2 到5 1 2 个,可编码字符集为全a s c i i 字符及扩展a s c i i 字符 或8 位二进制数据,多大8 118 0 0 种不同的字符集或解释【3 】。 2 1四一七码的编码流程 不: 根据四一七码的国家标准( g b t1 7 1 7 2 - 1 9 9 7 ) ,大致的编码流程如下图2 1 所 待编码数据 数据编码 文本压缩字节压缩数字压缩 模式模式模式 上 数据码字 l 纠错编码 l 构造最终信息序列 j 符号组配 图2 1 四一七条码编码流程 硕士学位论文 2 2 数据编码 四一七条码具有三个簇表:簇0 、簇3 、簇6 ,分别表示3 个不同的码字集。每 个码字集的码字取值为0 到9 2 8 ,分别对应单元符号字符的条空比值,其中o 到 8 9 9 用以表示数据,9 0 0 到9 2 8 在不同的模式中用于特定的目的符号标识【2 0 】。四一 七条码的每三行重复使用上述三个簇号,例如:一个六行的四一七条码,第一、 四行使用簇o ,第二行、五行使用簇3 ,第三、六行使用簇6 。 在数据编码中,可以采用码制中提供的三种压缩模式:文本( t c ) 、字节( b c ) 以及数字( n c ) 压缩模式进行编码,且三种模式之间可以利用特定的模式锁定码 字或模式转移码字进行相互转换,以精简条码符号的码字数目【3 】。使用上述任一 个或多个压缩模式编码所得的数据统称为数据码字。 其中,文本( t c ) 压缩模式共包含4 个子模式:大写英文字母子模式、小写 英文字母子模式、混合型子模式和标点型子模式,分别对应英文中的大、小写字 母,数字以及常见的标点符号,4 个子模式中的每一个字符对应一个数值介于0 到2 9 之间的字符值,且4 个子模式可以相互转移或锁定。在使用文本( t c ) 压 缩模式进行编码时,首先将待编码的字符两两组成一个字符对,对于字符数为奇 数的情况,需要使用值为2 9 的字符值填充。每个字符对使用式2 1 生成t c 模式 下的编码数据码字。 码字= 日3 0 + 三 ( 2 - 1 ) 其中日、l 分别对应字符对中高、低位的字符值。 字节( b c ) 压缩模式则是认为待编码的信息为字节序列,使用基2 5 6 至基9 0 0 的转化,将信息转化为码字数据。 数字( n c ) 压缩模式通常用于数字的连续位数大于1 3 个的情况。将待编码的 数字每4 4 位分为一组,执行基1 0 到基9 0 0 的转化,以达到压缩信息的目的。 2 3纠错编码 四一七条码的纠错等级共有9 个级别,其错误纠正码字数目k = 2 “1 ,其中s 取 值为o 到8 ,分别对应9 个纠错级别,用户在编码时可自行选择纠错等级进行编码, 其纠错容量的计算式为: 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 p + 2 f d 一2 = 2 5 一2 ( 2 - 2 ) 其中口代表拒读错误的数目;,代表替代错误数目;s 代表纠正等级;d 代表纠正码 字的总数。当f = 0 ;i 一) t 12 ( d i 】+ c 陋1 】) 9 2 9 ; f o r ( j - k - 1 ;j 2 0 ;j - - ) t 2 = ( t 1 宰a j 】) 9 2 9 ; t 3 = 9 2 9 t 2 ; c d 】= ( c 【i 一1 】+ t 3 ) 9 2 9 ; t 2 = ( t 1 木a 0 】) 9 2 9 ; t 3 = 9 2 9 一t 2 ; c 0 】= t 3 9 2 9 ; f o r ( i = o ;i = g 卅 伽一嘭l 1 0 。 ( 3 。9 ) 满足上述条件的像素将组成一系列的连通分量,这些连通分量中除了列与列的边 缘外,还存在各行黑白条空边缘以及噪声。可以通过设置连通分量的长度阈值来 删除长度较短的分量,即可得到列与列之间的分隔边界。 细化上述保留的连通分量【3 0 1 ,取细化连通分量的端点进行霍夫变换,即可得 到条码图像的上下边界方程,通过边界方程连接各点即得条码上下边缘,结合上 步所标记的连通域和各字符列边缘,最终完成对条码的粗定位。 3 1 5 定位算法仿真 图3 2 2 以一个邮政快递封面的例子分步骤显示了条码的检测定位过程。其中 区域子块大小为3 0 3 0 ,疋为9 0 ,乙为3 o ,在m a :r l 墟2 0 0 7 a 环境下编程进行仿真。 图3 2 2 ( a ) 为源图像;图3 - 2 2 ( b ) 为按照8 邻接原则合并对比度符合要求的子区域 而生成的各候选连通域;图3 - 2 2 ( c ) 为对各连通域进行区域子块梯度方向特征分析 后的结果;图3 2 2 ( d ) 为觑耵括角点特征检测后的结果;图3 2 2 ( e ) 为梯度主方向 硕士学位论文 _ _ - _ - - - i l i - l _ - l - - 一 上灰度跳变检测后的结果;3 2 2 ( f ) 标注连通分量;3 2 2 ( g ) 为连通分量细化后的端 点;3 2 2 ( h ) 为条码定位结果: ( a ) 源图像 ( c ) 梯度方向特征筛选的结果 ( b ) 候选连通域 ( d ) 胁括角点特征检测后的结果 ( e ) 梯度主方向灰度跳变检测( f ) 标注连通分量 基丁嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 ( g ) 连通分量细化后的端点( h ) 条码定位结果 幽3 2 2 条码的检测提取过程 图3 2 3 为条码检测结果比对。其中图3 2 3 ( a ) 为单一使用梯度方向特征检测的 结果,虽然利用梯度方向特征可以排除大部分背景纹理区域,但是无法排除某些 条码数据字符区域以及直线、明暗边界区域;图3 2 3 ( b ) 为单一使用角点特征检测 的结果,利用角点特征能有效的滤除条码内部数据区域和文字区域,但对于纹理 相似的某些英文文字、数字、以及前述线型区域无法彻底的排除;且四一七条码 的起始符和终止符分布不连贯,单一使用将导致提取出的条码区域不完整;图 3 2 3 ( c ) 为文献 8 】中方法的检测结果,由于四一七条码内部区域的边缘强度和线性 尺度类似于文字区域,该方法对以上两种纹理区分度不高;图3 2 3 ( d ) 为本文算法 的检测结果,通过多特征相结合的算法可以有效滤除大部分背景区域,并能够较 为准确地定位条码区域。 ( a ) 梯度方向特征检测的结果( b ) 胁腑角点特征检测的结果 硕十学位论文 ( c ) 文献 8 中方法的检测结果 ( d ) 为本文算法的检测结果 图3 2 3 条码检测结果比对 3 1 6 实验结果分析和结论 本文使用上述方法对5 0 幅条码图片( 其中包括邮政信封、快递封面、机票 以及自定义背景图片) 进行实验,除去一幅褶皱变形严重以及一幅印刷问题导致 条码部位无法识别外,其它均能够成功定位。图3 2 4 显示了几种不同背景下,以 及带有倾斜,污渍等干扰情况下的检测结果。 攀燮? 、? j 。篡舞黪潼赛露骥 磐“_ 赫漆“- 肇脚+ 删睡舔磐嗡茹嘲鳓。嚣鬻 | i 东蔷一 神“”嚣黎镙黔露黪勰撩熬塑骥舞愿 嘲t 一哆絷骥黧 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 t 墨c ! e - 警曼旦h 匿一一 = r l 一 一 严i - -摹 - i 二】;- j 】、 i 一1 气,e l o o 一 一、j = 苎 ro= k r 三 罩= j 奠:2 警= 。 - - 一1 = 二】一 一oj o _ - 日一 ,- 口= i 】e ! e ! := ! 一 ,一_一v 图3 2 4 实验结果 表3 1 条码定位检测率 条码图像数量定位有误无法识别准确定位准确率 5 0114 89 6 硕士学位论文 g ( z ,y ) ,则有: g ( x ,y ) : 2 三5厂( x ,主丁 ( 3 1 0 ) g ( 训) 2 o 一毫 ( 3 - 1 0 ) 二值化算法有许多种,主要分为两个大类:全局阈值以及局部阈值法。其中全 局阈值法中常用的有大津阈值( 伪纵) 澍2 9 1 、鼢砒施f 算澍3 1 1 等,全局阈值是将计 算得出的阈值作为图像中各像素的参考值,在整个二值化过程中,该阈值不会得 到改变,适用于光照条件好、目标物体与背景间的灰度差变化较小的情况。考虑 到条码图像的采集过程中存在光照强度不均匀,条码与背景间的灰度差值不恒定 的情况,若选择全局阈值,多数情况下是不能将条码部分完整的分隔出来的,即 使降低全局阈值能够得到完整的条码,但是也无法排除掉因降低阈值而引入的背 景区域。 局部阈值法中常用的有m b 肠西算法【3 2 1 、召p 力惯p 拧算法【3 3 】、勋“阳肠算法【3 4 】等, 不同于全局阈值,局部阈值则在不同的图像子区域或像素邻域之间使用的是不同 的灰度阈值。在光照条件差、区域与区域间灰度变化较大的情况下,局部阈值比 全局阈值适用。本文采用一种基于局部灰度均值和局部方差的局部阈值法来对条 码图像进行二值化。算法描述如下: 首先,将条码图像厂划分为大小相等的若干个矩形区域( 大小为,) 。其次 对各区域图像厂计算该区域内的灰度均值施口拧和方差玩砌以c p : 砌,z = 古厂( w ) ( 3 - 1 1 ) _ _ 多么订以,z c g = ( 3 - 1 2 ) 其中厂7 ( x ,y ) 为子区域内点( x ,y ) 的灰度值。最后分别在讹口咒和玩砌咒前乘以 一个矫正系数删来得到最终的阈值。 丁= w i 锄挖+ m ,2 玩,缸刀c p( 3 1 3 ) 按照上式计算各区域内的灰度均值胞口,z 和方差玩砌刀c p ,得到局部阈值丁,依次 二值化各图像区域,得到最终的二值化条码图像。 以下是几种阈值算法的结果比较: 3 0 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 ( a ) 非均匀光照强度的条码图像 ( b ) 非均匀光照强度的条码图像 ( c ) 条码图( a ) 的直方图 l 一】 ( e ) 大津阈值法二值化的结果 峰 h 随麟 辽吣 ( d ) 条码图( b ) 的直方图 :跫,墨。鬻謦爹夏1 鼹薹 黼墨 :- 一j 馨镛髓i 嗍酗弧 ( i ) 本文算法结果图 ( j ) 本文算法结果图 图3 2 5 二值化效果对比图 图3 2 5 ( a ) 、3 2 5 ( b ) 为非均匀光照强度下所采集到的条码图像。图3 - 2 5 ( c ) 、 硕士学位论文 3 2 5 ( d ) 分别为图3 2 5 ( a ) 、3 2 5 嘞的直方图,可见在光照强度不均匀的情况下,条 码图像的直方图呈多峰态分布,使用全局阈值算法会将一部分背景区域错误地分 隔到条码部分区域里,二值化结果如图3 2 5 ( e ) 、3 2 5 所示,其中3 - 2 5 ( e ) 使用大 津阈值法,3 2 5 ( f ) 使用厨砒m 细算法,全局阈值算法在这种情况下完全失效。图 3 - 2 5 ( g ) 、3 2 5 ( h ) 为使用f 砌如算法对3 2 5 ( a ) 、3 2 5 ( b ) 阈值化的结果,f 研口如算 法计算图像中各像素点邻域内的灰度均值以及方差来决定用于该像素点的阈值, 虽然能够将条码部分较为完好地分隔出来,但也将背景区域中灰度存在变化的细 节像素与噪声凸显出来,且对于整幅图像的每一个像素计算其邻域的灰度均值与 标准方差,计算所需花费的时间是其它常用的阈值法的几倍甚至十几倍。图 3 2 5 ( i ) 、3 2 5 0 ) 为使用局部均值和局部方差相结合的算法所得到结果,使用矫正系 数w 1 = 0 8 ,w := 1 ,通过对比,该方法能够较好地分隔条码,提取的背景区域也 较少,阈值化效果是最为理想的。 3 3 条码失真矫正 对于图3 2 5 ( i ) ,条码存在一定的旋转角度以及轻微的扭曲,在进入到行列分 隔工作之间,还需要对其进行几何失真矫正。针对这种线性失真,常用的矫正方 法为双线性插值【1 1 1 和反透视变换【13 1 ,且两种方法的矫正效果都比较理想。以下简要 介绍通过霍夫变换【2 7 1 确定条码的边界,以及通过双线性插值进行条码失真矫正的 过程。 1 确定条码边界点 在阈值化后的条码图像依次从左到右、从上到下、从右到左、从下到上分四个 方向逐行逐列或逐列逐行扫描图像中的像素点,当碰到值为零的像素点时,标记 为条码的边界点,并且终止该行或列的扫描,跳转扫描下一行或下一列的像素。 通过这种扫描,所标记的点大多数落在条码边界附近的位置,当然存在条码边界 以外的噪声点,但数量较少的噪声点不影响后续霍夫变换的结果。 2 利用霍夫变换得到条码边界直线方程 对上步骤中每一次扫描过程中所标记的点进行霍夫变换,取霍夫变换域中峰值 最大变换域坐标( p ,9 ) ,得到极坐标下的对应该扫描方向上条码边界直线方程: 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 户1 = x c o s b + 少s i l l 岛 仍= x 。c o s 见+ y s m 吼 岛= x c o s 岛+ y s h 岛 ( 3 - 1 4 ) 成= x c o s 幺+ 少s i l l 幺 3 条码几何失真矫正 两两联立式( 3 1 4 ) 中的方程,解得条码的四个顶点坐标。以四个顶点p 。,p :, p 。,p 。和预先设定矫正后复原图像的四个顶点s 。,j 2 ,j 。,s 。,以这8 个点作为 双线性变换的控制点,完成条码图像的几何失真矫正( 图3 2 6 为控制点转换示意 图) 。设( x ,y ) 为几何畸变条码图像,厂 ,j ,) 为无失真条码图像。条码图像的四 个顶点与无失真条码图像的四个顶点之间的关系如式( 3 1 5 ) 、( 3 1 6 ) 所示: y 1 = 朋i + 砂:+ ;y i + g 02 笔二鬟:孥譬三 ( 3 - 。6 ) y 3 = 朋;+ 缈;+ p 以+ g 、。1 。7 y 4 = ,竹x :+ 砂:+ :y :+ g 通过代入上述8 个连接点坐标可以解出8 个映射系数口,6 ,c ,d ,聊,心,p ,g 。后续只需 把该点坐标值带入式( 3 - 1 5 ) 和式( 3 - 1 6 ) 中得到几何失真坐标( x ,y ) ,令 厂7 ( x ,y ) = ,y ) ,就能得到校正图像任意点o ,y 7 ) 的灰度值。由于通过上述计算 得出的坐标值( x ,y ) 可能为浮点值,但该点所在单元正方形内邻近的四个顶点灰度 值都是已知的,可以采用插值式( 3 1 7 ) 来算出厂( x ,y ) 。设与该点相邻的四个顶点灰 度值为:厂( x o ,y 。) ,厂( x o ,y 1 ) ,( x 1 ,y o ) ,厂( x 1 ,咒) 贝0 : y ) = l 厂 ,) 一厂( ,) 】 一) + 【厂( ,m ) 一厂( ,) 】一) ,m + 叭置,m ) + 八而,) 一八嘞,m ) 一八五,) 】 一) 一) + 厂( ,) v 7 5塔 o “ ,23,4 双拟扰 瓯 甜 倪 魏 + + + + ,l,2,3,4蜕蜣以蜕 + + + + = = = = 崩耽职轧 硕士学位论文 图3 2 6 控制点转换示意图 应用上述几个步骤对图3 2 5 中条码图像进行矫正,结果如图3 2 7 所示。 本章小结 燃 图3 2 7 几何失真矫正 本章针对p d f 4 1 7 条码在复杂背景中的检测定位问题,研究了相应的条码定位 检测方法,并与其它检测方法进行了对比仿真。给出了条码图像的阈值化算法以 及失真矫正算法,并进行了仿真。 3 4 矗鬟hc誊群黼 隧耱珏髓珏珏珏嚣i i 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 4p d f 4 17 条码识别与解码 经过第三章的条码预处理之后,进入到四一七条码的识别以及解码译码部分。 该部分较为详细的阐述了条码的行列切分算法、条码的单元符号识别算法以及译 码算法。图4 1 为四一七条码的解码流程图。 4 1 条码行列分隔 i 四一七条码图像 上 行列分隔 1 l 单元符号识别 土 译码 图4 1 四一七条码的解码流程 在得到条码的矫正图像后,可以进行单元符号字符的分隔,通常的做法是求条 码的横向、纵向边缘,并分别在水平、竖直方向上进行投影,计算其峰值来确定 单元符号字符的边界,达到分割单元符号字符的目的 16 1 。这种方法简单有效,但 对于条码矫正效果不理想、边缘模糊以及条码图像本身存在的污染及噪声的情况 下,投影算法会造成不属于单元符号字符边界的伪峰,因此还需要对算法进行改 进,以能够剔除干扰,准确地获得投影峰值。 4 1 1 单行条码分隔 由于四一七条码是一种堆叠式的二维码,可以看成是若干行一维条码在竖直方 向上堆叠而成的,各行字符之间的黑白模块在竖直方向上交错排列,形成明显的 边缘,可以利用勋6 p ,水平方向边缘检测算子计算出单行条码的边缘后,在水平方 向进行投影,并认为投影的峰值所在的轴坐标即为单行条码的边界所在【l6 | 。可以 对上述投影法进行改进,以达到抑制噪声的作用。 在条码水平方向上的边缘投影图中所存在的噪声干扰无非只有两种情况,第一 硕士学位论文 种情况如图4 - 2 ( a ) 所示: ( a )( b ) 图4 2 边缘投影图 图中加号+ 标记为条码横向边缘投影峰值,叉号标记为伪峰,由于该伪峰 无论位置还是幅值都与投影峰值十分相近,因此可以通过一维高斯模板卷积运算 去除【16 1 ,结果如图4 3 所示。 图4 _ 3 高斯卷积结果示意图 第二种情况如图4 2 ( b ) 所示,投影图中的伪峰分别分布在投影峰的两侧,这种 情况无法通过高斯卷积运算去除,由于条码各行之间等距,因此边缘投影峰之间 距离差也相近,而伪峰分布在各峰值之间,因此伪峰与伪峰以及真正的投影峰值 之间的距离差与各行之间的平均距离相差较大,可以利用这一点来排除存在的伪 峰,算法如下: 1 确定峰值。对投影峰值做高斯卷积后,使用二阶差分运算以确定峰值的轴坐 3 6 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 标,并设定阈值用以删除幅值较低的噪声峰值【1 6 】,其中高斯卷积用的函数为: 如) = 去c x p ( 一事) ( 4 1 ) 卷积后的图像为缈( y ) ,差分算子为: 缈7 ( y ) = 缈( y ) 一缈( y 1 ) 缈,( y ) :妒,( y ) 一;,( y 一1 ) ( 4 _ 2 ) 认为峰值的坐标y 必满足下列式子: f 伊( y 7 ) 丁 缈( y ) = o( 4 - 3 ) 矽7 ( y ) o 2 遍历峰集,标定伪峰。计算两两峰值间的坐标差,统计出现次数最多的坐标 差值d 。,认为该差值为除伪峰外各峰之间的距离,并记录每个峰与相邻的前、后 两个峰的坐标差。依次遍历峰集中所有的峰,只要被遍历的峰的前后两个坐标差 中的任何一个满足d p 或者相差不超过七d p 个像素,( 七为经验值,一般不超过 o 3 ) ,则排除为伪峰的可能,将余下不满足条件的候选峰都定义为潜在的伪峰。 3 筛选伪峰。依次遍历伪峰,每一次遍历顺序删除一个伪峰,考虑到各伪峰之 间夹杂着真正的投影峰,因此每删除一个伪峰后需要重新进行第2 步骤的工作, 直到伪峰全部被删除。图4 4 显示了图4 - 2 中删除伪峰的过程。 3 7 硕士学位论文 图4 - 4 行切分算法仿冥图 图4 4 遍历峰集后标定伪峰的结果,可以看到第三个投影峰值因相邻伪峰的干扰 而被判定为伪峰,图4 4 ( b ) 为删除第一个伪峰后,重新遍历峰集后判定的结果,由 于左边的伪峰被删除,其与左邻峰之间的距离符合判定规则,被重新判定为真正 的投影峰值。图4 4 ( c ) ( d ) 为删除第二个,第三个伪峰后的结果,从图4 4 ( d ) 上可以 看到很好的提取了边缘投影的峰值,该算法能够有效地排除噪声的干扰。 4 1 2 条码列分隔 利用勋6 p ,竖直方向边缘检测算子计算图3 2 7 ( a ) 条码图像的边缘后,在竖直方 向上进行投影,并对其进行高斯平滑,阈值筛选,二阶差值运算,最后的峰值标 定结果如图4 5 。其中绿色加号+ 标记代表了四一七条码的列边缘,红色加号 + 标记为投影图中的峰值,红色叉号标记为噪声或干扰所形成的伪峰。 在这些峰集中筛选出对应列边缘的峰集所使用的算法如下: 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 图4 5 边缘投影图 1 计算峰集中各相邻峰之间的距离d 。,由于单元符号字符有1 7 个单位模块所 组成【2 0 1 ,因此列边缘之间的距离是所有相邻峰间距离中最大的,d 。中的最大值可 认为是条码单元符号字符的宽度。 2 选定候选峰。由四一七条码的结构特点可知,符号字符从左至右依次行排 堆叠而成,列与列之间的边缘分布以条码中心存在近似对称的关系。可通过以矫 正后条码的中心位置分别向左右两个方向搜索最近的峰值,并按照4 1 1 节算法第 二步中的判定规则判定是否为条码边界,若碰到伪峰则标记跳过,直到得到条码 的边界为止。 3 从被标记的列边缘向左右两个方向遍历峰集,执行4 1 1 节算法中的第2 、3 步,排除伪峰以及不符合要求的投影峰值,重新标定列向边缘的投影峰值,标定 结果如图4 6 所示: 图4 6 列边缘标定 在得到行列边界的峰值之后就可以对条码图像进行行列分隔,并提取出数据符 号字符,图4 7 显示了分隔结果。 3 9 硕士学位论文 u 一 l itl i 一- ii :i 一- 一ir 一j j 一一i i - i 。r 。 i j i ii - 一 l - 一l - i - 1 一 一- 1 i 一i 一 j l i - | t 一一 i 一i - 一l - i li i 。一i i i iji 一一。i i 1 一i 皿。i 一:i 盯r 一- _ 一i _ _ ii : 图4 7 单元符号字符分隔 4 2 单元符号字符识别 在单位符号字符的识别上,常用的方法是对逐个符号字符进行竖直方向边缘投 影,再计算投影峰值之间的间距比。这种方法简单实用,但是经过插值矫正后的 条码图像存在锯齿边缘以及条码图像本身的干扰以及噪声,对投影算法影响较大。 本文采用一种基于领域标记【3 6 】【3 7 】的思想对四一七条码的单元符号字符进行识别。 算法思想为:构造邻域模板,统计符号字符中的各像素点邻域内的符合阈值的像 素,标记邻域数值最大的像素点,认为其为条或空模块的中点。算法的流程图如 下: 4 2 1匹配模板的构造 i 构造邻域匹配模板 l 输入单元符号字符 i 邻域标记 l 阈值取样 l 复原符号字符 t l 识别条空比 图4 8 算法流程图 基于嵌入式平台的p d f 4 1 7 二维条码的识别设计与研究 匹配模板的高度| i z 即为符号字符的高度日,宽度w 为: w = 形1 7 ( 4 - 4 ) 式中缈为符号字符的宽度。因此,后续标记过程中邻域的大小为j l z w 。 4 2 2 邻域标记 依次选定符号字符中像素作为模板的中心像素,统计办w 邻域内二值像素的 个数,作为该像素的评价系数。标记的过程如图4 9 所示,标记过程中以统计黑 色像素数来对条模块进行取样,遍历符号字符中各像素点,统计像素邻域内的黑 色像素个数,以该数值标记模板中心像素。 4 2 3阈值取样 遍历过后依次对像素的标记值进行阈值处理,对于图像质量较好的情况,黑色 模块的覆盖程度需要超过9 0 ,以大小为3 5 的模板来为例,像素的邻域标记值 须为1 3 或1 3 以上才满足提取的条件。若图像质量较差,在阈值处理时可适当降 低黑色模块的覆盖程度。 图4 9 邻域标记 4 1 硕士学位论文 在对邻域标记值阈值处理时,为避免重复提取所标记点邻域内的其它标记值符 合阈值要求的像素点,需要对邻域内重复计算邻域标记值的像素点进行清除,清 除的范围如图4 1 0 所示,对于模板的长宽都为奇数的情况,标记点位于模板的中 心位置,以3 5 的模板为例,清除以所标记点为中心5 5 邻域内的所有标记值, 对于模板的长宽存在不为奇数的情况,以4 5 的模板为例,标记点位于图中黑色 模块的位置,清除标记时所用的模板与统计所用的模板互补,清除以所标记点为 中心7 5 邻域内的所有标记值。 l l 1 ll l差2 1 2l 1 图4 1 0 邻域标记清除模板 在清除结束后得到的标记点则为条模块的中心像素点,计算所标记的像素点间 最近的距离,同该数值可判断符号字符里夹杂在条模块间以及模块与边界之间中 空模块的位置以及数量,最终对条空模块进行取样复原。图4 1 1 为图4 7 中各单 元符号字符条空模块宽度比的结果,图4 1 2 显示了图像复原后的结果。从图中结 果可以看出,该方法对于单位符号字符中条空模块的识别以及定位有着较为良好 的效果。 4 2 工兰量置渊p 王秘l ,一毒“l h l 再t j i f 再n 五 i 文糕d 溉辅遁j凌簿;y )终镒( i j 弦嚣墨, 帮渤塾 _ v 一 l “n ) “:。l ”io = 1 0 】l o 】”0 1 i b 譬b s b 誊e ;s ;8 i 孽= o o o :) o o o o l b b b 囊j s 8 ;is = 2 3 1 33 甚暑】 l jh s 鸟t h o 儿r j j : ff : ;b 奠 :、靶f l ;r 垃) i i h :s :e h 尊i j 程。f 。弛- :,f l 藏“! t :i i f lr l i l 慧 ! _ :1 一。一。1 1 1 1 】2 0 j j 一1 一:= 1 】1 】暑? l 一 一。一2 、j 1 1 1 1 2 j 6 一】一1 一= 2 i 垂j 】1 13 二 j o 一= 2 i 】j 1 j 0 一】一= = i 】2 2 i j 譬j 一2 】l 】j l j 2 。o 。1 一:= 1 】,1 1 2 = 1 一矗一钉一。j 1 1 17 2 冀0 一j 一1 一:j 1 】2 1 1 幻 j 一0 一= 3 】i 0 、0 ) j 一3 一j 一。j 2 2 j 2 2 譬 j 一0 一。1 l 】:1 2 s i j 一】一:3 :2 lg j i = ! 一7 j 一= 】1 】1 0 i 3 71 = j 1 】1 1 】? j s 一0 一。1 】1 2 2 15 0 8 1 一= j 1 1 2 弓1 1 s 一一一0 = j 11 摹2 翕二2 一垫一1 一= jl = := 2 二0 15 一j 一0 一竺i l i = 三j j 3 2 一j ; l 竺? 2 i 2 童;j l l j j 、一。:l l0 l :j = :一j 1 一】= = = = - l 】1 0 1 1 】; 。l i :一【矗t n s t o 越纯【:f j 葚世0 。 1 瑶;n 0 1 盈 i 毛ll ;0 1 x 毙、! “e ! 雏盎il 0 1 j 一:3 11l 】精 一1 0 一= j ll 】1 2 = 0 _ 2 一:一:jii j j 2 弱 二1 3 j 一:2 l l 】寸l 张 一0 0 一= 2 l1 1 3 3 1 三 一j 一= j 】l j41 7 0 j 一2 一= 1 l l ? s l j j 72 :2 111 5 】j l s 一2 一= 如l1 2 2 芏】? 一= 一:1 1 1 0 2 0 一1 j j 一:2 l1 1 3 7 l j 一】j 一2 一= 2 1 l 薹l 墓5 l 图4 11 单元符号字符识别结果 4 3 四一七条码的译码 一 图4 1 2 条码复原结果 在得到单元符号字符的条空比后,通过查行号对应的簇表,得到单元符号字符 的编码码字,进入到最后的兄s 译码阶段。对于包含有数据码字和纠错码字的码字 信息,兄s 译码算法3 8 4 1 1 对其是否符合原编码规则进行检测,若检测出码字存在差 错,则根据纠错码字进行纠错。译码的大致流程如图4 1 3 所示: 4 3 = 1 05:_=,_; 1 s1 一_ l 0j j “ 0 黔 t n ol ¥ u t ,醴 o , k d 4 硕士学位论文 4 3 1 计算伴随式s 计算伴随式 i 求解错误位置多项式 i钱搜索求根 l 计算并修正错误蜻值 图4 - 1 3 兄s 译码流程图 由式( 2 - 4 ) 、( 2 - 5 ) 设经过见s 编码后的表达式为: v ( x ) = x 2 d ( x ) + x 2 d ( x ) m o dg(x)(45) v ( x ) 为原始信息,若在通信时v ( x ) 上产生了,个误码,则误码的表达式为: p ( 功= p 订石n + 口f 2 x 2 + + p 加工妒( 4 6 ) 式中x 的各系数为v ) 误码位置上正确值与误码值的差值错误幅值。因此, 实

温馨提示

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

评论

0/150

提交评论