一维条形码的生成与识别_第1页
一维条形码的生成与识别_第2页
一维条形码的生成与识别_第3页
一维条形码的生成与识别_第4页
一维条形码的生成与识别_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业论文本科生毕业设计题目一维条形码的生成与识别学院专业班级 学生姓名 指导教师 撰写日期:年月日 一维条形码生成与识别摘要条形码(简称条码)技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。条码技术是集条码理论、光电技术、计算机技术、通信技术、条码印制技术于一体的一种自动识别技术。条形码是由宽度不同、反射率不同的条(黑色)和空(白色),按照一定的编码规则编制而成,用以表达一组数字或字母符号信息的图形标识符。条形码符号也可印成其它颜色,但两种颜色对光必须有不同的反射率,保证有足够的对比度。条码技术具有速度快、准确率高、可靠性强、寿命长、成本低廉等特点,因而广泛应用于商品流通、工业生产、图书管理、仓储标证管理、信息服务等领域。由我国目前发展现状来看,条码的正常使用受到条形码印刷质量和商品运输过程的影响,并且传统的条码识读方式是采用光电识读器,条码图像对光的不同反射效果也必然会对条码的识读产生影响,而一般条码在搬运过程中条码会不可避免的破损,所以对质量较差的条码的识别尤为重要。关键词:自动识别;编码规则;可靠性;应用广泛Aone-dimensionalbarcodegenerationandrecognitionAbstractNowadaysBarCode(thecode)isaverypopulartechniqueofidentificationandinput.Ithasbeentakenseriousbecauseofit’slargeinformationandlowerrorrate.Itdevelopsveryquicklyandhasalreadybeenappliedinindustry,commerce,publishing,medicalsanitationandsoon.thecodetechnologyisanautomaticidentificationtechnologysetcodetheory,photoelectrictechnology,computertechnology,communicationtechnology,barcodeprintingtechnology.Barcodeisdifferentfromthewidth,thereflectivityofdifferentarticles(black)andblank(white),andaccordingtoacertaincodingrulesforidentifiers,graphicexpressionofasetofnumbersorlettersusedtosymbolicinformation.Barcodesymbolcanalsobeprintedincolor,butthetwocolorshavedifferentreflectivityonthelightmust,ensureadequatecontrast.Barcodetechnologyhastheadvantagesoffastspeed,highaccuracy,highreliability,longlife,lowcost,andiswidelyusedinthecirculationofcommodities,industrialproduction,librarymanagement,warehousinglabelcardmanagement,informationservice.ItcanbeseenfromtheactualitiesinourcountrythattheuseofBar-Codeisinfluencedbytheprintingqualityandgoodstransportation,andbesides,thetraditionalmodeofrecognitionisusingopticalscannersothattherecognitinonwillbeconsequentiallyaffectedbythedifferentreflectionofcodeimagebythelight.Thegeneralcourseoftheremovalbarcodebarcodewillinevitablydamage,sopoorqualitybarcodebarcodeidentificationisparticularlyimportant.Keywords:Automaticrecognition;codingrules;reliability;applicationI目录TOC\o"1-3"\u1绪论 11.1一维条形码的背景和应用趋势 11.2一维码技术的研究方法 21.3本文的研究意义及内容 21.3.1研究意义 21.3.2研究内容及本文的组织安排 32一维条形码的生成 42.1一维条形码的简介 42.2EAN码简述 42.3EAN-13码符号的特征 62.4EAN-13码的格式 62.5EAN-13条形码的构成 72.6EAN-13的编码规则 82.7EAN-13条形码的校验方法 102.8EAN-13条形码的生成 113条码图像的预处理 143.1图像分割理论 143.1.1图像分割的的定义 143.1.2图像分割算法 153.1.3图像分割结果 163.2灰度处理及二值化 183.3图像的加噪仿真 193.4图像的滤波 203.4.1图像的平滑滤波 203.4.2形态学滤波 214条码的译码方法 234.1译码方案的选择 234.2相似边距法介绍 244.3条码字符的判别 275一维条形码的识别 286结论 31参考文献 32附录A 33附录B 38致谢 471绪论在信息时代的今天,计算机的应用己和我们的生活紧密地联系在一起。计算机快速准确的信息处理速度,给工农业生产、经营管理以及人们的日常生活等方面都带来了巨大的效益。可以说计算机的出现、普及和应用加速了社会发展进程。然而,在运用计算机进行信息处理时,面临的一个重要问题是如何提高信息输入速度问题,使之与计算机的高速运算能力相匹配。只有解决这个问题,才能发挥计算机高速处理信息的能力。因此,要求有一种简单、易行、廉价、高速的输入技术,条形码技术正是具备这一特征,因而它为世界各国所重视,并获得极大的发展。条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期,是继计算机技术应用和发展应运而生的。随着70年代微处理器的问世,标志着“信息化社会”的到来,它要求人们对社会上各个领域的信息、数据实施正确、有效、及时的采集、传递和管理。因此如何代替人的视觉、人的手工操作、或者在复杂的环境中正确、迅速地获取信息并加以识别,成为人们普遍关心和有关人员精心研究的课题。1.1一维条形码的背景和应用趋势在经济全球化、信息网络化、生活国际化、文化国土化的资讯社会到来之时,起源于40年代、研究于60年代、应用于70年代、普及于80年代的条码与条码技术,及各种应用系统,引起世界流通领域里的大变革正风靡世界。条码作为一种可印制的计算机语言、未来学家称之为“计算机文化”。90年代的国际流通领域将条码誉为商品进入国际计算机市场的“身份证”,使全世界对它刮目相看。印刷在商品外包装上的条码,象一条条经济信息纽带将世界各地的生产制造商、出口商、批发商、零售商和顾客有机地联系在一起。这一条条纽带,一经与EDI系统相联,便形成多项、多元的信息网,各种商品的相关信息犹如投入了一个无形的永不停息的自动导向传送机构,流向世界各地,活跃在世界商品流通领域。随着零售业和消费市场的飞速扩大和发展,也促进了中国条码标签业务的增长。因为越来越多的地方需要用到标签和条码。其实早在上个世纪70年代,条码已经在全球零售业得到了小范围的应用,而现如今,条码和自动识别系统和数据采集技术依然在全球范围发挥着至关重要的作用。实际上,在全球范围内,每天需要运用到条码扫描的次数已经超过上亿次,其应用范围也涉及到各个领域和行业,其中包括物流、仓储,图书馆,银行,pos收银系统,医疗卫生、零售商品、服装、食品服务以及高科技电子产品等等,而目前仍然会在每天都在一些新增加的项目上持续的用到条码应用领域。随着市场的不断发展,我们有足够的信心相信,条码必定会推动我们去体验更优质的生活并能节省我们宝贵的时间。比如在物流业,物流中的货物分类,库位的分配,库位的查询,进出库信息,进出库盘点,产品查询等,如果是用人力去做这些事,不仅浪费时间、人力物力财力等,还常常伴随着非常大的出错率,给大多数商家乃至整个物流业的自身发展都带来了颇多的困扰,所以可以说,没有条码的物流过程将会是多么的杂乱无章,其后果往往不堪设想。而条码技术对物流业的优势也是显而易见的,既能精确管理,又功能实用。对于大部分的现代化仓库管理的需求都能满足。操作方便简单,维护亦不需费心,仓库的管理员经过简单的培训都能快速上岗进行操作。而且还能大大减少居高不下的人为出错率。把种类繁琐的工作瞬间化烦为易,查询货物的时候特别方便,不需再耗费很多的人力去翻查种类繁多的出进货单据,只需在电脑上轻轻一扫,所需的货物型号、经销商、进出货日期,经办人等具体详细资料都即可显示出来,并且可以打印出来。而且这部分数据还可以备份,不会因为死机或者电脑中病毒而担心数据的丢失。不失为人性化管理系统。1.2一维码技术的研究方法鉴于一维码种类很多,这里我们通过对现在应用较为广泛的一种从具体构成进行拆解分析,然后针对相应的编码规则再进行定义和识别,以达到清晰明确的掌握一维码生成与识别技术为目的来研究。1.3本文的研究意义及内容1.3.1研究意义条形码技术主要研究如何用条码标识信息、并将条形码表示的信息转换成计算机可识读的语言,以实现自动输入、自动识读、自动统计。在先进的工业国家里,条码技术作为一种信息处理技术己成为社会化产物,不仅应用于生产过程,而且也应用于管理过程。在我国条码技术起步比较晚,但它的发展非常迅速,己被广泛用于工业、商业、图书出版、医疗卫生等各行各业。随着全球经济贸易体系的形成,将被更广泛用于其它领域。现在,它已变成商品进入国际市场的通行证。但是,由我国目前发展现状来看,主要有两种因素影响条码正常使用。首先条形码在印刷中存在许多质量问题,据1998年4月桂林条码工作会议公布的数字表明,我国商品条码不合格率达20%--30%,使大量名牌产品、优质产品不能进入超级市场(POS商店)。条码印刷质量对其能否正常使用是至关重要的,质量低劣出现扫描误读,不仅造成不必要的经济损失,而且将大大影响了工作效率。其次,运输过程中造成的条码磨损、断裂和脏污是影响条码正确误读的另一个重要的因素[]。目前,市场上普遍采用的条形码识读装置是光电识读器。由一般条码识读器的原理可知:条形码的宽窄和颜色的对比度都会对光的反射产生影响,不可避免的会影响到条码正确识读;此外,由于光电识读器采用线扫描方式,斑点、脏污和纸面断裂也会造成反射光的差异,相应的对条码识读也必然会产生影响。因此,一方面条码标准化工作需要大力加强;另一方面研制有一定的辨识能力的条码阅读装置具有十分重要的现实意义。条码图像辨识在一些特殊情况下将发挥着极大的优势。图像处理识读方法是首先对条码图像进行处理,然后利用统计方法,根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,这样将大大降低条码印刷质量以及条码污染等各种因素的干扰,从而有效地提高条码的识读率[]。1.3.2研究内容及本文的组织安排自从20世纪70年代以来,由于数字计算机技术迅猛发展给图像处理技术提供了技术手段,图像处理技术被广泛应用于国民经济的各个部门,并逐步深入人们生活。到目前为止,通过各种信息检索,有关图像处理技术用于一维条形码识读方面的技术成果及参考资料还没有发现。尽管以前关于条码识读的设备很多,但都是针对光电处理而言的。因此,通过图像处理识别条码是一种新的尝试,而条码图像识读算法的研究正是在该情况下的理论探索,本文所研究的是基于图像处理方式的条码的识别工作,具体工作如下:(1)研究印刷质量对条码的影响,通过辨别解决条码印刷质量不佳的问题。(2)针对条码图像特点,确立相应的图像处理算法,对采集的条码图像进行预处理,该部分的算法包括对条码图像进行定位分割,对图像除噪滤波等以有效提取条码图像信息,为后面实现正确译码做准备。(3)通过计算机仿真的方法加入噪声,生成干扰图像,用此对图像预处理算法进行检索。(4)对预处理的条码的图像进行译码,利用统计方法,归一化理论,根据相似边距来判别字符。2一维条形码的生成2.1一维条形码的简介条码由一组规则排列的条,空及相应的字符组成。条码的信息靠条和空的不同宽度不同位置来传递的,信息量的大小事由条码的宽度和印刷的精度来决定的,条码越宽,包容的条和空越多,传递的信息量也越大,条码印刷的精度越高单位长度内可以容纳的条空也越多,传递的信息量也越大。这种用条空组成的数据编码很容易供机器识读,而且很容易已成二进制和十进制的数。世界上约有225种以上的一维条码,每种一维条码都有自己的一套编码规格,规定每个字母(可能是文字或数字或文数字)是由几个线条(Bar)及几个空白(Space)组成,以及字母的排列。目前使用频率最高的几种一维条码码制有:EAN、UPC、三九码、交插二五码和EAN128码。其中UPC条码主要用于北美地区。EAN条码是国际通用符号体系,它们是一种定长、无含义的条码,主要用于商品标识。EAN128码是由国际物品编码协会和美国统一代码委员会联合开发、共同采用的一种特定的条码符号,它是一种连续型、非定长有含义的高密度代码,用以表示生产日期、批号、数量、规格、保质期、收货地等更多的商品信息。另有一些码制主要是适应于某种特殊场合,如库德巴码用于血库、图书馆、包裹等的跟踪管理;二五码用于包装、运输和国际航空系统为机票进行顺序编号。还有类似三九码的九三码,它的密度较高,可代替三九码。以上所说的都是一维条码,就是常说的传统条码[]。本文主要研究其中的EAN13码。条码可分为一维条码(OneDimensionalBarcode,1D)和二维码(TwoDimensionalCode,2D)两大类,目前在商品上的应用仍以一维条码为主,故一维条码又被称为商品条码,二维码则是另一种渐受重视的条码,其功能较一维条码强,应用范围更加广泛。2.2EAN码简述一维条码主要有EAN和UPC两种,其中EAN码是我国主要采取的编码标准。EAN是欧洲物品条码(EuropeanArticleNumberBarCode)的英文缩写,是以消费资料为使用对象的国际统一商品代码。只要用条形码阅读器扫描该条码,便可以了解该商品的名称、型号、规格、生产厂商、所属国家或地区等丰富信息。EAN通用商品条码是模块组合型条码,模块是组成条码的最基本宽度单位,每个模块的宽度为0.33毫米。在条码符号中,表示数字的每个条码字符均由两个条和两个空组成,它是多值符号码的一种,即在一个字符中有多种宽度的条和空参与编码。条和空分别由1~4个同一宽度的深、浅颜色的模块组成,一个模块的条表示二进制的“1”,一个模块的空表示二进制的“0”,每个条码字符共有7个模块。即一个条码字符条空宽度之和为单位元素的7倍,每个字符含条或空个数各为2,相邻元素如果相同,则从外观上合并为一个条或空,并规定每个字符在外观上包含的条和空的个数必须各为2个,所以EAN码是一种(7,2)码。EAN条码字符包括0~9共10个数字字符,但对应的每个数字字符有三种编码形式,左侧数据符奇排列、左侧数据符偶排列以及右侧数据符偶排列。这样十个数字将有30种编码,数据字符的编码图案也有三十种,至于从这30个数据字符中选哪十个字符要视具体情况而定。在这里所谓的奇或偶是指所含二进制“1”的个数为偶数或奇数。EAN码的全名为欧洲商品条码(EuropeanArticleNumber),源于公元1977年,由欧洲十二个工业国家所共同发展出来的一种条码。目前已成为一种国际性的条码系统。EAN条码系统的管理是由国际商品条码总会(InternationalArticleNumberingAssociation)负责各会员国的国家代表号码之分配与授权,再由各会员国的商品条码专责机构,对其国内的制造商、批发商、零售商等授予厂商代表号码。目前已有30多个国家加盟EAN。EAN码由前缀码、厂商识别码、商品项目代码和校验码组成。前缀码是国际EAN组织标识各会员组织的代码,我国为690、691和692;厂商代码是EAN编码组织在EAN分配的前缀码的基础上分配给厂商的代码;商品项目代码由厂商自行编码;校验码为了校验代码的正确性。在编制商品项目代码时,厂商必须遵守商品编码的基本原则:对同一商品项目的商品必须编制相同的商品项目代码;对不同的商品项目必须编制不同的商品项目代码。保证商品项目与其标识代码一一对应,即一个商品项目只有一个代码,一个代码只标识一个商品项目NOTEREF_Ref6704\f\h1。另外,图书和期刊作为特殊的商品也采用了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.3EAN-13码符号的特征(1)条码符号的整体形状为矩形。由一系列互相平行的条和空组成,四周都留有空白区。(2)条空分别由1-4个同一宽度的的深或浅颜色的模块组成。深色模块用“1”表示,浅色模块用“0”表示。(3)在条码符号中,表示数字的每个条码字符仅由两个条和两个空组成,共7个模块。(4)除了表示数字的条码字符外,还有一些辅助条码字符,用作表示起始、终止的分界符和平分条码符号的中间分隔符。(5)条码符号可设计成既可供固定式扫描器全向扫描,又可用手持扫描设备识读的形式。(6)条码符号的大小可在放大系数的两个极限值所决定的尺寸之间变化,以适应不同印刷工艺的需求及用户对印刷面积的要求。(7)对一个特定大小的条码符号所规定的尺寸称为名义尺寸,放大系数的范围0.8-2.0。(8)供人识别的字符规定采用OCR-B字符。图2.1EAN-13条码符号2.4EAN-13码的格式EAN条形码有两个版本,一个是13位标准条码(EAN-13条码),另一个是8位缩短条码(EAN-8条码)。EAN-13条码由代表13位数字码的条码符号组成,如图2.2所示。图2.2前2位(~,欧共体12国采用)或前3位(~,其他国家采用)数字为国家或地区代码,称为前缀码或前缀号。例如:我国为690,日本为49*,澳大利亚为93*等(其中的“*”表示0~9的任意数字)。前缀后面的5位(~)或4位(~)数字为商品制造商的代码,是由该国编码管理局审查批准并登记注册的。厂商代码后面的5位(~)数字为商品代码或商品项目代码,用以表示具体的商品项目,即具有相同包装和价格的同一种商品。最后一位数字为校验码,用以提高数据的可靠性和校验数据输入的正确性,校验码的数值按国际物品编码协会规定的方法计算。2.5EAN-13条形码的构成EAN-13条形码的构成如图2.3所示。左侧空白起始符左侧数据符6位数字中间分隔符右侧数据符6位数字校验符1位数字终止符右侧空白图2.3典型EAN-13条形码的构成(1)左、右侧空白:没有任何印刷符号,通常是空白,位于条码符号的两侧。用以提示阅读,准备扫描条码符号,共有18个模块组成(其中左侧空白不得少于9个模块宽度),一般左侧空白11个模块,右侧空白7个模块。(2)起始符:条形码符号的第一位字符是起始符,它特殊的条空结构用于识别条形码符号的开始。由3个模块组成。(3)左侧数据符:位于中间分隔符左侧,表示一定信息的条码字符,由42个模块组成。(4)中间分隔符:位于条码中间位置的若干条与空,用以区分左、右侧数据符,由5个模块组成。(5)右侧数据符:位于中间分隔符右侧,表示一定信息的条码字符,由35个模块组成。(6)条码校验符:表示校验码的条码字符,用以校验条码符号的正确与否,由7个模块组成。(7)终止符:条形码符号的最后一位字符是终止符,它特殊的条空结构用于识别条形码符号的结束。由3个模块组成。一个条形码图案是数条黑色和白色线条组成,如图3所示。图2.4条形码图案实例图案分成五个部分,从左至右分别为:起始部分、第一数据部分、中间部分、第二数据部分和结束部分。(1)起始部分:由11条线组成,从左至右分别是8条白线,一条黑线,一条白线和一条黑线。(2)第一数据部分:由42条线组成,是按照一定的算法形成的,包含了左侧数据符(~)这些数字的信息。(3)中间部分:由5条线组成,从左到右依次是白线,黑线,白线,黑线,白线。(4)第二数据部分:由42条线组成,是按照一定的算法形成的,包含了右侧数据符(~)这些数字的信息。(5)结尾部分:由11条线组成,从左至右分别是一条黑线,一条白线和一条黑线,8条白线。2.6EAN-13的编码规则EAN-13的编码是由二进制表示的。它的数据符、起始符、终止符、中间分隔符编码见表2.1。表2.1EAN-13编码字符二进制表示左侧数据符右侧数据符奇性字符(A组)偶性字符(B组)偶性字符(C组)0000110101001111110010100110010110011110011020010011001101111011003011110101000011000010401000110011101101110050110001011100110011106010111100001011010000701110110001001100010080110111000100110010009000101100101111110100起始符101中间分隔符1010终止符101左侧数据符有奇偶性,它的奇偶排列取决于前置符,所谓前置符是国别识别码的第一位,该位以消影的形式隐含在左侧六位字符的奇偶性排列中,这是国际物品编码标准版的突出特点。前置符与左侧六位字符的奇偶排列组合方式的对应关系见表2.2,实际上由表2.2这种编码规定可看出,与这种组合方式是一一对应固定不变的。例如:中国的国别识别码为“690”,因此它的前置符为“6”,左侧数据符的奇偶排列为“OEEEOO”,“E”表示偶字符,“O”表示奇字符。表2.2左侧数据符奇偶排列结合方式前置符左侧数据符奇、偶排列前置符左侧数据符奇、偶排列0OOOOOO5OEEOOE1OOEOEE6OEEEOO2OOEEOE7OEOEOE3OOEEEO8OEOEEO4OEOOEE9OEEOEO2.7EAN-13条形码的校验方法校验码的主要作用是防止条形码标志因印刷质量低劣或包装运输中引起标志破损而造成扫描设备误读信息。作为确保商品条形码识别正确性的必要手段,条形码用户在标志设计完成后,代码的正确与否直接关系到用户的自身利益。对代码的验证,校验码的计算是标志商品质量检验的重要内容之一,应该谨慎严格,需确定代码无误后才可用于产品包装上。下面是EAN-13条形码的校验码验算方法,步骤如下:(1)以未知校验位为第1位,由右至左将各位数据顺序排队(包括校验码);(2)由第2位开始,求出偶数位数据之和,然后将和乘以3,得积;(3)由第3位开始,求出奇数位数据之和,得;(4)将和相加得和;(5)用除以10,求得余数,并以10为模,取余数的补码,即得校验位数据值;(6)比较第1位的数据值与C的大小,若相等,则译码正确,否则进行纠错处理。例如,设EAN-13码中数字码为6901038100578(其中校验码值为8),该条码字符校验过程为:,,

