基于数字图像处理的条形码识别方法.doc_第1页
基于数字图像处理的条形码识别方法.doc_第2页
基于数字图像处理的条形码识别方法.doc_第3页
基于数字图像处理的条形码识别方法.doc_第4页
基于数字图像处理的条形码识别方法.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

学校代码: 学 号: (本科毕业设计说明书题 目:基于数字图像处理的条形码识别方法学生姓名:学 院:系 别:专 业:班 级:指导教师:二 一 二 年 六 月内蒙古工业大学本科毕业设计说明书摘 要条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。由我国目前发展现状来看,条码的正常使用受到条形码印刷质量和商品运输过程的影响,并且传统的条码识读方式是采用光电识读器,条码图像对光的不同反射效果也必然会对条码的识读产生影响。不同的条码有着不同的识读过程。本文研究的是一种基于图像处理方式的识读方法,该方法是采用摄像头采集条码图像,一次性采集条码图像的方法避免了线性扫描器逐行扫描所产生的问题,同时简化了扫描条码图像的操作。然后通过一定的数字图像处理算法处理进行译码。译码算法主要分为两部分:第一部分首先对采集的条码图像进行预处理,这将为后面实现正确译码打下基础;第二部分就是对预处理后的条码图像进行译码,利用统计方法、根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,得到条码所表示的文本信息。软件译码具有更大的灵活性和较低的成本,因此具有很大的发展潜力。本设计在MATLAB软件语言环境下实现。关键词:图像处理;条码识别;相似边距离;MATLABAbstractBar code technology is now one of the most widely applied to identify and one of input technology, because it contains large amount of information, the error rate is low and recognition in all respects, got a lot of attention. It developed rapidly and widely used in the industrial, commercial, and book publishing, medical and health, and other industries. The present development situation of our, bar code by the normal use of the bar code printing quality and goods transportation influence, and the traditional way with barcode is adopting photoelectric device to read, barcode image of different light reflection effects also will affect the barcode to read. Different codes have different reading process. This paper is a study of the mode recognition method based on image processing, the method is to use a camera image acquisition bar code, one-time acquisition barcode image method avoided the linear scanner manufacture progressive-scan generated and, at the same time, simplify the bar code image scanning operation. Then through certain digital image processing algorithm processing decode. Decoding algorithm are divided into two parts: the first part of the first image preprocessing collection bar code, this will lay the foundation behind achieve correct decoding; The second part is the bar code image after pretreatment decoding, the use of statistical methods, according to a similar edge distance to distinguish bar code characters through decoding, calibration, error correction processing to reading the bar code, get the barcode said information of text. The software decoding for greater flexibility and lower costs, and therefore has great potential for development. This design in the MATLAB software realizes the language environment. Keywords: Image processing; Barcode identification; Similar edge distance; MATLAB目 录第一章 绪论11.1 条码技术概述11.2 本文的研究意义及内容31.2.1 研究意义31.2.2 本文的组织安排4第二章 一维条码技术52.1 一维条码简述52.2 一维条码符号的结构52.3 EAN码简述62.4 EAN-13码符号的特征72.4.1 EAN-13码字符集82.4.2 EAN-13码符号结构92.5 EAN-13码的校验11第三章 EAN-13码的识读133.1 MATLAB数字图象处理技术简介133.2 条码图像处理143.2.1 条码图像预处理143.2.2 预处理结果与分析163.3 EAN-13码译码的原理183.3.1 条码译码原理183.3.2 条码译码方法183.3.3 译码结果与分析24结论28参 考 文 献29附 录30致 谢36第一章 绪 论1.1 条码技术概述条形码(简称条码)技术是在计算机技术和信息技术基础上发展起来的一门集编码、印刷、识别、数据采集于一体的新兴技术1。近些年来发展相当迅速,现已应用在计算机管理的各个领域,成为当今信息采集和防伪的重要手段,并且渗透到了国民经济各行各业和人民日常的生活中。在先进的工业国家里,条码技术作为一种信息处理技术已成为社会化产物,不仅应用于生产过程,而且也应用于管理过程。在我国条码技术起步比较晚,但它的发展却非常迅速。条码技术2现已应用在计算机管理的各个领域,渗透到了商业、工业、交通运输业、邮电通讯业、物资管理、仓储、医疗卫生、安全检查、餐饮旅游、票证管理以及军事装备、工程项目等国民经济各行各业。随着全球经济贸易体系的形成,研究条码技术有着重要意义。现代信息技术正快速地改变着我们的社会,在海量信息的处理过程中,人们开始关注如何确保数据信息与物理现实一一对应,如何改变手工输入数据,如何使输入质量和速度与其匹配,输入数据又以何种载体来记录和标识等问题。条形码自动识别技术就是在这样的环境下应运而生的3。条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期,是继计算机技术应用和发展应运而生的。随着70年代微处理器的问世,标志着“信息化社会”的到来,它要求人们对社会上各个领域的信息、数据实施正确、有效、及时的采集、传递和管理。因此如何代替人的视觉、人的手工操作、或者在复杂的环境中正确、迅速地获取信息并加以识别,成为人们普遍关心和有关人员精心研究的课题。中国要发展市场经济,有无条形码也就成了能否顺利与国际市场接轨的一个重要条件。在这种有利形势下,中国条形码工作迈出了新的步伐,得到蓬勃发展4。条码是由一组规则排列,宽窄不一的条、空组成的标记,用以表示一定的信息,它是一种由光电扫描识读设备自动识读并实现信息自动输入计算机的图形标示符。条是指条码中反射率较低的部分;也就是指黑色或深色的条形。空是指条码中反射率较高的部分,也就是指白色或浅色的条形5。条码信息靠条和空的不同宽度和位置来传递,信息量的大小是由条码的宽度和印刷的精度来决定的,条码越宽,包容的条和空越多,信息量越大。条码印刷的精度越高,单位长度内可以容纳的条和空越多,传递的信息量也就越大。这种条码技术在一个方向上通过“条”与“空”的排列组合来存储信息,所以叫它“一维条码”。这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。条码是迄今为止最经济、实用的自动识别技术,其应用源于以下几个优点6:(1)输入速度快与键盘输入相比,用条形码扫描读入电脑的速度大约是用键盘输入速度的100倍,并且能实现“即时数据输入”。如果说这些条码信息超过100个字节的话,那速度就不止快上100倍了。(2)可靠性高键盘输入数据出错率一般为三百分之一,利用光学字符识读技术出错率为万分之一,而采用条码技术误码率低于百万分之一。一般来说,据国外统计,一维条码的误读率只有百万分之一,二维条码的误读率更低,只有一亿分之一,相对于人工输入或者其它现在还不成熟的输入方法,条形码是最可靠输入方式。(3)灵活实用条码标识既可以作为一种识读手段单独使用,也可以和有关识读设备组成一个系统实现自动化识读,还可以和其它控制设备联接起来实现自动化管理。另外,条码标签易于制作,对设备和材料没有特殊要求,识读设备操作容易,不需要特殊培训,而且设备也相对便宜。(4)采集信息量大利用传统的一维条码一次可采集几十位字符信息,二维条码可以携带数千个字符信息。(5)寿命长条形码比起磁卡,具有容易保存的作用,许多证件上的条码,只要保护得当,就不会变形,不会因为时间而损失信息。(6)可携带性可复印性条码作为一种平面的黑白相间的微小标签形式,具有携带方便与容易复印的特性,是所有可流通的识读手段中最好的方法。(7)不可更改性有些自动识读方式,如各种卡类产品,容易受到有心人士的更改,而条形码具有不可更改性,这也成为其独到的一种防止滥用方式。1.2 本文的研究意义及内容1.2.1 研究意义条码技术在我国的应用比较晚,1990 年以前几乎所有的中国商品都没有条码。从 80 年代中期开始,我国一些高等院校、科研部门及出口企业,逐步把条码技术的研究和推广应用提到议事日程。1988 年 12 月 28 日,经国务院批准,国家技术监督局立了“中国物品编码中心”,其主要任务是研究、推广条码技术,同时组织、开发、协调、管理我国的条码工作。1991 年 4 月该中心代表中国加入 EAN,是全球 99 个国家(或地区)编码组织成员之一。1991 年 5 月,中国制定并颁布了有关条码的一系列国家标准,并从 1992 年 1 月 1 日起实行7。目前我国条码技术产业还处于初级阶段,产业规模偏小,在国际市场上所占份额偏低,与我国巨大的条码技术应用市场不相匹配。目前占领中国市场半壁江山的是美国码捷(Metrologic)公司所生产的Metrofogic系列条码扫描设备8。而这样的激光电子设备价格并不低廉,码捷公司的单线激光扫描枪价格基本都在千元上下,即使是国产的扫描枪也要300-1000元。假如一个大型超市有10个出口,每个出口配一个扫描枪,单就这个成本就要接近1万元,如果算上设备的日常损耗和维修更换,成本就非常大。国产激光扫描枪技术落后,市场占有率低,从传统扫描枪上与对手竞争是比较困难的。由一般条码识读器的原理可知:条形码的宽窄和颜色的对比度都会对光的反射产生影响,不可避免的会影响到条码正确识读;此外,由于光电识读器采用线扫描方式,斑点、脏污和纸面断裂也会造成反射光的差异,相应的对条码识读也必然会产生影响。因此,一方面条码标准化工作需要大力加强;另一方面研制有一定的辨识能力的条码阅读装置具有十分重要的现实意义。条码图像辨识在一些特殊情况下将发挥着极大的优势。图像处理识读方法是首先对条码图像进行处理,然后利用统计方法,根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,这样将大大降低条码印刷质量以及条码污染等各种因素的干扰,从而有效地提高条码的识读率。何用条码标识信息、并将条形码表示的信息转换成计算机可识读。本系统工作原理方面,在基于图像的条码识别中摄像头只作为一个图像采集设备,真正进行数据运算的是计算机中的软件。而对于扫描枪来说,它首先通过光敏器件接收条码反射光的强弱情况,然后经过必要的修正和处理后将数据传送给计算机,在这个过程中,扫描枪既作为输入设备,又具有运算的任务,功能的复杂性决定了它的高成本。计算机具有强大的运算能力,将图像信息的运算放到计算机中是一种更好的方式。1.2.2 本文的组织安排本文研究的是基于数字图像处理的EAN-13条形码识别算法,通过工具平台MATLAB实现。其中图像处理部分是条码识别重要的前期工作,利用MATLAB强大的图象处理工具箱实现图像的读入、加噪仿真、滤波、二值化处理等工作,最终得到高质量的二值化图像。条码识别就是在二值图像的基础上实现,二值图像的质量直接关系到条码能否正确识读。在条码识读方法上,本文对宽度测量法、平均值法简单介绍,而对相似边距离的测量方法这一低误码率方法进行详细具体研究。文章先对条码技术诞生及发展、条码技术的优点进行简要概述。重点介绍一维条码中的EAN-13码的发展、结构、特征、译码原理及其MATLAB实现。对MATLAB图像处理方面也有一定的研究。最后是对整个课题研究过程中成败得失的总结,为以后的研究工作积累宝贵的经验。第二章 一维条码技术2.1 一维条码简述条码是将线条与空白按照一定的编码规则组合起来的符号,用以代表一定的字母、数字等资料。在进行辨识的时候,是用条码阅读机扫描,得到一组反射光信号,此信号经光电转换后变为一组与线条、空白相对应的电子讯号,经解码后还原为相应的文数字,再传入电脑。条码辨识技术已相当成熟,其读取的错误率约为百万分之一,识读率大于98%,是一种可靠性高、输入快速、准确性高、成本低、应用面广的资料自动收集技术。 目前世界上约有 225 种以上一维条码,每种条码都有自己的编码规则9。规定每个字母是由几个线条及几个空白组成,以及字母的排列。目前世界上常用的码制有EAN条形码、UPC条形码、二五条形码、交叉二五条形码库德巴条形码、三九条形码和EAN128条形码10。其中UPC条码主要用于北美地区。EAN条码是国际通用符号体系,它们是一种定长、无含义的条码,主要用于商品标识。EAN128码是由国际物品编码协会和美国统一代码委员会联合开发、共同采用的一种特定的条码符号,它是一种连续型、非定长有含义的高密度代码,用以表示生产日期、批号、数量、规格、保质期、收货地等更多的商品信息。另有一些码制主要是适应于某种特殊场合,如库德巴码用于血库、图书馆、包裹等的跟踪管理;二五码用于包装、运输和国际航空系统为机票进行顺序编号11。本文主要研究其中的EAN-13码。条码可分为一维条码和二维码两大类,目前在商品上的应用仍以一维条码为主,故一维条码又被称为商品条码,二维码则是另一种渐受重视的条码,其功能较一维条码强,应用范围更加广泛。2.2 一维条码符号的结构任何一个完整的一维条码通常都是由两侧的空白区、起始符、数据字符、校验符、终止符和供人识别字符组成的.表2-1示出了一个条码符号的完整结构。图2-1示出条码符号。一维条码符号中的数据字符和校验符是代表编码信息的字符,扫描识读后需要传输处理,左右两侧的空白区、起始符、终止符等都是不代表编码信息的辅助符号,仅供条码扫描识读时使用,不需要参与信息代码传输。 表2-1 条码符号结构图2-1 条码符号2.3 EAN码简述EAN码的全名为欧洲商品条码(European Article Number),始于1977年,由欧洲十二个工业国家所共同发展出来的一种条码。目前已成为一种国际性的条码系统。EAN条码系统的管理是由国际商品条码总会(International Article Numbering Association)负责各会员国的国家代表号码之分配与授权,再由各会员国的商品条码专责机构,对其国内的制造商、批发商、零售商等授予厂商代表号码。目前已有30多个国家加盟EAN。 EAN码有两种版本标准版和缩短版。标准版表示13位数字,又称为EAN-13码,缩短版表示8位数字,又称EAN-8码。两种条码的最后一位为校验位,由前面的12位或7位数字计算得出。两种版本的编码方式可参考国标GB120941998。EAN码由前缀码、厂商识别码、商品项目代码和校验码组成。前缀码是国际EAN组织标识各会员组织的代码,我国为690、691和692;厂商代码是EAN编码组织在EAN分配的前缀码的基础上分配给厂商的代码;商品项目代码由厂商自行编码;校验码为了校验代码的正确性。在编制商品项目代码时,厂商必须遵守商品编码的基本原则:对同一商品项目的商品必须编制相同的商品项目代码;对不同的商品项目必须编制不同的商品项目代码。保证商品项目与其标识代码一一对应,即一个商品项目只有一个代码,一个代码只标识一个商品项目。另外,图书和期刊作为特殊的商品也采用了EAN-13表示ISBN和ISSN。我国被分配使用7开头的ISBN号,因此我国出版社出版的图书上的条码全部为9787开头12。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)条码符号可设计成既可供固定式扫描器全向扫描,又可用手持扫描设备识读的形式。(6)条码符号的大小可在放大系数的两个极限值所决定的尺寸之间变化,以适应不同印刷工艺的需求及用户对印刷面积的要求。(7)对一个特定大小的条码符号所规定的尺寸称为名义尺寸,放大系数的范围0.8-2.0。(8)供人识别的字符规定采用OCR-B字符。2.4.1 EAN-13码字符集EAN-13条码字符集包括10个数字字符,即0-9。在条码符号中,每个数字字符由七个模块的二进制表示,其表示形式见条码字符集中的A,B,C三个子集(见表2-2)。表2-2 条码字符集A子集中条码字符所包含的深色模块的个数为奇数,称为奇排列。B、C子集中条码字符所包含的深色模块的个数为偶数,称为偶排列。条码字符集示意图见图2-2。A、B子集的条码字符从左到向右,以一个浅色模块开始,以一个深色模块结束。C子集的条码字符从左到右,以一个深色模块开始,以一个浅色模块结束。图2-2 通用商品条码字符集示意图2.4.2 EAN-13码符号结构EAN-13条码符号是由左侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符及右侧空白区构成,如图2-3和图2-4所示。图2-3 EAN-13条码符号结构图2-4 EAN-13 条码符号构成示意图左侧空白区:位于条码符号起始符左侧,无印刷符号且与空的颜色相同的区域。其最小宽度为11个模块宽。起始符:位于条码符号左侧,表示信息开始的特殊符号,由3个模块组成。左侧数据符:介于起始符和中间分隔符之间的表示信息的一组条码字符。表示前缀码和厂商代码,共6位数字。条码字符按A子集或B子集的形式构成。左侧数据符由42个模块组成。中间分隔符:位于条码符号的中间位置,是平分条码符号的特殊符号,由5个模块组成。右侧数据符:中间分隔符右侧的一组选自C子集的条码字符,表示5位商品代码,又35个模块组成。校验符:最后一个条码字符,选自C子集,由7个模块组成,表示一个校验字符。终止符:位于条码符号右侧,表示信息结束的特殊符号,由3个模块组成。右侧空白区:在终止符之外的无印刷符号且与空的颜色相同的区域,其最小宽度为7个模块。EAN-13条码符号所包含的模块总数为113个。EAN-13条码的前置码不用条码表示,也不包括在左侧数据符中。左侧数据符是根据前置码所决定的条码字符构成方式(奇排列和偶排列)来表示前置码之后的6位数字的,见表2-3。表2-3 左侧数据符的奇偶排列规则注:表中A为A子集,B为B子集。纵向值0-9:代表前置码数值;横向值12-7:代表代码位置序号。2.5 EAN-13码的校验校验码的主要作用是防止条码标志因印刷质量低劣或包装运输中引起标志破损而造成扫描设备误读信息而设置,作为确保商品条形码识读正确性的必要手段。条形码用户在标志设计完成后,代码的正确与否直接关系到用户的自身利益。对代码的验证,校验码的计算是标志商品质量检验的重要内容之一13。下面是EAN-13码的校验码验算方法,步骤如下:(1)将条形码中数字码由右至左位排序(包括校验码);(2)从代码位置序号2开始,所有偶数位的数字代码求和为a;(3)将上步中的a乘以3为a;(4)从代码位置序号3开始,所有奇数位的数字代码求和为b;(5)将a和b相加为s;(6)取s的十进制个位数d,再由10减去d即为校验位数值C。实例:设EAN一13码中数字码为234235654652,其校验码的计算过程为:步骤1:将条码中的数字码由右至左排序如表2-4所示;步骤2:偶数位求和:3+2+5+5+6+2=23;步骤3:上步结果*3:23*3=69;步骤4:奇数位求和:2+4+3+5+4+5=23;步骤5:3、4步结果求和:69+23=92;步骤6:10-2=8.得出结果:校验码为8。表 2-4 实例第三章 EAN-13码的识读3.1 MATLAB数字图象处理技术简介数字图像处理技术14是20世纪60年代随着计算机技术和大规模集成电路的发展而产生,并不断成熟起来的新兴的技术领域,数字图像处理技术在理论上和实际应用中都取得了巨大的成就。图像处理就是将图像转换为一个数字矩阵存放在计算机中,并采用一定的算法对其进行处理。目前的图像处理技术已经在许多的应用领域中得到重视,并取得了巨大的成就。根据应用领域的不同要求,可以将图像处理技术划分为许多分支,其中比较重要的分支有:图像数字化、图像增强与复原、图像编码、图像分割与特征提取、图像分析和图像隐藏。在图像处理方面,MATLAB是一种基于向量(数组)而不是标量的高级程序语言,数字图像实际上就是一组有序的离散数据(具有二值或灰度值的二维数组),使用MATLAB的矩阵变量对这些离散数据形成的矩阵能够进行一次性的处理。因此,MATLAB从本质上提供了对图像的支持,非常适合于图像处理,较其它标量语言而言,这也是MATLAB非常显著的一大优势。MATLAB 软件是矩阵实验室(Matrix Laboratory)的简称,是 Math Works 公司于 1984年推出的用于数值计算的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括 MATLAB 和 Simulink 两大部分15。MATLAB 的图像处理功能主要集中在图像处理工具箱(Image Processing Toolbox,IPT)中,图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作16。MATLAB提供的图像处理函数涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。MATLAB强大的图形功能和丰富的图像处理工具箱函数能够将复杂的算法转化为简单函数调用,省去了大量的底层编程工作,从而使科研人员专注于研究或教学,并能够达到快速实现设计思路的目的。这些函数按其功能可分为:图像显示;图像文件I/O;图像算术运算;几何变换;图像登记;像素值与统计;图像分析;图像增强;线性滤波;线性二元滤波设计;图像去模糊;图像变换;邻域与块处理;灰度与二值图像的形态学运算;结构元素创建与处理;基于边缘的处理;色彩影射表操作;色彩空间变换;图像类型与类型转换。3.2 条码图像处理3.2.1 条码图像预处理对于一个条码图像我们先要对其进行一定的处理才能达到正确译码的目的。而要对其进行处理,首先是要将其读入。由于有噪声的存在,必须对其进行滤波。也可以人为地加入一定类型的噪声仿真,然后用合适的滤波方法进行滤波,这样有助于理解各种滤波方法所针对的噪声类型。最后就是要二值化,得到二值图像。条码图像预处理流程图如图3-1所示。图3-1 条码图像预处理流程图 MATLAB中利用函数imread来实现图像文件的读取操作。图3-2是需要处理的条码图片。图3-2 需要处理的条码一般情况下,通过imread函数读取的大多数图像都是8位的。当把这些图像加载到内存中时,MATLAB就将其存储在类uint8中。此外,MATLAB还支持16位的PNG和TIFF图像。当用户读取这类图像时,MATLAB就将其存储在类uint16中。而对于索引图像来说,即使图像矩阵的本身为uint8或uint16,imread函数仍将颜色映射表读取并存储在一个双精度浮点类型的矩阵中。例如:I=imread(008.bmp);该语句可将条码图像读入内存,并以矩阵形式存储。 MATLAB的图像处理工具箱提供imnoise函数,可以用该函数给图像添加不同种类的噪声。该函数的调用格式如下: J=imnoise(I,type,parameters)表3-1列出了imnoise函数能够产生的五种噪声及其对应参数。表3-1 imnoise函数支持的噪声种类及参数说明例如:J=imnoise(I,salt & pepper,0.01);该语句实现在条码图像I中加入椒盐噪声。 条码图像被采集进入计算机,由于设备、以及传输过程中的各种因素的影响,一些噪声将会对图像的质量产生影响。任何一幅未经处理的原始图象,都存在一定程度的噪声干扰。不同的噪声干扰,处理方法不同。影响条码图像质量最典型的噪声是椒盐噪声。椒盐噪声的特点是此干扰在图像中是以孤立点的形式存在的。针对噪声的类型,采用中值滤波。中值滤波是一种非线性信号处理方法。可以克服线性滤波器如最小均方滤波,平均值滤波(平滑滤波)等所带来的图像细节模糊。而且对于脉冲干扰及点状噪声有良好抑制作用,能较好保持图像边缘。它可以起到既消除噪声又保持图像细节的作用。为了达到好的滤波效果应选择合适的滤波窗口。从条码图像的特征来讨论选择采用的中值滤波窗口。条码图像的特点在于是由纵向一定宽度黑白条空组成,我们建立不同大小的模板,对含有噪声的图像进行滤波处理,比较它们滤除噪声干扰的效果。在MATLAB中可以使用imfilter函数或filter2函数调用创建好的滤波器(可以是预定义滤波器,也可以是自定义滤波器)对图像进行滤波。 为了便于对图像进行后续处理,需要对图像进行二值化处理。二值化是一种图像分割技术中的区域分割技术,它是区域分割中最基本也是最常用的手段,使用阈值把图像和背景分割出来,也称阈值分割。二值化处理将不可避免地丢失图像信息,若阈值选取过小,会提取多余的部分,若选取的过大,会丢失所需要的图像信息。它对物体与背景有较强对比度的图像分割特别有效。如果感兴趣的物体在其内部具有均匀一致的灰度值,并分布在一个具有另一个灰度值的均匀背景上,使用阈值分割方法效果很好。阈值分割算法主要有两个步骤:确定需要的分割阈值;将像素与分割阈值作比较并划分。其中阈值选取是图像二值化处理中的一项重要技术,它的选取直接关系到后续的处理。根据一维条码的特点,条码图像由条和空组成。条即深色模块用“1”表示,空即浅色模块用“0”表示,深色的条与白色的空灰度明显呈对比状态,这样的特点恰好符合二值表示数据的特点,因此可以简化阈值变换过程;在二值图像中,“0”表示黑色,“255”表示白色,条码图像的灰度图中,虽然条、空的颜色不是二值的“0”和“255”,而是在0,255之间的某个灰度值,但是条、空的灰度对比是明显的,一般是位于灰度直方图的灰度范围,在其中间左右的位置指定一个阈值。根据对现场图像的反复测试得出:若表示为0,1范围内的数据值,可以选择0.45,0.55内的值作为阈值T(基于数字图像处理方式的EAN-13条码识读算法研究)。指定了一个阈值T之后,将图像中的像素与阈值作比较,如果图像中某像素的灰度值小于该阈值,则将该像素的灰度值设置为0,否则灰度值设置为255。按下式对图像进行处理可得到二值图像g(x,y): (3-1)在MATLAB中,通过使用函数graythresh和im2bw创建一个新的二值图像bw:level=graythresh(L);bw=im2bw(L,level);3.2.2 预处理结果与分析根据上述条码图像预处理的理论知识编译相关的MATLAB程序,得到如图3-3所示图像预处理结果。图3-3 条码图像预处理MATLAB图像处理工具箱支持的图像文件格式丰富,但通常习惯于BMP格式图像的处理。利用imread函数将图像由计算机硬盘读入内存。图像读入识别设备后或多或少都会受到噪声的影响,噪声的来源和类型是随机的。在MATLAB平台上我们利用图像处理工具箱提供的imnoise函数能够对图像添加gaussian,localvar,passion,salt&pepper,speckle五种类型的噪声,达到仿真的效果。噪声影响条码图像的质量,从而影响条码的正确识读。而要想达到好的滤波效果就要针对图像的特征采用相应的滤波方法。中值滤波和低通滤波就是相对较适合条码图像的滤波方法。在实际的识读过程中,影响条码图像质量的不仅仅是噪声,还有条码图像读入过程中出现的倾斜,因此必须对图像进行矫正。可以采用Hough变换,快速、准确地找到倾斜角度,实现对图像的矫正。本设计不考虑图像的倾斜情况。3.3 EAN-13码译码的原理3.3.1 条码译码原理如图3-4所示是EAN-13条码的一个字符。条、空宽度的定义如下:图中、表示每个字符中四个相邻条、空的宽度,T表示一个字符的宽度。图3-4 EAN-13条码宽度的定义设一个字符中单位模块的宽度为n,则单位模块的宽度:n=/7T=+由于条码条、空宽度、已知,设条码条、空分别占单位模块的个数为,则:=/n(其中i取1、2、3、4)因此,由mi可知道条码的编码。例如:(1)若=2、=2、=2、=1;条码的排列为条-空-条-空,则可知条码编码为1100110,是右侧偶性字符1;(2)若=1、=2、=1、=3;条码的排列为空-条-空-条,则可知条码编码为0110111,是右侧奇性字符8。3.3.2 条码译码方法方案一:宽度测量法在图像方式的译码过程中,宽度的测量不再采用传统的脉冲测量法,而是通过记录每个条或空的宽度中所含象素的个数来确定实际的条/空宽度,从而确定整个条码符号所代表的信息。方案二:平均值法对条码符号图像中从起始符到终止符整个宽度进行测量,然后除以95(标准宽度),求出单位模块所含的像素列宽,再分别测量各个条空的实际宽度(此宽度以单位宽度为单位计算)。方案三:相似边距离的测量方法这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量值来判别。前两种方案对条码图像的要求非常高,因为它们都是测量各元素符号的实际宽度,然后根据查表法得到所代表的码值。如果实际测量值与标准值存在一点偏差,就不能实现正确译码。而第三种方案正是有效的解决了这一问题,因此本文采用相似边距离测量的方法来实现译码功能。下面就简要说明一下这一方法。由原理知,要想辨识一个条码,必须先测量条码条、空宽度、以及一个字符的宽度。条码图像经过预处理后得到的是二值图像,该点的颜色信息在阈值变换时已经定义,用255和0表示白和黑色。我们从条码的左边开始取点,若遇到点的灰度值由255变到0即由点的颜色由白色变为黑色,则表示检测到条,记录下该点的坐标值,如果点的颜色由黑色变为白色,则表示检测到空,记录下该点的坐标值。这样经过扫描后得到各个颜色变化点的坐标,然后将相邻两点的横坐标相减得到各个条、空的宽度.由前面所述EAN-13条码的组成知:一个由占3个条空的起始符、3个条空的终止符、4个条空的左侧数据符、5个条空的中间分隔符、20个条空的右侧数据符、4个条空的校验符组成。所以,整个条码字符占的条空总数为59,若条码字符没有发生几何畸变,一行扫描应记录的坐标数为60个。而对于有几何畸变的条码图像,例如条码污染、条码断裂、条码瑕疵等,该扫描行的坐标数将肯定大于60或小于60,这时将不记录该扫描行,对此行不处理。这样利用图像统计方法,逐行扫描图像,获取条码图像信息,比起只由一行获取信息的方式可靠性更高,这样即使个别噪声点存在并不影响图像信息的获取。(1)条码宽度的计算:设条码字符颜色由黑变为白或由白变为黑(由“0”变为“1”或由“1”变为“0”)的各点坐标为、 、。则一行扫描的条空宽度(像素)分别为:=-、=-、=-。由上述图像条码译码理论可总结出条码条空宽度计算步骤,如图3-5所示:图3-5 条码条空宽度计算在MATLAB中采用读取像素的方法实现。经过二值化后得到一个二值化图象矩阵bw。简单起见,可以读取矩阵bw的中间一行,得到一个向量A。为了提高可靠性,我们也可逐行扫描。h,l=size(bw); %得到二值图像bw的大小A=bw(round(h/2),:); A中只有0和1表示黑与白。读取其中的元素,发生变化记下坐标(像素)存入另一个向量x中,x元素前后依次相减存入向量y中得条码宽度。(2)条码字符的判别相似边距法:理论上条形码字符的逻辑值应该由条形码的实际宽度来判断,而相似边距离方法的设计思想通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由元素宽度的实际值来判别。此种方法的优点是:即使条码质量存在缺欠,使得实际测量值和条码应该具有的理论值有较大的偏差,仍然可以根据相似边的距离能够正确解释。图3-6给出了相似边之间的距离,则图中,(归一化值)为条形码相似边距离。本文采用归一化理论,用一种相似边距离归一化的方法对字符进行判别。该方法即使条码印刷质量有偏差,仍能正确对条码进行识读。图3-6 相似边之间的距离 图3-7条码字符宽度示图首先见图3-7各种宽度的定义: , , , 表示每个字符中四个相邻条、空的宽度,表示一个字符的宽度,为相似边之间的距离,则用下列值 (i=1,2)来定义与的归一化值。测量7个宽度值,;然后将测量值,转换为常数值,即序列值,它代表了这些测量值的整数模块宽,以下方法用于i序列值的求取:若1.52.5,那么=2若2.53.5,那么=3若3.54.5,那么=4若4.55.5,那么=5表3-2列出了正向译码时,EAN-13条码字符值与归一化值(,)的对应关系。表3-2中“E”表示偶字符,“O”表示奇字符。EAN-13码字符编码与归一化值(,)的对应关系见表3-3。表3-2 EAN-13条码字符与归一化值表3-3 EAN-13字符编码与归一化值表3-3中可以看到条形码编码和归一化值在多数情况下呈现一一对应的关系,只要确定了归一化值就能确定字符值,但是有四种情况例外,在表3-3中知,左侧奇字符和右侧偶字符1,7归一化值均为44,左侧奇字符和右侧偶字符2,8归一化值均为33,左侧偶字符1,7归一化值均为34,左侧偶字符2,8归一化值均为43。这两种情况可以在判别字符时根据,进一步判别,根据它们条空宽度特点进行判别。有1728字符标准条空宽度值的特点知:对于左侧奇字符、右侧偶字符1和7可通过与作比较,者为字符1,反之为7;对于左侧奇字符、右侧偶字符2和8可通过与作比较,者为字符8,反之为2;对于左侧偶字符1和7可通过与作比较,者为字符7,反之为1;对于左侧偶字符2和8可通过与作比较,者为字符2,反之为8。由上述条码字符识别理论可总结出相似边距离测量法的一般步骤。由条码宽度的计算我们得到了各个条、空的宽度(像素),并通过计算n=/7,=+得到单位模块的宽度(像素)。各个条空的宽度除以单位模块的宽度就是归一化的条空宽度。而为了方便译码,我们除去起始符3个条空,中间分隔符5个条空,终止符3个条空,对剩下的48个条空每4个条空为一组进行译码。计算相似边之间的距离、从而得到归一化(,)。最后查表可得条码字符。为检验译码的正确性利用校验位对码字进行校验。流程图如图3-8。1728判别子程序流程如图3-9。图3-8 字符判别流程图图3-9 1728判别子程序流程图3.3.3 译码结果与分析 根据上述译码理论,采用相似边距离测量方法对3.2.1节中预处理后的条码图像(二值图像)进行译码,得到如下所示译码结果:图3-10是需要处理的条码图片。图3-10 需要处理的条码根据条码图像预处理的理论知识编译相关的MATLAB程序,得到如图3-11所示的图像预处理结果。图3-11 条码图像预处理得到如下所示译码结果:图3-12是需要处理的条码图片。图3-12 需要处理的条码根据条码图像预处理的理论知识编译相关的MATLAB程序,得到如图3-13所示的图像预处理结果。图3-13 条码图像预处理得到如下所示译码结果:通过多次对不同EAN-13条码的识读,证明该条码检测系统速度快、效率高、而误码率却很低,即使在图像预处理上达不到理想的效果,条码仍能正确识读。这是因为我们选择了相似边距离测量的方法。可见,影响条码识别效果的不仅仅是条码图像预处理效果,译码方法更是不可忽视的重要原因。相似边距离测量方法有着其它译码方法无可比拟的优势,它不是根据条码条空宽度的实际值来判别,而是通过所谓的相似边距离来判别。因此,即使条码质量存在欠缺,仍然能够根据相似边距离正确解释条码,有着很强的对实际情况的适应性。误码率方面,一般情况下条码都能够正确识读。但在由一个字符的归一化的相似边距离、转换为序列值、时,如果、的值为2.5、3.5、4.5之一,系统将不能正确的将其转换为序列值,此时存在最大的误码率,条码几乎不能被正确识读。所以应该尽量避免此种情况的发生,这就要求我们做好图像的预处理工作,防止条码线条过度展宽或细化。需要指出的是,在实际的译码中还存在着正向译码和反向译码的情况,两种情况下字符编码对应着不同的归一化值。因此译码前需要判别译码方向。本设计直接采用正向译码。最后,译码是编码的反过程,编码技术的熟练掌握对译码工作有着事半功倍的效果。结 论在对条码图像作相应的图像预处理之后,对得到的二值条码图像利用上述条码识别算法在MATLAB软件环境下编写了相应的软件程序。通过实验,识别效果不错,误码率低,提高了条码的识别率。本次设计在译码方法上进行了比较选择,确定了相似边距离的测量方法的优越性。这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值。另外用软件实现条码的识别比硬件具有更好的抗噪声性能,且速度快,效率高。尽管如此,设计中也遇到了很多的问题有待进一步的解决和探索研究。本设计只是对质量较好的条码图像进行一般性处理,但实际中的图像并都不是这么理想,例如条码污染、条码断裂、条码瑕疵等。这些需要进行特殊的图像处理过程才能达到译码的目的。如果条码被污染了要进行修复,条码发生几何畸

温馨提示

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

评论

0/150

提交评论