毕业设计55华侨大学条码检测系统—基于MATLAB的一维条码识别.doc
毕业设计55华侨大学条码检测系统—基于MATLAB的一维条码识别
收藏
资源目录
压缩包内文档预览:(预览前20页/共32页)
编号:545253
类型:共享资源
大小:286.94KB
格式:ZIP
上传时间:2015-12-01
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
电气电子毕业设计论文
- 资源描述:
-
毕业设计55华侨大学条码检测系统—基于MATLAB的一维条码识别,电气电子毕业设计论文
- 内容简介:
-
华侨大学 2007届本科毕业设计 题目: (此处请用仿宋二号字体打印) 院(系) (此处请用仿宋三号字体打印) 专 业 (此处请用仿宋三号字体打印) 届 别 (此处请用仿宋三号字体打印) 学 号 (此处请用仿宋三号字体打印) 姓 名 (此处请用仿宋三号字体打印) 指导老师 (此处请用仿宋三号字体打印) 华侨大学教务处印制 年 月 nts华侨大学 2007届本科毕业设计 2 条码检测系统 基于 MATLAB 的一维条码识别 摘 要 : 条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。由我国目前发展现状来看,条码的正常使用受到条形码印刷质量和商品运输过程的影响,并且传统的条码识读方式是采用光电识读器,条码图像对光的不同反射效果也必然会对条码的识读产生影响。 不同的条码有着不同的识读过程。本设计研究一种基于图像处理方式的识读方法,通过计算机辨识来解决条码印刷质量不佳和条码变 形等问题。该方法是采用摄像头采集条码图像,通过照相,一次性采集条码图像的方法避免了线性扫描器逐行扫描所产生的问题,同时简化了扫描条码图像的操作。然后通过一定的数字图像处理算法处理进行译码。译码算法主要分为两部分:第一部分首先对采集的条码图像进行预处理,这将为后面实现正确译码打下基础;第二部分就是对预处理后的条码图像进行译码,我们将利用统计方法、根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,得到条码所表示的文本信息。与用条码识读器硬件进行译码相比,软件译码具有更大的灵活性和较低的成本,因 此具有很大的发展潜力。本设计在 Matlab 软件语言环境下实现。 关键词: 图像处理 条码识别 EAN-13 相似边距离 Matlab nts华侨大学 2007届本科毕业设计 3 The System Of Bar-Code Examination 1D Bar-Code recognition based on MATLAB Abstract: Nowadays Bar-Code is a very popular technique ofidentification and input. It has been taken serious because of its large information and low error rate. It develops very quickly and has already been applied in industry,commerce,publishing,medical sanitation and so on. It can be seen from the actualities in our country that the use of Bar-Code is influenced by the printing quality and goods transportation, and besides, the traditional mode of recognition is using optical scanner so that the recognitinon will be consequentially affected by the different reflection of code image by the light. Different Bar-Code has different recognition process. This paper researches into a method based on digital image processing mode to resolve the problems of poor printing quality and code distortion, which uses the vidicon to take pictures of code images so as to avoid the traditional questions brought by the line-by-line scanning. And then applies the digital image processing algorithms to recognize the code, which includes two steps: the first is image pretreatments, the second is using statistic method and the distance of edge to similar edge method to recognize the code character. Comparing with decoding with special Bar-Code identification hardware, decoding with software is more flexible, and the cost is also comparatively low. Hence, Bar-Code has a very clear future of development. This research is realized by Matlab. Key word: image processing, Bar-Code recognition, EAN-13, the distance of edge to similar edge, Matlab nts华侨大学 2007届本科毕业设计 4 目 录 第 1章 引言 . 1.1 条码技术 概述 . 1.2 本文的研究意义及内容 . 1.2.1 研究意义 . 1.2.2 研究内容及本文的组织安排 . 第 2章 一维条码技术 . 2.1 一维条码简述 . 2.2 一维条码符号的结构 . 2.3 EAN码简述 . 2.4 EAN-13码 符号的特征 . 2.4.1 EAN-13码字符集 . 2.4.2 EAN-13码符号结构 . 2.5 EAN-13码的校验 . 第 3章 EAN-13码的识读 . 3.1 Matlab数字图像处理技术简介 . 3.2 条码图像处理 及其 Matlab实现 . 3.2.1 条码图像预处理 . 3.2.2 预处理结果与分析 . 3.3 EAN-13码译码原理及其 Matlab实现 . 3.3.1 条码译码原理 . 3.3.2 条码译码方法 . 3.3.3 译码结果与分析 . 第 4章 结 论 . 致谢语 . 参考文献 . 附录 . nts华侨大学 2007届本科毕业设计 5 第 1 章 引 言 1.1 条码技术概述 在信息时代的今天,计算机的应用己和我们的生活紧密地联系在一起。计算机快速准确的信息处理速度,给工农业生产、经营管理以及人们的日常生活等方面都带来了巨大的效益。可以说计算机的出现、普及和应用加速了社会发展进程。然而,在运用计算机进行信息处理时,面临的一个重要问题是如何提高信息输入速度问题,使之与计算机的高速运算能力相匹配。只有解决这个问题,才能发挥计算机高速处理信息的能力。因此,要求有一种简单、易行、廉 价、高速的输入技术,条形码技术正是具备这一特征,因而它为世界各国所重视 ,并获得极大的发展。 条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于 20世纪中期,是继计算机技术应用和发展应运而生的。 随着 70年代微处理器的问世,标志着“信息化社会”的到来,它要求人们对社会上各个领域的信息、数据实施正确、有效、及时的采集、传递和管理。因此如何代替人的视觉、人的手工操作、或者在复杂的环境中正确、迅速地获取信息并加以识别,成为人们普遍关心和有关人员精心研究的课题。 通俗的说条形码是指在浅色衬底上印有深色矩形的线 条 (也称条码 )排列而成的编码,其码条和空白条的数量和宽度按一定的规则 (标准 )排列。条形码是由一组规则排列的条、空、相应的数字组成。这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。这些条和空可以有 各种不同的组合方法,构成不同的图形符号,即各种符号体系,适用于不同的应用场合。 条码系统是由条码符号设计、制作及扫描阅读组成的自动识别系统。 微电子技术和激光技术的发展使得条码识别系统越来越受到人们的关注。 条码是迄今为止最经济、实用的一种自动识别技术。条码技术具有以下几个方面的优点: 1、 可靠 准确。有资料可查键盘输入平均每 300个字符一个错误,而条码输入平均每15000个字符一个错误。如果 加上校验 位出错率是千万分之一。 2、 数据输入速度快。键盘输入,一个每分钟打 90个字的打字员 1.6 秒可输入 12个字符或字符串,而使用条码,做同样的工作只需 0.3秒,速度提高了 5 倍。 nts华侨大学 2007届本科毕业设计 6 3、 经济 便宜。与其它自动化识别技术相比较,推广应用条码技术,所需费用较 低。 4、 灵活、实用。条码符号作为一种识别手段可以单独使用,也可以和有关设备组成识别系统实现自动化识别,还可和其他控制设备联系起来实现整个系统的自动化管理。同时,在 没有自动识别设备时,也可实现手工键盘输入。 5、 自由度大。识别装置与条码标签相对位置的自由度要比 OCR大得多。条码通常只在一维方向上表达信息,而同一条码上所表示的信息完全相同并且连续,这样即使是标签有部分缺欠,仍可以从正常部分输入正确的信息。 6、 设备简单。条码符号识别设备的结构简单,操作容易,无需专门训练。 7、 易于制作 , 可印刷,称作为 “ 可印刷的计算机语言 ” 。条码标签易于制作,对印刷技术设备和材料无特殊要求。 1.2 本文的研究意义及内容 1.2.1 研究意义 条形码技术主要研究如何用条码标识信息 、并将条形码表示的信息转换成计算机可识读的语言,以实现自动输入、自动识读、自动统计 .在先进的工业国家里,条码技术作为一种信息处理技术己成为社会化产物,不仅应用于生产过程,而且也应用于管理过程。在我国条码技术起步比较晚,但它的发展非常迅速,己被广泛用于工业、商业、图书出版、医疗卫生等各行各业。随着全球经济贸易体系的形成,将被更广泛用于其它领域。现在,它已变成商品进入国际市场的通行证 .但是,由我国目前发展现状来看,主要有两种因素影响条码正常使用。首先条形码在印刷中存在许多质量问题,据 1998 年 4月桂林条码工作会 议公布的数字表明,我国商品条码不合格率达 20%-30%,使大量名牌产品、优质产品不能进入超级市场 (POS 商店 )。条码印刷质量对其能否正常使用是至关重要的,质量低劣出现扫描误读,不仅造成不必要的经济损失,而且将大大影响了工作效率。其次,运输过程中造成的条码磨损、断裂和脏污是影响条码正确误读的另一个重要的因素。 目前,市场上普遍采用的条形码识读装置是光电识读器。由一般条码识读器的原理可知 :条形码的宽窄和颜色的对比度都会对光的反射产生影响,不可避免的会影响到条码正确识读 ; 此外,由于光电识读器采用线扫描方式,斑点 、脏污和纸面断裂也会造成反射光的差异,相应的对条码识读也必然会产生影响。因此,一方面条码标准化工作需要大力加强 ; 另一方面研制有一定的辨识能力的条码阅读装置 具有十分重要的现实意义。条码图像辨识在一些特殊情况下将发挥着极大的优势。图像处理识读方法是首先对条码图像进行处nts华侨大学 2007届本科毕业设计 7 理,然后利用统计方法, 根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,这样将大大降低条码印刷质量以及条码污染等各种因素的干扰,从而有效地提高条码的识 读率。 1.2.2 研究内容及本文的组织安排 本文研究的是基于数字图像处理的 EAN-13 条形码识别算法,通过工具平台( Matlab)实现。其中图像处理部分是条码识别重要的前期工作,利用 Matlab强大的图象处理工具箱实现图像的读入、加噪仿真、滤波、二值化处理等工作,最终得到高质量的二值化图像。条码识别就是在二值图像的基础上实现,二值图像的质量直接关系到条码能否正确识读。在条码识读方法上,我们对宽度测量法、平均值法简单介绍,而对相似边距离的测量方法这一低误码率方法进行详细具体研究。 文章先对条码技术诞生及发展、条码技术的优点进行简要概述,使读者对条码有个清晰的概念。重点介绍一维条码中 的 EAN-13码的发展、结构、特征、译码原理及其 Matlab实现。对 Matlab图像处理方面也有一定的研究。最后是对整个课题研究过程中成败得失的总结,为以后的研究工作积累宝贵的经验。 nts华侨大学 2007届本科毕业设计 8 第二章 一维条码技术 2.1 一维条码简述 条码是将线条与空白按照一定的编码规则组合起来的符号,用以代表一定的字母、数字等资料。 在进行辨识的时候,是用条码阅读机扫描,得到一组反射光信号,此信号经光电转换 后 变为一组与线条、空白相对应的电子讯号,经解码 后 还原为相应的文数字,再传入电脑。 条码辨识技术 已相当成熟,其读取的错误率约为百万分之一, 识 读率大 于 98%,是一种可靠性高、输入快速、准确性高、成本低、应用面广的资料自动收集技术。 世界上约有 225种以上的一维条码,每种一维条码都有自己的一套编码规格,规定每个字母 (可能是文字或数字或文数字 )是由几个线条 (Bar)及几个空白 (Space)组成,以及字母的排列。 目前使用频率最高的几种一维条码码制有: EAN、 UPC、三九码、交插二五码 和EAN128码。其中 UPC条码主要用于北美地区。 EAN条码是国际通用符号体系,它们是一种定长、无含义的条码,主要用于商品标识 。 EAN128 码是由国际物品编码协会和美国统一代码委员会联合开发、共同采用的一种特定的条码符号,它是一种连续型、非定长有含义的高密度代码,用以表示生产日期、批号、数量、规格、保质期、收货地等更多的商品信息。另有一些码制主要是适应于某种特殊场合,如库德巴码用于血库 、图书馆、包裹等的跟踪管理;二五码用于包装、运输和国际航空系统为机票进行顺序编号。还有类似三九码的九三码,它的密度较高,可代替三九码。以上所说的都是一维条码,就是常说的传统条码。本文主要研究其中的 EAN13 码。 条码 可分为一维条码 (One Dimensional Barcode, 1D) 和二维码 (Two Dimensional Code, 2D)两大类,目前在商品上的应用仍以一维条码为主,故一维条码又被称为商品条码,二维码则是另一种渐受重视的条码,其功能较一维条码强,应用范围更加广泛 。 2.2 一维条码符号的结构 通常一个完整的条码是由两侧 空白 区、起始 字符 、 数据字符 、 校验字符 、终止 字符 组成,以一维条码而言,其排列方式通常如 表 2-1所示: nts华侨大学 2007届本科毕业设计 9 表 2-1 条码符号结构 图 2-1 条码符号 1、 空白 区 位 于 条码两侧无任何符号及资讯的白色区域, 主要用来提示扫瞄器准备扫瞄。 2、 起始字符 指条码符号 的第一位字码,用来标识一个条码符号的开始,扫瞄器确认此字码存在 后开始处理扫瞄脉冲。 3、 数据字符 位 于 起始 字符后 面的字码,用来标识一个条码符号的具体数值,允许双向扫瞄。 4、 校验字符 用来判定此次阅读是否有效的字码,通常是一种算术运算的结果,扫瞄器读入条码进行解码时,先对读入各字码进行运算,如运算结果与检查码相同,则判定此次阅读有效。 2.3 EAN 码简述 EAN码的全名为欧洲商品条码 (European Article Number), 源于公 元 1977年,由欧洲十二个工业国家所共同发展出来的一种条码。目前已成为一种国际性的条码系统。 EAN条码系统的管理是由国际商品条码总会 (International Article Numbering Association)负责各会员国的国家代表号码之分配与授权,再由各会员国的商品条码专责机构,对其国内的制造商、批发商、零售商等授予厂商代表号码。目前已有 30多个国家加盟 EAN。 EAN码由前缀码、厂商识别码、商品项目代码和校验码组成。前缀码是国际 EAN组织标识各会员组织的代码,我国为 690、 691和 692;厂商代码 是 EAN编码组织在 EAN分配的nts华侨大学 2007届本科毕业设计 10 前缀码的基础上分配给厂商的代码;商品项目代码由厂商自行编码;校验码为了校验代码的正确性。在编制商品项目代码时,厂商必须遵守商品编码的基本原则:对同一商品项目的商品必须编制相同的商品项目代码;对不同的商品项目必须编制不同的商品项目代码。保证商品项目与其标识代码一一对应,即一个商品项目只有一个代码,一个代码只标识一个商品项目 。 另外,图书和期刊作为特殊的商品也采用了 EAN-13表示 ISBN和 ISSN。前缀 977被用于期刊号 ISSN图书号 ISBN用 978为前缀,我国被分配使用 7开头的 ISBN 号,因此我国出版社出版的图书上的条码全部为 9787开头。 EAN码具有以下特性: 1.只能储存数字。 2.可双向扫 描 处理,即条码可由左至右或由右至左扫 描 。 3.必须有一检查码,以防读取资料的错误情形发生,位 于 EAN码中的最右边处。 4.具有左护线、中线及右护线,以分隔条码上的不同部分与 截取 适当的安全空间来处理。 5.条码长度一定,较欠缺弹性,但经由适当的管道,可使其通用 于 世界各国。 6.依结构的不同,可区分为: EAN-13码:由 13个数字组成,为 EAN的标准编码型式。 EAN- 8码:由 8个数字组成,属 EAN的简易编码型式。 2.4 EAN-13 码符号的特征 ( 1)条码符号的整体形状为矩形。由一系列互相平行的条和空组成,四周都留有空白区。 ( 2)条空分别由 1-4个同一宽度的的深或浅颜色的模块组成。深色模块用“ 1”表示,浅色模块用“ 0”表示。 ( 3)在条码符号中,表示数字的每个条码字符仅由两个条和两个空组成,共 7个模块。 ( 4)除了表示数字的条码字符外,还有一些辅助条码字符,用作表示起始 、终止的分界符和平分条码符号的中间分隔 符。 ( 5)条码符号可设计成既可供固定式扫描器全 向扫描,又可用手持扫描设备识读的nts华侨大学 2007届本科毕业设计 11 形式。 ( 6)条码符号的大小可在放大系数的两个极限值所决定的尺寸之间变化,以适应不同印刷工艺的需求及用户对印刷面积的要求。 ( 7)对一个特定大小的条码符号所规定的尺寸称为名义尺寸,放大系数的范围0.8-2.0。 ( 8)供人识别的字符规定采用 OCR-B字符。 图 2-2 EAN-13 条码符号 2.4.1 EAN-13 码字符集 EAN-13条码字符集包括 10个数字字符,即 0-9。在条码符号中,每个数字字符由七个模块的二进制表示,其表示形式见条码字符集中的 A, B, C三个子集(见 表 2-2)。 表 2-2 条码字符集 A子集中条码字符所包含的深色模块的个数为奇数,称为奇排列。 B、 C子集中条码字符所包含的深色模块的个数为偶数,称为偶排列。 条码字符集示意图见图 2-3。 A、 B子集的条码字符从左到向右,以一个浅色模块开始,以一个深色模块结束。 C子集的条码字符从左到右,以一个深色模块开始,以一个浅色模块结束。 nts华侨大学 2007届本科毕业设计 12 图 2-3 通用商品条码字符集示意图 2.4.2 EAN-13 码符号结构 EAN-13条码符号是由左侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符及右侧空白区构成, 如 图 2-4所示 。 图 2-4 EAN-13 条码符号结构 nts华侨大学 2007届本科毕业设计 13 图 2-5 EAN-13 条码符号构成示意图 左侧空白区:位于条码符号起始符左侧,无印刷符号且与空的颜色相同的区域。其最小宽度为 11个模块宽。 起始符:位于条码符号左侧,表示信息开始的特殊符号,由 3个模块组成。 左侧数据符:介于起始符和中间分隔符之间的表示信息的一组条码字符。表示前缀码( 不包含前置码)和厂商代码,共 6位数字。条码字符按 A子集或 B子集的形式构成。左侧数据符由 42个模块组成。 中间分隔符:位于条码符号的中间位置,是平分条码符号的特殊符号,由 5个模块组成。 右侧数据符:中间分隔符右侧的一组选自 C子集的条码字符,表示 5位商品代码,又35个模块组成。 校验符:最后一个条码字符,选自 C子集,由 7个模块组成,表示一个校验字符。 终止符:位于条码符号右侧,表示信息结束的特殊符号,由 3个模块组成。 右侧空白区:在终止符之外的无印刷符号且与空的颜色相同的区域,其最小宽度为 7个模块。 EAN-13条码符号所包含的模块总数为 113 个。 EAN-13条码的前置码不用条码表示,也不包括在左侧数据符中。左侧数据符是根据前置码所决定的条码字符构成方式(奇排列和偶排列)来表示前置码之后的 6位数字的。见表 2-3。 nts华侨大学 2007届本科毕业设计 14 表 2-3 左侧数据符的奇偶排列规则 注:表中 A为 A 子集, B为 B子集 纵向值 0-9:代表前置码数值;横向值 12-7:代表代码位置序号 2.5 EAN-13 码的校验 校验码的主要作用是防止条码标志因印刷质量低劣或包装运输中引起标志破损而造成扫描设备误读信息而设置,作为确保商品条 形码识读正确 性的必要手段。条形码 用户在标志设计完成后,代码的正确与否直接关系到用户的自身利益。对代码的验证,校验码的计算是标志商品质量检验的重要内容之一。下面是 EAN-13码的校验码验算方法,步骤如下: ( 1) 将条形码中数字码由右至左位排序(包括校验码); ( 2) 从代码位置序号 2开始,所有偶数位的数字代码求和为 a; ( 3) 将上步中的 a乘以 3为 a; ( 4) 从代码位置序号 3开始,所有奇数位的数字代码求和为 b; ( 5) 将 a和 b相加为 s; ( 6) 取 s的十进制个位数 d,再由 10减去 d即为校验位数值 C。 nts华侨大学 2007届本科毕业设计 15 第三章 EAN-13 码的识读 3.1 Matlab 数字图象处理技术简介 图像处理就是将图像转换为一个数字矩 阵存放在计算机中,并采用一定的算法对其进行处理。目前的图像 处理技术已经在许多的应用领域中得到重视,并取得了巨大的成就。根据 应用领域的不同要求,可以将图像处理技术划分为许多分支,其中比较重要的分支有:图像数字化、图像增强与复原、图像编码、图像分割与特征提取、图像分析和图像 隐藏。 在图像处理方面, Matlab是一种基于向量(数组)而不是标量的高级程序语言,数字图像实际上就是一组有序的离散数据(具有二值或灰度值的二 维数组),使用 Matlab的矩阵变量对这些离散数据形成的矩阵 能够进行一次性的处理。因此, Matlab 从本质上提供了对图像的支持,非常适合于图像处理,较其它标量语言而言,这也是 Matlab 非常显著的一大优势。 Matlab的图像处理工具箱,功能十分强大,支持的图像 文件格式丰富,如 *.BMP、 *.JPG、*.JPEG、 *.GIF、 *.TIF、 *.TIFF、 *.PNG、 *.PCX、 *.XWD、 *.HDF、 *.ICO、 *.CUR等。利用Matlab所提供的图像 处理与分析工具,结合其强大的数据处理能力,研究人员可利用 前人已取得的研究成果,可以把精力集中在新技术理论的研 究上,而不必关心图像文件的格式、读写、显示和已有成果的技术细节,并快速测试其图像 处理分析的新方案。测试既可方便地得到统计数据,同时又可得到直观图示。 Matlab提供 的 图像处理函数 涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像 处 理的人员难得的宝贵资料和加工工具箱。 Matlab强大的图形功能和丰富的图像处理工具箱函数能够将 复杂的算法转化为简单函数调用,省去了大量的底层编程工作,从而使科研人员专注于研究或教学,并能够达到快速实现设计 思路的目的。 这些函数按其功能可分为:图像显示;图像 文件 I/O;图像算术运算;几何变换;图像登记;像素值与统计;图像分析;图像 增强;线性滤波;线性二元滤波设计;图像去模糊;图像变换;邻域与块处理;灰度与二值图像 的形态学运算;结构元 素创建与处理;基于边缘的处理;色彩影射表操作;色彩空间变换;图像 类型与类型转换。 nts华侨大学 2007届本科毕业设计 16 3.2 条码图像 处理及其 Matlab 实现 3.2.1 条码图像预处理 对于一个条码图像 我们先要 对其进行一定的处理才能达到正确译码的目的。而要对其进行处理,首先是要将其读入。由于有噪声的存在,我们必 须对其进行滤波。我们也可人为地加入一定类型的噪声仿真,然后用合适的滤波方法进行滤波,这样有助于理解各种滤波方 法所针对的噪声类型。最后就是要二值化,得到二值 图像。条码图像预处理流程图 如图 3-1所示。 图 3-1 条码图像预处理流程图 1.Matlab中利用 函数 imread来实现图像 文件的读取操作。其格式如下: A=imread( 文件名 .文件格式 ) 通常情况下,我们通过 imread函数读取的大多数图像都是 8位的。当把这些图像加载到内存中时, Matlab 就将其存储在类 uint8中。此外, Matlab还支持 16 位 的 PNG和 TIFF图像。当用户读取这类图像时, Matlab就将其存储在类 uint16中。而对于索引图像来说,即使图像矩阵的本身为 uint8或 uint16, imread 函数仍将颜色映射表读取并存储在一个双精度浮点类型的矩阵中。 例如: I=imread(zhong.bmp); 该 语句可将条码图像 读入内存,并以矩阵形式存储。 2.Matlab的图像处理工具箱提供 imnoise 函数,可以用该函数给图像添加不同种类的噪声 。 该函数的调用格式如下: J=imnoise(I, type ,parameters) 表 3-1列出了 imnoise 函数能够产生的五种噪声及其对应参数 。 nts华侨大学 2007届本科毕业设计 17 表 3-1 imnoise函数支持的噪声种类及参数说明 例如: J=imnoise(I,salt & pepper,0.01); 该语句实现在 条码 图像 I 中加入椒盐噪声。 3.条码图像被采集进入计算机,由于设备、以及传输过程中的各种因素的影响,一些噪声将会对图像的质量产生影响。任何一幅未经处理的原始图象,都存在一定程度的噪声干扰。不同的噪声干扰,处理方法不同。 影响条码图像质量最典型的 噪声 是椒盐噪声。椒盐噪声的特点是此干扰 在图像中是以孤立点的形式存在的 。 针对噪声的类型,我们采用中值滤波。 中值滤波是一种非线性信号处理方法。可以克服线性滤波器如最小均方滤波,平均值滤波(平滑滤波)等所带来的图像细节模糊。而且对于脉冲干扰及点状噪声有良好抑制作用,能较好保持图像边缘。 它可以起到既消除噪声又保持图像细节的作用。 为了达到好的滤波效果应选择合适的滤波窗口。从条 码图像的特征来讨论选择采用的中值滤波窗口。条码图像 的特点在于是由纵向一定宽度黑白条空组成,我们建立不同大小的模板 ,对含有 噪声的图像进行滤波处理,比较它们滤除 噪声干扰的效果。 在 Matlab 中 可以使用 imfilter 函数或 filter2 函数调用创建好的滤波器(可以是预定义滤波器,也可以是自定义滤波器)对图像进行滤波。 例如: L=medfilt2(J,3 1); 该语句实现对加噪声后条码图像 J滤波, 采用 3 1模板 。 执行低通滤波也能收 到很好的效果。用 Matlab 实现为: K=double(J)/255; h=1/9 1/9 1/9,1/9 1/9 1/9,1/9 1/9 1/9; L=filter2(h,K); 4.为了便于对图像进行后 续处理,需要对图像进行二值化处理。 二值化是一种图像分nts华侨大学 2007届本科毕业设计 18 割技术中的区域分割技术,它是区域分割中最基本也是最常用的手段, 使用阈值把图像和背景分割出来,也称阈值分割。二值化处理将不可避免地丢失图像信息,若阈值选取过小,会提取多余的部分,若选取的过大,会丢失所需要的图像信息。它对物体与背景有较强对比度的图像分割特别有效。如果感兴趣的物体在其内部具有均匀一致的灰度值,并分布在一个具有另一个灰度值的均匀背景上,使用阈值分割方法效果很好。阈值分割算法主要有两个步骤:( 1)确定需要的分割阈值;( 2)将像素与分割阈值作比较并划 分。其中阈值选取是图像二值化处理中的一项重要技术,它的选取直接关系到后续的处理 。 根据一维条码的特点,条码图像由条和空组成。条即深色模块用“ 1”表示,空即浅色模块用“ 0”表示,深色的条与白色的空灰度明显呈对比状态,这样的特点恰好符合二值表示数据的特点,因此可以简化阈值变换过程;在二值图像中, “ 0”表示黑色,“ 255”表示白色,条码图像的灰度图中, 虽然 条、空的颜色不是 二值的“ 0”和“ 255”,而是在0, 255之间的某个灰度值,但是条、空的灰度对比是明显的,一般是位于灰度直方图的灰度范围,在其中间左右的位置 指定一个阈值。根据对现场图像的反复测试得出:若表示为 0, 1范围内的数据值,可以选择 0.45, 0.55内的值作为阈值 T(基于数字图像处理方式的 EAN-13条码识读算法研究) 。 指定了一个阈值 T 之后,将图像中的像素与阈值作比较,如果图像中某像素的灰度值小于该阈值,则将该像素的灰度值设置为 0,否则灰度值设置为 255。 按下式对图像进行处理可得到二值图像 g(x,y): 255( , )0g x y ( , )( , )f x y Tf x y T(3-1) 在 Matlab中,通过使用函数 graythresh和 im2bw创建一个新的二值图像 bw: level=graythresh(L); bw=im2bw(L,level); 3.2.2 预处理 结果与分析 根据上述条码图像预处理的理论知识编译 相关的 Matlab程序,得到如图 3-2所示图像预处理结果。 nts华侨大学 2007届本科毕业设计 19 图 3-2 条码图像预处理 分析: Matlab图像处理工具箱支持的图像文件格式丰富, 但 通常情况下我们习惯于BMP格式图像的处理。 利用 imread函数将图像由计算机硬盘读入内存。 图像读入识别设备 后 或多或少都会受到噪声的影响,噪声的来源和类型是随机的。在Matlab平台上我们利用图像处理工具箱提供的 imnoise函数能够对图像添加gaussian,localvar,passion,salt&pepper,speckle 五种类型的噪声,达到仿真的效果。噪声影响条码图像的质量,从而影响条码的正确识读。 而要想达到好的滤波效果就要针对图像的特征采用相应的 滤波方法。中值滤波和低通滤波就是相对 较 适合 条码图像 的滤波方法。对于中值滤波,采用不同的模板会有不同的 滤波效果,例如采用 3 3模板的除噪效果好于采用 5 1模板,后者处理后的图像边缘上和数字上还存有未滤除的椒盐颗粒。 在实际的识读过程中,影响条码图像质量的不仅仅是噪声,还有条码图像读入过程中出现的倾斜,因此必须对图像进行矫正。我们可采用 Hough变换,快速、准确地找到倾斜角度,实现对图像的矫正。 本设计不考虑图像的倾斜情况 对滤波后的图像进行二值化处理,是 条码识读 的前提 。二值化效果的好坏直接关系到条码识读的正确与否。如二值化后图像没达到预期的效果,我们运用形态学中的开和闭运算除去二值图像中的随机噪声。 以上所有 数字图像处理算法对其它一维条码是通用的,也可应用于其它一维条码的处理和识别。 nts华侨大学 2007届本科毕业设计 20 3.3 EAN-13 码译码原理及其 Matlab 实现 3.3.1 条码 译码原理 如图 3-2所示是 EAN-13条码的一个字符。条、空宽度的定义如下:图中 C1、 C2、 C3、C4表示每个字符中四个相邻条、空的宽度, T 表示一个字符的宽度。 图 3-2 EAN-13条码宽度的定义 设一个字符中单位模块的宽度为 n,则单位模块的宽度 : n=T/7 T=C1+C2+C3+C4 由于条码条、空宽度 C1、 C2、 C3、 C4已知,设条码条、空分别占单位 模块的个数为mi,则: mi=ci/n(其中 i取 1、 2、 3、 4) 因此,由 mi可知道条码的编码。例如: ( 1) 若 m1=2、 m2=2、 m3=2、 m4=1; 条码的排列为条 -空 -条 -空, 则可知条码编码为 1100110,是右侧偶性字符 1; ( 2) 若 m1=1、 m2=2、 m3=1、 m4=3; 条码的排列为空 -条 -空 -条, 则可知条码编码为 0110111,是右侧奇性字符 8。 3.3.2 条码译码方法 方案一:宽度测量法 在图像方式的译码过程中,宽度的测量不再采用传统的脉冲测量法,而是通过记录每个条或空的宽度中所含象 素的个数来确定实际的条 /空宽度,从而确 定整个条码符号所代表的信息。 nts华侨大学 2007届本科毕业设计 21 方案二:平均值法 对条码符号图像中从起始符到终止符整个宽度进行测量,然后除以 95(标准宽度 ),求出单位模块所含的像素列宽,再分别测量各个条空的实际宽度 (此宽度以单位宽度为单位计算 ) 方案三 :相似边距离的测量方法 这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量值来判别。 前两种方案对条码图像的要求非常高,因为它们都是测量各元素符号的实际宽度,然后根据查表法得到所代表的码值。如果实 际测量值与标准值存在一点偏差,就不能实现正确译码。而第三种方案正是有效的解决了这一问题,因此我们采用相似边距离测量的方法来实现译码功能 .下面就简要说明一下这一方法。 由原理知,要想辨识一个条码,必须先测量条码条、空宽度 C1、 C2、 C3、 C4以及一个字符的宽度 T。条码图像经过预处理后得到的是二值图像,该点的颜色信息在阈值变换时已经定义,用 255和 0表示白和黑色。我们从条码的左边开始取点,若遇到点的灰度值由 255变到 0即由点的颜色由白色变为黑色,则表示检测到条,记录下该点的坐标值,如果点的颜色由黑色变为白色,则 表示检测到空,记录下该点的坐标值。这样 经过扫描后得到各个颜色变化点的坐标,然后将相邻两点的横坐标相减得到各个条、空的宽度 .由前面所述 EAN-13条码的组成知 :一个由占 3个条空的起始符、 3个条空的终止符、 4个条空的左侧数据符、 5个条空的中间分隔符、 20个条空的右侧数据符、 4个条空的校验符组成。所以,整个条码字符占的条空总数为 59,若条码字符没有发生几何畸变,一行扫描应记录的坐标数为 60个 ;而 对于有几何畸变的条码图像,例如条码污染、条码断裂、条码瑕疵等,该扫描行的坐标数将肯定大于 60或小于 60,这时将不记录该扫 描行,对此行不处理。这样利用图像统计方法,逐行扫描图像,获取条码图像信息,比起只由一行获取信息的方式可靠性更高,这样即使个别噪声点存在并不影响图像信息的获取。 ( 1)条码宽度的计算: 设条码字符颜色由黑变为白或由白变为黑(由“ 0”变为“ 1”或由“ 1”变为“ 0”)的各点坐标为 x1、 x2、 、 x60。则一行扫描的条空宽度 (像素) 分别为: c1=x2-x1、c2=x3-x2、 、 c59=x60-x59. 由上述图像条码译码理论可总结出条码条空宽度计算步骤,如图 3-3所示 : nts华侨大学 2007届本科毕业设计 22 图 3-3 条码条空宽度计算 在 Matlab中采用读取像素的方法实现。经过二值化后得到一个二值化图象矩阵 bw。简单起见,我们可以 读取 矩阵 bw的中间一行,得到一个向量 A。 为了提高可靠性,我们也可逐行扫描。 h,l=size(bw); %得到二值图像 bw的大小 A=bw(round(h/2),:); A中只有 0和 1表示黑与白。读取其中的元素,发生变化记下坐标(像素)存入另一个向量 x中, x元素前后依次相减存入向量 y中得条码宽度 ( 2)条码字符的判别 相似边距法 理论上条形 码字符的逻辑值应该由条形码的实际宽度来判断,而相似边距离方法的设计思想通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由元素宽度的实际值来判别。此种方法的优点是 :即使条码质量存在缺欠,使得实际测量值和条码应该具有的理论值有较大的偏差,仍然可以根据相似边的距离能够正确解释 。 什么是nts华侨大学 2007届本科毕业设计 23 相似边距离 ?图 3-4给出了相似边 之间的距离,则图中 t1, t2, t3, t4, t5, t6, t7(归一化值) 为条形码相似边距离。本文采用归一化理论,用一种相似边距离归一化的方法对字符进行判别。该方法即使条码印 刷质量有偏差,仍能正确对条码进行识读 . 图 3-4 相似边之间的距离 图 3-5条码字符宽度 示图 首先见图 3-5各种宽度的定义 :C1, C2, C3, C4 表示每个字符中四个相邻条、空的宽度, T表示一个字符的宽度, t1 , t2为相似边之间的距离,则用下列值 Ti(i=1,2)来定义TI与 T2的归一化值。 测量图 3-4中 7个宽度值 T, t1, t2, t3, t4, t5, t6;然后将测量值 t1, t2, t3, t4, t5, t6转换为常数值 Tl, T2, T3, T4, T5,及 T6即 T序列值,它代表了这些测量值的整数模块宽,以下方法用于 i序列值的求取 : 若 1.5 ti 2.5,那么 Ti=2 若 2.5 ti 3.5,那么 Ti=3 若 3.5 ti 4.5,那么 Ti=4 若 4.5 ti 5.5,那么 Ti=5 表 3-2列出了正向译码时, EAN-13条码字符值与归一化值 (Tl, T2)的对应关系。 nts华侨大学 2007届本科毕业设计 24 表 3-2 EAN-13条码字符与归一化值 表 3-2中“ E”表示偶字符,“ O”表示奇字符 EAN-13码字符编码与归一化值 (T1. T2)的对应关系见 表 3-3。 表 3-3 EAN-13字符编码与归一化值表 3-3中可以看到条形码编码和归一化值在多数情况下呈现一一对应的关系,只要确定了归一化值就能确定字符值,但是有四种情况例外,在表 3-3中知,左侧奇字符和右侧偶字符 1, 7归一化值均为 44,左侧奇字符和右侧偶字符 2, 8归一化值均为 33,左侧偶字符 1, 7归一化值均为 34,左侧 偶 字符 2, 8归一化值均为 43。这两种情况可以在判别字符时根据 C1, C2, C3
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
2:不支持迅雷下载,请使用浏览器下载
3:不支持QQ浏览器下载,请用其他浏览器
4:下载后的文档和图纸-无水印
5:文档经过压缩,下载后原文更清晰
|