=+=82,除以10的余数为2,故C=10-2=8,译码正确。2.8EAN-13条形码的生成EAN-13条形码的生成条形码的生成方法如下:(1)由根据表3产生和~匹配的字母码,该字母码有6个字母组成,字母限于A和B。表2.3映射表[]0AAAAAA5ABBAAB1AABABB6ABBBAA2AABBAB7ABABAB3AABBBA8ABABBA4ABAABB9ABBABA0AAAAAA5ABBAAB1AABABB6ABBBAA2AABBAB7ABABAB3AABBBA8ABABBA4ABAABB9ABBABA (2)将~和产生的字母码按位进行搭配,来产生一个数字--字母匹配对。并通过查表2.4生成条形码的第一数据部分。表2.4数字--字母映射表数字-字母匹配对二进制信息数字-字母匹配对二进制信息0A00011010B01001110C11100101A00110011B01100111C11001102A00100112B00110112C11011003A01111013B01000013C10000104A01000114B00111014C10111005A01100015B01110015C10011106A01011116B00001016C10100007A01110117B00100017C10001008A01101118B00010018C10010009A00010119B00101119C1110100(3)将~和C进行搭配,并通过查表2.4生成条形码的第二数据部分。(4)按照两部分数据绘制条形码:1对应黑线,0对应白线。例如,假设一个条形码的数据码为:6901038100578。=6,对应的字母码为ABBBAA,~和产生的字母码按位进行搭配结果为9A、0B、1B、0B、3A、8A,查表2.4得第一部分数据的编码分别为0001011、0100111、0110011、0100111、0111101、0110111;~和C进行搭配结果为1C、0C、0C、5C、7C、8C,查表2.4得第二部分数据的编码分别为1100110、1110010、1110010、1001110、1000100、1001000。3条码图像的预处理3.1图像分割理论3.1.1图像分割的的定义图像分割是数字图像处理领域一类非常重要的图像分析技术,在对图像的研究和应用中,根据不同领域的不同需要,在某一领域往往仅对原始图像中的某些部分(目标)感兴趣。这些目标区域一般来说都是具备自身特定的一些诸如灰度、纹理等,图像分割就主要根据图像在各个区域的不同特性,而对其进行边界或区域上的分割,并从中提取出所关心的目标。分别以图像的灰度、边界、形态学特征等为基础总结出图像分割的不同方法,清楚地介绍了各种不同分割方法的原理及数学基础,最后用MATLAB对不同的方法进行仿真实验[]。实验结果表明,不同的方法得到了不同的分割结果,并且没有一种通用的分割方法对所有的图像都能达到理想的效果。多年来人们对图像分割提出了不向的解释和表述,这里借助集合概念,给出图像分割比较正式的定义。令集合代表整个图像区域,对的分割可看做将分成个满足以下五个条件的非空子集(子区域)①;②对对所有的和,,有;③对,有;④对,有;⑤对,是连通的区域。其中是对所有在集合中元素的逻辑谓词,代表空集。条件①指出在对一幅图像的分割结果中全部子区域的总和(并集)应能包括图像中所有像素(就是原图像);条件②指出在分割结果中各个子区域是互不重叠的,或者说在分割结果中一个像素不能同时属于两个区域;条件③指出属于同一个区域中的像素应该具有某些相同特性;条件④指出在分割结果中属于不同区域的像素应该只有一些不同的特性;条件⑤要求分割结果中同一个子区域内的任意两个像素在该子区域内互相连通,或者说分割得到的区域是一个连通组元。3.1.2图像分割算法图像分割因其广泛的应用前景一直受到学术界和工程界的高度重视,围绕图像分割的理论相继被提出。目前已经发展到近千种不同类型的分割算法。按下类方式进行划分:按分割原理分类从图像分割的定义不难看出,图像分割是基于相邻像素值方面的两个性质:不连续性和相似性。区域内部的像素一般具有某种相似性,而区域和边界之间具有某种不连续性。根据区域和边界的特点,图像分割可以简单的分为边缘检测和区域生长两大类,也可以将两者结合使用。从原理上分为三类:1.阈值分割2.边缘检测3区域提取。算法1基于这样假设,每个区域有许多灰度相近的像素构成,物体和背景之剑或其他物体之间有明显的差别,还可以通过取门限的方法将像素分成不同的区域。算法2首先检测出局部的不连续性,再将他们连成边界,这些边界把图像分成不同的区域。算法3是根据区域内部的均匀性而实现的分割,可以分为合并,分裂及分裂合并三种。图像分割在本质上是找出空域像素与满足一定均一性的区域之间对应关系的过程。他得到的目标有两个形式:边缘和区域。边缘和区域。边缘和区域是互相对偶的因素,如果获得了准确的边缘,那么相应的区域也就可以方便地表示。如果得到有效地区域标记,那么边缘也就可以区域标记的基础上予以确定[]。按分割过程中处理的策略分类无论采用什么算法,最终都必须通过计算机的处理才能将图像分割出来。计算机的处理策略有并行和串行之分,结合图像分割的特点与计算机处理的策略将图像分割算法分为:1.并行分割处理2.串行边界分割3并行区域分割4串行区域分割。按相关知识分类在图像处理中,弧度,纹理,彩色,时变,噪声,立体,运动到呢个多维模式向量均是处理图像可以运用的知识。概括起来可以分为以下五类五种类型:1.面向特征的过程2.已统计机理为中心的构造3.针对图像爱你过对象的新号表示4数据融合的多信息源集成5特定领域系统的方法[]。综上,图像分割的算法非常多,但因为预处理的对象差距很大,不能找到一个通用方法。所以具体问题具体分析,选择适当的方法进行分割目标。3.1.3图像分割结果本文采用的是分水岭算法,分水岭算法(watershed)是一种借鉴了形态学理论的分割方法,在该方法中,将一幅图看成一个拓扑形图,其中灰度值对应地形高度值。高灰度值对应着山峰,低灰度值对应着山谷。水总是朝声势底的地方流动,直到一局部低洼处才停下来,这个低洼处被称为吸水盆地。最终所有的水会分聚在不同的吸水盆地,吸水盆地之间的山脊被称为分水岭。水从分水岭流下时,它朝不同的吸水盆地流去的可能性是相等。将这种想法应用于图像分割,就是要在灰度图像中找出不同的吸水盆地和分水岭,由这些不同的吸引盆地和分水岭组成的区域即边我们要分割的目标。分水岭阈值选择算法可以看成是一种自适应的多阈值分割算法,在图像梯度图上进行阈值选择时,经常遇到的问题是如何恰当地选择阈值。阈值若选得太高,则许多边缘会丢失或边缘出现破碎现象;阈值若选得太低,则容易产生虚假边缘,而且边缘变厚导致定位不精确,然而分水岭阈值选择算法则可避免这个缺点。Matlab图像处理工具箱提供的watershed函数可用于实现分水岭算法[]。图3.1图像分割3.2灰度处理及二值化Matlab能够处理的四种类型图像:(1)索引图像索引图像包括图像矩阵与颜色图数组,其中,颜色图是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵包含一个值,这个值就是颜色图中的索引。颜色图为m*3双精度值矩阵,各行分别指定红绿蓝(RGB)单色值。Colormap=[R,G,B],R,G,B为值域为[0,1]的实数值。图像矩阵与颜色图的关系依赖于图像矩阵是双精度型还是uint8(无符号8位整型)类型。如果图像矩阵为双精度类型,第一点的值对应于颜色图的第一行,第二点对应于颜色图的第二行,依次类推。如果图像矩阵是uint8,有一个偏移量,第0点值对应于颜色图的第一行,第一点对应于第二行,依次类推;uint8长用于图形文件格式,它支持256色。(2)灰度图像在MATLAB中,灰度图像是保存在一个矩阵中的,矩阵中的每一个元素代表一个像素点。矩阵可以是双精度类型,其值域为[0,1];也可以为uint8类型,其数据

范围为[0,255]。矩阵的每个元素代表不同的亮度或灰度级。(3)二进制图像二进制图像中,每个点为两离散值中的一个,这两个值代表开或关。二进制图像保存在一个由二维的由0(关)和1(开)组成的矩阵中。从另一个角度讲,二进制图像可以看成为一个仅包括黑与白的灰度图像,也可以看作只有两种颜色的索引图像。二进制图像可以保存为双精度或uint8类型的双精度数组,显然使用uint8类型更节省空间。在图像处理工具箱中,任何一个返回二进制图像的函数都是以uint8类型逻辑数组来返回的。(4)RGB图像与索引图像一样,RGB图像分别用红,绿,蓝三个亮度值为一组,代表每个像素的颜色。与索引图像不同的是,这些亮度值直接存在图像数组中,而不是存放在颜色图中。图像数组为M*N*3,M,N表示图像像素的行列数NOTEREF_Ref8624\f\h7。对图像进行灰度处理,为实现数字的阈值变换提供前提条件,要将256色位图转变为灰度图,首先必须计算每种原色对应的灰度值,灰度与RGB颜色的对应关系Y=0.299R+0.587G+0.114B将调色板转换成灰度调色板。实现的指令:y=rgb2gray(I)。为了对图像进行后续处理,需要对图像进行二值化处理,二值化是图像分割技术中的区域分割技术,它是区域分割中最基本也是最常用的手段,使用阈值将背景与图像分割出来,也称阈值分割。阈值分割的主要算法有两个步骤:1.确定需要的分割阈值2将像素与分割阈值作比较并划分。3.2灰度图像3.3二值化图像3.3图像的加噪仿真图像增强操作主要是针对图像各种噪声而言的,为了说明以上滤波方法的用途,需要模拟数字图像的各种噪声来分析滤波效果。Matlab图像处理工具箱提供imnoise函数,可以用该函数添加各种噪声函数调用格式如下:J=imnoise(I‘type’,parameters)。下表列出imnoise函数能够产生的五种噪声及对应的参数typeparameters说明gaussianm,v均值为m,方差为v的高斯噪声localvarv均值为0,方差为v的高斯白噪声possion无泊松噪声salt&pepper无椒盐噪声specklev均值为0,方差为v的均匀分布随机噪声3.4图像的滤波3.4.1图像的平滑滤波(一)均值滤波器均值滤波器也称线性平滑滤波器,是一种最常用的线性低通滤波器。均值滤波器所有的系数都是整数,为了保持输出图像仍在原来的灰度值范围内,模板与像素领域的乘积和药除以9,以3*3领域为例,假设当前的待处理像素为f(m,n),最简单的一种均值滤波器模板如下:将以上均值滤波器加以修正,可以得到加权平均滤波器,例如:均值滤波器把每个像素都用周围的8个像素来做均值操作。可以平滑图像,速度快,算法简单。但是无法去掉噪声,这能微弱的减弱它,这种处理方式对固有频率附加噪声的处理效果非常好。(二)中值滤波器中值滤波器是一种最常用的非线性平滑滤波器,其滤波原理与均值滤波器方法类似,二者不同是在于中值滤波器的输出像素是由领域像素值是由领域的中间值决定的而不是平均值决定的,中值对极限像素值远不如平均值那么敏感,所以中值滤波器产生的模糊较少,更适合消除孤立噪声点。它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘。加权中值滤波能够改进中值滤波的边缘信号保持效果。但对方向性很强的指纹图像进行滤波处理时,有必要引入方向信息,即利用指纹方向图来指导中值滤波的进行。中值滤波器的优点是:它可以克服线性滤波器(如均值滤波)给图像带来的模糊,做到在有效地清除脉冲噪声的同时,又保持良好的边缘特性,从而获得较满意的复原效果[]。3.4.2形态学滤波数学形态学时一种应用于图像处理和模式识别领域的新方法,它涉及微分几何,几分几何,测度论泛函分析和随机过程等许多数学理论,着重研究图像的几何结构,这种结构表示的可以是宏观也可以是微观的,用具有一定形态的元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的[]。主要有以下函数:(1)dilate函数该函数能够实现二值图像的膨胀操作,有以下形式:BW2=dilate(BW1,SE);BW2=dilate(BW1,SE,…,n)其中:BW2=dilate(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行膨胀操作。输入图像BW1的类型为double或unit8,输出图像BW2的类型为unit8。BW2=dilate(BW1,SE,…,n)表示执行膨胀操作n次。(2)erode函数该函数能够实现二值图像的腐蚀操作,有以下形式:BW2=erode(BW1,SE);BW2=erode(BW1,SE,…,n)其中:BW2=erode(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行腐蚀操作。输入图像BW1的类型为double或unit8,输出图像BW2的类型为unit8。BW2=erode(BW1,SE,…,n)表示执行腐蚀操作n次。(3)bwmorph函数该函数的功能是能实现二值图像形态学运算。它的格式如下:①BW2=bwmorph(BW1,operation);②BW2=bwmorph(BW1,operation,n)其中:对于格式①,bwmorph函数可对二值图像BW1采用指定的形态学运算;对于格式②,bwmorph函数可对二值图像BW1采用指定的形态学运算n次。operation为下列字符串之一:‘clean’:除去孤立的像素(被0包围的1)‘close’:计算二值闭合‘dilate’:用结构元素计算图像膨胀‘erode’:用结构元素计算图像侵蚀(4)imclose函数该函数功能是对灰度图像执行形态学闭运算,即使用同样的结构元素先对图像进行膨胀操作后进行腐蚀操作。调用格式为:IM2=imclose(IM,SE);IM2=imclose(IM,NHOOD)(5)imopen函数该函数功能是对灰度图像执行形态学开运算,即使用同样的结构元素先对图像进行腐蚀操作后进行膨胀操作。调用格式为:IM2=imopen(IM,SE);IM2=imopen(IM,NHOOD)[];根据上述条码图像预处理的理论知识编译相关的Matlab程序,得到如图3.4所示图像预处理结果。3.4图像处理的结果4条码的译码方法4.1译码方案的选择方案一:宽度测量法在图像方式的译码过程中,宽度的测量不再采用传统的脉冲测量法,而是通过记录每个条或空的宽度中所含象素的个数来确定实际的条/空宽度,从而确定整个条码符号所代表的信息。方案二:平均值法对条码符号图像中从起始符到终止符整个宽度进行测量,然后除以95(标准宽度),求出单位模块所含的像素列宽,再分别测量各个条空的实际宽度(此宽度以单位宽度为单位计算)方案三:相似边距离的测量方法这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量值来判别[]。前两种方案对条码图像的要求非常高,因为它们都是测量各元素符号的实际宽度,然后根据查表法得到所代表的码值。如果实际测量值与标准值存在一点偏差,就不能实现正确译码。而第三种方案正是有效的解决了这一问题,因此我们采用相似边距离测量的方法来实现译码功能.下面就简要说明一下这一方法。由原理知,要想辨识一个条码,必须先测量条码条、空宽度C1、C2、C3、C4以及一个字符的宽度T。条码图像经过预处理后得到的是二值图像,该点的颜色信息在阈值变换时已经定义,用255和0表示白和黑色。我们从条码的左边开始取点,若遇到点的灰度值由255变到0即由点的颜色由白色变为黑色,则表示检测到条,记录下该点的坐标值,如果点的颜色由黑色变为白色,则表示检测到空,记录下该点的坐标值。这样经过扫描后得到各个颜色变化点的坐标,然后将相邻两点的横坐标相减得到各个条、空的宽度.由前面所述EAN-13条码的组成知:一个由占3个条空的起始符、3个条空的终止符、24个条空的左侧数据符、5个条空的中间分隔符、20个条空的右侧数据符、4个条空的校验符组成。所以,整个条码字符占的条空总数为59,若条码字符没有发生几何畸变,一行扫描应记录的坐标数为60个;而对于有几何畸变的条码图像,例如条码污染、条码断裂、条码瑕疵等,该扫描行的坐标数将肯定大于60或小于60,这时将不记录该扫描行,对此行不处理。这样利用图像统计方法,逐行扫描图像,获取条码图像信息,比起只由一行获取信息的方式可靠性更高,这样即使个别噪声点存在并不影响图像信息的获取[]。4.2相似边距法介绍条码字符的判别—相似边距法:理论上条形码字符的逻辑值应该由条形码的实际宽度来判断,而相似边距离方法的设计思想通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由元素宽度的实际值来判别。此种方法的优点是:即使条码质量存在缺欠,使得实际测量值和条码应该具有的理论值有较大的偏差,仍然可以根据相似边的距离能够正确解释。什么是相似边距离?图3-4给出了相似边之间的距离,则图中t1,t2,t3,t4,t5,t6,t7(归一化值)为条形码相似边距离。本文采用归一化理论,用一种相似边距离归一化的方法对字符进行判别[]。该方法即使条码印刷质量有偏差,仍能正确对条码进行识读.图4.1相似边之间的距离图4.2条码字符宽度示图首先见图4-2各种宽度的定义:C1,C2,C3,C4表示每个字符中四个相邻条、空的宽度,T表示一个字符的宽度,T1,T2为相似边之间的距离,则用下列值ATi(i=1,2)来定义TI与T2的归一化值。以下方法用于Ti序列值的求取:若Ti/T≦2.5/7,那么ATi=2若2.5/7≦Ti/T≦3.5/7,那么ATi=3若3.5/7≦Ti/T≦4.5/7,那么ATi=4若4.5/7≦Ti/T,那么ATi=5表4.1列出了正向译码时,EAN-13条码字符值与归一化值(Tl,T2)的对应关系。表4.1EAN-13条码字符值与归一化值(Tl,T2)的对应关系注:表4-1中“E”表示偶字符,“O”表示奇字符EAN-13码字符编码与归一化值(T1.T2)的对应关系见表4.2。表4.2EAN-13字符编码与归一化值表4.2中可以看到条形码编码和归一化值在多数情况下呈现一一对应的关系,只要确定了归一化值就能确定字符值,但是有四种情况例外,在表3.3中知,左侧奇字符和右侧偶字符1,7归一化值均为44,左侧奇字符和右侧偶字符2,8归一化值均为33,左侧偶字符1,7归一化值均为34,左侧偶字符2,8归一化值均为43。这两种情况可以在判别字符时根据C1,C2,C3,C4进一步判别,根据它们条空宽度特点进行判别。有1728字符标准条空宽度值的特点知:对于左侧奇字符、右侧偶字符1和7可通过C3与C4作比较,C3>C4者为字符1,反之为7;对于左侧奇字符、右侧偶字符2和8可通过C2与C3作比较,C2>C3者为字符8,反之为2;对于左侧偶字符1和7可通过C1与C2作比较,C1>C2者为字符7,反之为1;对于左侧偶字符2和8可通过C2与C3作比较,C2>C3者为字符2,反之为8;由上述条码字符识别理论可总结出相似边距离测量法的一般步骤。由条码宽度的计算我们得到了各个条、空的宽度(像素),并通过计算n=T/7,T=C1+C2+C3+C4得到单位模块的宽度(像素)。各个条空的宽度除以单位模块的宽度就是归一化的条空宽度。而为了方便译码,我们除去起始符3个条空,中间分隔符5个条空,终止符3个条空,对剩下的48个条空每4个条空为一组进行译码。计算相似边之间的距离t1、t2从而得到归一化(T1,T2)。最后查表可得条码字符。为检验译码的正确性利用校验位对码字进行校验。流程图如图4.3。图4.3判别字符流程图4.3条码字符的判别如图4.4所示是EAN-13条码的一个字符。条、空宽度的定义如下:图中C1、C2、C3、C4表示每个字符中四个相邻条、空的宽度,T表示一个字符的宽度。图4.4EAN-13条码宽度的定义设一个字符中单位模块的宽度为n,则单位模块的宽度:n=T/7T=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。5一维条形码的识别由上一章可知,要辨别一个条码,必须知道条码的码,空间隔C1,C2,C3,C4和一个字符的宽度T.图像经过分割,灰度,二值化处理后得到就是关于条码的二值图像,把图像看作一个二维矩阵,矩阵中的点就是0和255表示白与黑。我们进行列扫描,对于每一列如果有大于大于二分之一行是0的话,判定这一列是0。最后我们得到的是一个一维矩阵,从而由这个一维矩阵,来做字符识别。我们检测这个一维矩阵,若遇到矩阵由0变到255,或是由255变到0,的话,记录下坐标值。然后由坐标值相减得到条空的宽度。由前面的EAN-13条码组成可知:一个条码由3个条空起始符,3个条空终止符,24个条空左侧数据区,5个条空的中间分隔符,20个右侧数据符,4个条空的校验码,所以扫描的坐标应该为60个,整个条空总数为59[]。字符判别流程图:扫描识别的流程图如下:经处理后的二值化图像扫描一列,是否有大于1/2行是0扫描一列,是否有大于1/2行是0这列为0这列为0这列为1得到一个一维矩阵 得到一个一维矩阵扫描突变点坐标,并记录扫描突变点坐标,并记录坐标相减,得到条空宽度C1坐标相减,得到条空宽度C1……C59结束结束图5.1条码扫描的流程图根据上述译码理论,采用相似边距离测量方法对预处理后的条码图像(二值图像)进行译码,得到如下所示译码结果。分析:通过多次对不同EAN-13条码的识读,证明该条码检测系统速度快、效率高、而误码率却很低,即使在图像预处理上达不到理想的效果,条码仍能正确识读。这是因为我们选择了相似边距离测量的方法。可见,影响条码识别效果的不仅仅是条码图像预处理效果,译码方法更是不可忽视的重要原因。相似边距离测量方法有着其它译码方法无可比拟的优势,它不是根据条码条空宽度的实际值来判别,而是通过所谓的相似边距离来判别。因此,即使条码质量存在欠缺,仍然能够根据相似边距离正确解释条码,有着很强的对实际情况的适应性。条码识别系统的测试和实验结果分析:我所做的设计包括图像处理,条码识别,图像处理是非常重要的一个环节,在这之中我运用到很多的图像分割的方法,主要用到阈值分割,高低帽图像增强分割,以及图像的腐蚀,膨胀等分割方法,每种分割方法都有其特点,对不同程度污染的条码的分割的效果不一样,其次是条码识别的方法,利用的矩阵的列扫描扫出正确的条空,这种程序通俗易懂,实现起来也比较简单,最后,条码译码部分主要是利用相似边距法来读取条空的编码,并译码。利用这个思路,用matlab编程能够实现对轻度污染的条码进行识别。下面图片为识别的处理的结果。图5.2图像分割图5.3条码的译码结果6结论在对条码图像作相应的图像预处理之后,对得到的二值条码图像利用上述条码识别算法在Matlab软件环境下编写了相应的软件程序。通过多次实验,识别效果很好,误码率低,大大提高了条码的识别率。相信对其它一维条码图像识别具有一定的理论及实践参考价值。本次设计在译码方法上进行了比较选择,确定了相似边距离的测量方法的优越性。这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量来判别。对条码图像的要求相对其它方法而言较低,具有较高的识别率,因而能够很好的满足实际需要。同时用软件实现条码的识别比硬件具有更好的抗噪声性能,且速度快,效率高。尽管如此,设计中也遇到了很多的问题有待进一步的解决和探索研究。图像处理是条码识别的重要基础。本设计只是对质量较好的条码图像进行一般性处理,但实际中的图像并都不是这么理想,例如条码污染、条码断裂、条码瑕疵等。这些需要进行特殊的图像处理过程才能达到译码的目的。如果条码被污染了我们要进行修复,条码发生几何畸变我们要进行图像矫正等等。只有考虑到更多的方面才能提高系统的性能和适应性,对一定质量范围内的条码图像都能进行有效的处理。其次,对软件程序的精简也是我所追求的,希望通过最精练的语句实现所需要的功能。程序中很多的语句还有进一步改进的空间,这样既能精简语句,使语句简明易懂,也能提高程序整体的执行速度,提高条码识别效率。参考文献[1]戴宏民.条形码技术及应用[M],重庆:重庆大学出版社,1991.[2]李金哲、朱俊英.条码自动识别技术[M],北京:国防工业出版社,1991.[3]费振原.条码技术及应用,上海:上海科学技术文献出版社,1992.9.[4]张兆礼.现代图像处理技术及Matlab实现[M],北京:人民邮电出版社,2001.[5]董长虹.Matlab图像处理与应用,北京:国防工业出版社,2004.1.

[6]朱虹.数字图像处理基础[M],北京:科学出版社,2005.[7]徐飞.MATLAB应用图像处理[M],西安:西安电子科技大学出版社,2002.[8]冈萨雷斯.数字图像处理[M],北京:电子工业出版社,2003.[9]徐杰.数字图像处理武汉:华中科技大学出版社,2009.8.

[10]朱秀昌、刘峰、胡栋.数字图像处理与图像通信[M],北京:北京邮电大学出版社,2002.[11]徐建华.图像处理与分析[M],天津:天津科学技术出版社,1989.[12]何东健.数字图像处理.西安:西安电子科技大学出版社,2003.7.

[13]刘志海.条形码技术及程序设计[M],重庆:重庆大学出版社,1991.[14]王雅静.基于图像处理的EAN-13条码识别算法[J],山东理工大学学报(自然科学版),2005,第19卷(第4期):3-5.[15]赵素霞.基于数字图像处理方式的EAN-13条码识读算法研究[C],山东:山东大学,2005,48-60.附录A(1)线性变换法clc;clearall;I=imread('19.jpg');A=rgb2gray(I);colormap;imshow(A);%设置图像倒数参数j=imadjust(A,[01],[10],1.5);figure;subimage(j)(2)灰度图像的非线性变换(之对数)I=imread('19.jpg');colormapimshow(I)J=double(I);J=45*log(J+1);I=uint8(J);figure,subimage(J)(3)灰度图像变索引图像A=imread('1.jpg');figureB=rgb2gray(A);subplot(1,2,1),imshow(B)title('灰度图像')[X,map]=gray2ind(B,63);subplot(1,2,2),imshow(X,map)title('灰度变索引图像')(4)直方图均衡I=imread('19.jpg');B=rgb2gray(I);imshow(B,[40255]);figure,imhist(B)title('直方图')J=imadjust(B,[0.150.9],[01]);figure,imhist(B,64)title('均衡直方图')(5)滤波I=imread('19.jpg');figure,B=rgb2gray(I);C=imnoise(B,'salt&pepper',0.02);D=imfilter(B,fspecial('average',3));E=medfilt2(B);subplot(1,3,2)imshow(D)title('均值滤波')subplot(1,3,3)imshow(D)title('中值滤波')subplot(1,3,1)imshow(C)title('加入椒盐噪声图像')(6)锐化处理I=imread('19.jpg');A=rgb2gray(I);figure,subplot(2,3,1),imshow(A);title('原图');hs=fspecial('sobel');S=imfilter(A,hs);hp=fspecial('prewitt');P=imfilter(A,hs);A=double(A);%双精度型H=[010,1-41,010];%拉普拉斯算子J=conv2(A,H,'same');K=A-J;subplot(2,3,2),imshow(K);title('拉普拉斯锐化图像');B=edge(A,'roberts',0.1);subplot(2,3,3),imshow(B);title('罗伯特锐化图像');subplot(2,3,4),imshow(S);title('sobel算子锐化图像');subplot(2,3,5),imshow(P);title('prewitt算子锐化图像');(7)阈值分割A=imread('19.jpg');figuresubplot(1,4,1),imshow(A);title('原图像')B=im2bw(A,91/255);subplot(1,4,2),imshow(B);title('阈值91的图像')C=im2bw(A,71/255);subplot(1,4,3),imshow(C);title('阈值71的图像')D=im2bw(A,140/255);subplot(1,4,4),imshow(D);title('阈值140的图像')(8)边缘检测I=imread('19.jpg');A=rgb2gray(I);figuresubplot(1,4,1),imshow(A);title('原图像')B=edge(A,'sobel',0.1);%edge边缘检测函数subplot(1,4,2),imshow(B);title('sobel算子检测')C=edge(A,'roberts',0.1);%0.1为门限subplot(1,4,3),imshow(C);title('roberts算子检测')D=edge(A,'prewitt',0.1);subplot(1,4,4),imshow(D);title('prewitt算子检测')附录Bclear;clc;closeall;I=imread('w7.bmp');%IMG_left_0comexple.bmp/b10_1w2.bmpI1=rgb2gray(I);figure,imshow(I1);title('originalimg');%%%%(1)边缘检测%%%%%%为了读取边缘区域,prewitt算法比roberts算法得到的边界更为清楚%I2=edge(I1,'sobel');经过比较sobel,prewitt算法,在防止噪声方面sobel比较好%但是sobel的过滤的信息比较多,故采用prewitts算法I2=edge(I1,'prewitt',0.04);%roberts%I2=edge(I1,'sobel');%figure,imshow(I2),title('prewitt边缘检测');[height,width]=size(I2);%[stlst,endlst,stlen,endlen]=ImageEdgePoint(I2,height,width);[stlst,endlst,len,Vpixel,Hpixel]=ImageEdgePoint(I2,height,width);%%%%过滤掉水平投影点数小于4的行,因为条形码区域水平投影点数一般不会小于4个%%%fork=1:heightif(Vpixel(k,1)<10)%鉴于条形码边界横向的点数相对稳定,故大胆剪切stlst(k,1)=0;endlst(k,1)=0;Vpixel(k,1)=0;endend%%%%过滤掉垂直投影点数小于6的列,因为条形码区域垂直投影点数一般不会小于6个%%%fork=1:widthif(Hpixel(k,1)<4)endlst(k,1)=0;stlst(k,1)=0;Hpixel(k,1)=0;endend%%(2)剪切条形码区域%%%threthold=10;%去步长%[sslope,spy,sny,slpara]=point2line(threthold,stlst,height,stlen);%起始边的属性%[eslope,epy,eny,elpara]=point2line(threthold,endlst,height,endlen);%终止边的属性[sslope,skeyY,slpara]=point2line(threthold,stlst,height,len(1));%起始边的属性[eslope,ekeyY,elpara]=point2line(threthold,endlst,height,len(2));%终止边的属性stcount=skeyY(4);%skeyY(3);endcount=ekeyY(4);%ekeyY(3);spx=[stlst(skeyY(1))stlst(skeyY(2))];%斜率为正的起始点1、起始点2,spx2=startY(spy(2));epx=[endlst(ekeyY(1))endlst(ekeyY(2))];%斜率为正的终止点1、终止点2,epx2=endY(epy(2));%snx=[stlst(sny(1))stlst(sny(2))];%enx=[endlst(eny(1))endlst(eny(2))];%enx2=endY(eny(2));%%%%%%%%%%条形码边界存在边界,但是斜率并不是完全一致%%%%%%%%%%sy=slpara(1)*sx+slpara(2);y=Sk*x+Sa;%ssy=(-1/slpara(1))*(ssx-spx(1))+spy(1);%在(spx1,spy1)处直线sy的法线%ey=elpara(1)*ex+elpara(2);y=Ek*x+Ea;%与法线求交点%if(sslope~=eslope)if((stcount-endcount)>0)K=sslope(1);Sk=slpara(1);Sa=slpara(2);Ek=elpara(1);Ea=elpara(2);y1=skeyY(1);x1=spx(1);y2=skeyY(2);x2=spx(2);r_y1=ekeyY(1);r_x1=epx(1);%已知点r_y2=ekeyY(2);r_x2=epx(2);elseK=eslope(1);Sk=elpara(1);Sa=elpara(2);Ek=slpara(1);Ea=slpara(2);y1=ekeyY(1);x1=epx(1);y2=ekeyY(2);x2=epx(2);r_y1=skeyY(1);r_x1=spx(1);%已知点r_y2=skeyY(2);r_x2=spx(2);endif(K==0)x1_x=epx(1);x2_x=spx(1);y1_y=y1;y2_y=y2;elsex1_x=(y1*Sk-Ea*Sk+x1)/(1+Ek*Sk);%交点y1_y=Ek*x1_x+Ea;%604x2_x=(y2*Sk-Ea*Sk+x2)/(1+Ek*Sk);y2_y=Ek*x2_x+Ea;%649endup=min([y1y1_yy2y2_yr_y1r_y2]);%由于根据拟合的直线不是很标准,故计算出来的up值有可能为负值bottom=max([y1y1_yy2y2_y

温馨提示

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

评论

0/150

提交评论