条码检测系统—基于MATLAB的一维条码识别毕业论文

上传人:QQ-1****6396 文档编号:6294865 上传时间:2020-02-21 格式:DOC 页数:45 大小:636.49KB
返回 下载 相关 举报
条码检测系统—基于MATLAB的一维条码识别毕业论文_第1页
第1页 / 共45页
条码检测系统—基于MATLAB的一维条码识别毕业论文_第2页
第2页 / 共45页
条码检测系统—基于MATLAB的一维条码识别毕业论文_第3页
第3页 / 共45页
点击查看更多>>
资源描述
毕业设计(论文)题目:条码检测系统基于MATLAB的一维条码识别 条码检测系统基于MATLAB的一维条码识别摘 要:条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。由我国目前发展现状来看,条码的正常使用受到条形码印刷质量和商品运输过程的影响,并且传统的条码识读方式是采用光电识读器,条码图像对光的不同反射效果也必然会对条码的识读产生影响,而一般条码在搬运过程中条码会不可避免的破损,所以对质量较差的条码的条码的识别尤为重要。不同的条码有着不同的识读过程。本设计研究一种基于图像处理方式的识读方法,通过计算机辨识来解决条码印刷质量不佳和条码变形等问题。该方法是采用摄像头采集条码图像,通过照相采集条码图像的方法避免了线性扫描器逐行扫描所产生的问题,同时简化了扫描条码图像的操作。然后通过一定的数字图像处理算法处理进行译码。译码算法主要分为两部分:第一部分首先对采集的条码图像进行预处理,图像的预处理包括图像分割,图像滤波等,良好的图像处理将对后面实现正确译码有重大贡献;第二部分就是对预处理后的条码图像进行译码,我们根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,得到条码所表示的文本信息。与用条码识读器硬件进行译码相比,软件译码具有更大的灵活性和较低的成本,所以具有很大的市场空间。借助于matlab软件的功能我们完成这次译码工作。 关键词:图像处理 图像分割 条形码识别 EAN-13 相似边距识别 图像滤波MatlabThe System Of Bar-Code Examination 1D Bar-Code recognition based on MATLABAbstract: 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. The general course of the removal barcode bar code will inevitably damage, so poor quality bar code bar code identification is particularly important. 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, image filters, Matlab 42目 录第1章 引言.01 1.1 条码技术概述.01 1.2 Matlab应用图像处理.02 1.3本文的研究意义及内容.03 1.3.1 研究意义.03 1.3.2 研究内容及本文的组织安排.04第2章 一维条码技术.05 2.1 一维条码的简介.05 2.2 一维条码符号的结构.05 2.3 EAN码简述.06 2.4 EAN-13码符号的特征.07 2.4.1 EAN-13码字符集.08 2.4.2 EAN-13码符号结构.09 2.5 EAN-13码的校验纠错.11第3章 条码图像的预处理. .12 3.1 图像分割理论.12 3.1.1 图像分割的定义.12 3.1.2 图像分割的算法类.13 3.1.3 图像分割结果.14 3.2 图像灰度及二值化.15 3.3 图像加噪仿真.16 3.3 图像的滤波. .16 3.3.1 图像的平滑滤波.16 3.3.2 形态学滤波.17第4章 条码的译码方法.20 4.1 译码方案的选择.20 4.2 相似边距法介绍.21 4.3. 条码字符的判别.22第5章 条码译码的基本原理.25 5.1 EAN_13的译码原理分析.255.2译码结果分析.26 第6章 结论.28参考文献.30附录.36第1章 引 言1.1 条码技术概述 在信息时代的今天,计算机的应用己和我们的生活紧密地联系在一起。计算机快速准确的信息处理速度,给工农业生产、经营管理以及人们的日常生活等方面都带来了巨大的效益。可以说计算机的出现、普及和应用加速了社会发展进程。然而,在运用计算机进行信息处理时,面临的一个重要问题是如何提高信息输入速度问题,使之与计算机的高速运算能力相匹配。只有解决这个问题,才能发挥计算机高速处理信息的能力。因此,要求有一种简单、易行、廉价、高速的输入技术,条形码技术正是具备这一特征,因而它为世界各国所重视,并获得极大的发展。条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期,是继计算机技术应用和发展应运而生的。随着70年代微处理器的问世,标志着“信息化社会”的到来,它要求人们对社会上各个领域的信息、数据实施正确、有效、及时的采集、传递和管理。因此如何代替人的视觉、人的手工操作、或者在复杂的环境中正确、迅速地获取信息并加以识别,成为人们普遍关心和有关人员精心研究的课题。通俗的说条形码是指在浅色衬底上印有深色矩形的线条(也称条码)排列而成的编码,其码条和空白条的数量和宽度按一定的规则(标准)排列。条形码是由一组规则排列的条、空、相应的数字组成。这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。这些条和空可以有各种不同的组合方法,构成不同的图形符号,即各种符号体系,适用于不同的应用场合。条码系统是由条码符号设计、制作及扫描阅读组成的自动识别系统。微电子技术和激光技术的发展使得条码识别系统越来越受到人们的关注。条码是迄今为止最经济、实用的一种自动识别技术。条码技术具有以下几个方面的优点:1、可靠准确。有资料可查键盘输入平均每300个字符一个错误,而条码输入平均每15000个字符一个错误。如果加上校验位出错率是千万分之一。2、数据输入速度快。 与键盘输入相比较,用条形码扫描读入电脑的速度大约是键盘输入的100倍,并且能够实现“即时数据输入”,一个每分钟打90个字的打字员1.6秒可输入12个字符或字符串,而使用条码,做同样的工作只需0.3秒,速度提高了5倍。 3、经济便宜。与其它自动化识别技术相比较,推广应用条码技术,所需费用较低。4、灵活、实用。条码符号作为一种识别手段可以单独使用,也可以和有关设备组成识别系统实现自动化识别,还可和其他控制设备联系起来实现整个系统的自动化管理。同时,在没有自动识别设备时,也可实现手工键盘输入。 5、自由度大。识别装置与条码标签相对位置的自由度要比OCR大得多。条码通常只在一维方向上表达信息,而同一条码上所表示的信息完全相同并且连续,这样即使是标签有部分缺欠,仍可以从正常部分输入正确的信息。 6、设备简单。条码符号识别设备的结构简单,操作容易,无需专门训练。 7、易于制作,可印刷,称作为“可印刷的计算机语言”。条码标签易于制作,对印刷技术设备和材料无特殊要求。 证因为条码具有上述迅速,准确,廉价,使用方便,适应性强等优点,克服了其他输入方法的不足,所以他在各个行业中的发展可谓突飞猛进,最初应用于物流管理,最引人注目的是pos系统,它使商店的定货管理,盘点,库存管理,库存查询,验货管理,收款等各项工作得到极大地提高。目前已经应用到计算机自动化的各个领域,包括质量跟踪,仓储管理,物资管理,票证管理,人流物流管理,图书文献检索,医疗卫生,邮电系统,安全检查等领域。1.2 Matlab应用图像处理 Matlab图像处理工具是由Math Works公司推出的用于数值计算的有力工具,它具有相当强大的矩阵运算和操作功能,力求人们摆脱繁杂的程序代码。Matlab图像处理工具箱提供了丰富的图像处理函数,灵活运用这些函数可以完成大部分图像处理工作。可以分为图像处理概述、图像显示、图像运算、图像滤波、和二值形态学等方面。应用部分包括图像空间变换、图像增强、图像复原、图像编码、图像分析等。图像处理工具包是由一系列支持图像处理操作的函数组成的。所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等) 、图像分析和统计、二值图像操作等。下面就MATLAB 在图像处理中各方面的应用分别进行介绍。主要包括下面几方面:(1) 图像文件格式的读写和显示。MATLAB 提供了图像文件读入函数 imread(),用来读取如:bmp,tif、tiff、pcx 、jpg 、gpeg 、hdf、xwd等格式图像文;图像写出函数 imwrite() ,还有图像显示函数 image()、imshow()等等。(2) 图像处理的基本运算。MATLAB 提供了图像的和、差等线性运算 ,以及卷积、相关、滤波等非线性算。例如,conv2(I,J)实现了I,J两幅图像的卷积。(3) 图像变换。MATLAB 提供了一维和二维离散傅立叶变换(DFT) 、快速傅立叶变换(FFT) 、离散余弦变换 (DCT) 及其反变换函数,以及连续小波变换(CWT)、离散小波变换(DWT)及其反变换。(4) 图像的分析和增强。针对图像的统计计算MATLAB 提供了校正、直方图均衡、中值滤波、对比度调整、自适应滤波等对图像进行的处理。(5) 图像的数学形态学处理。针对二值图像,MATLAB 提供了数学形态学运算函数;蚀(Erode)、膨胀(Dilate)算子,以及在此基础上的开 (Open)、闭(Close)算子、厚化 (Thicken) 、薄化 (Thin) 算子等丰富的数学形态学运算。1.3 本文的研究意义及内容1.3.1 研究意义条形码技术主要研究如何用条码标识信息、并将条形码表示的信息转换成计算机可识读的语言,以实现自动输入、自动识读、自动统计.在先进的工业国家里,条码技术作为一种信息处理技术己成为社会化产物,不仅应用于生产过程,而且也应用于管理过程。在我国条码技术起步比较晚,但它的发展非常迅速,己被广泛用于工业、商业、图书出版、医疗卫生等各行各业。随着全球经济贸易体系的形成,将被更广泛用于其它领域。现在,它已变成商品进入国际市场的通行证.但是,由我国目前发展现状来看,主要有两种因素影响条码正常使用。首先条形码在印刷中存在许多质量问题,据1998年4月桂林条码工作会议公布的数字表明,我国商品条码不合格率达20%-30%,使大量名牌产品、优质产品不能进入超级市场(POS商店)。条码印刷质量对其能否正常使用是至关重要的,质量低劣出现扫描误读,不仅造成不必要的经济损失,而且将大大影响了工作效率。其次,运输过程中造成的条码磨损、断裂和脏污是影响条码正确误读的另一个重要的因素。目前,市场上普遍采用的条形码识读装置是光电识读器。由一般条码识读器的原理可知:条形码的宽窄和颜色的对比度都会对光的反射产生影响,不可避免的会影响到条码正确识读;此外,由于光电识读器采用线扫描方式,斑点、脏污和纸面断裂也会造成反射光的差异,相应的对条码识读也必然会产生影响。因此,一方面条码标准化工作需要大力加强;另一方面研制有一定的辨识能力的条码阅读装置具有十分重要的现实意义。条码图像辨识在一些特殊情况下将发挥着极大的优势。图像处理识读方法是首先对条码图像进行处理,然后利用统计方法,根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,这样将大大降低条码印刷质量以及条码污染等各种因素的干扰,从而有效地提高条码的识读率。1.3.2 研究内容及本文的组织安排自从20世纪70年代以来,由于数字计算机技术迅猛发展给图像处理技术提供了技术手段,图像处理技术被广泛应用于国民经济的各个部门,并逐步深入人们生活。到目前为止,通过各种信息检索,有关图像处理技术用于一维条形码识读方面的技术成果及参考资料还没有发现。尽管以前关于条码识读的设备很多,但都是针对光电处理而言的。因此,通过图像处理识别条码是一种新的尝试,而条码图像识读算法的研究正是在该情况下的理论探索,本文所研究的是基于图像处理方式的条码的识别工作,具体工作如下: 1 研究印刷质量对条码的影响,通过辨别解决条码印刷质量不佳的问题。 2 针对条码图像特点,确立相应的图像处理算法,对采集的条码图像进行预处理,该部分的算法包括对条码图像进行定位 分割,对图像除噪滤波等以有效提取条码图像信息,为后面实现正确译码做准备。 3 通过计算机仿真的方法加入噪声,生成干扰图像,用此对图像预处理算法进行检索。 4 对预处理的条码的图像进行译码,利用统计方法,归一化理论,根据相似边距来判别字符。第二章 一维条码技术2.1 一维条码简介条码由一组规则排列的条,空及相应的字符组成。条码的信息靠条和空的不同宽度不同位置来传递的,信息量的大小事由条码的宽度和印刷的精度来决定的,条码越宽,包容的条和空越多,传递的信息量也越大,条码印刷的精度越高单位长度内可以容纳的条空也越多,传递的信息量也越大。这种用条空组成的数据编码很容易供机器识读,而且很容易已成二进制和十进制的数。世界上约有225种以上的一维条码,每种一维条码都有自己的一套编码规格,规定每个字母(可能是文字或数字或文数字)是由几个线条(Bar)及几个空白(Space)组成,以及字母的排列。目前使用频率最高的几种一维条码码制有:EAN、UPC、三九码、交插二五码和EAN128码。其中UPC条码主要用于北美地区。EAN条码是国际通用符号体系,它们是一种定长、无含义的条码,主要用于商品标识。EAN128码是由国际物品编码协会和美国统一代码委员会联合开发、共同采用的一种特定的条码符号,它是一种连续型、非定长有含义的高密度代码,用以表示生产日期、批号、数量、规格、保质期、收货地等更多的商品信息。另有一些码制主要是适应于某种特殊场合,如库德巴码用于血库、图书馆、包裹等的跟踪管理;二五码用于包装、运输和国际航空系统为机票进行顺序编号。还有类似三九码的九三码,它的密度较高,可代替三九码。以上所说的都是一维条码,就是常说的传统条码。本文主要研究其中的EAN13码。条码可分为一维条码 (One Dimensional Barcode, 1D) 和二维码(Two Dimensional Code, 2D)两大类,目前在商品上的应用仍以一维条码为主,故一维条码又被称为商品条码,二维码则是另一种渐受重视的条码,其功能较一维条码强,应用范围更加广泛。2.2 一维条码符号的结构通常任何一个完整的条码是由两侧空白区、起始符、数据字符、校验符、终止符组成,以一维条码而言,其排列方式通常如表2-1所示:表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分配的前缀码的基础上分配给厂商的代码;商品项目代码由厂商自行编码;校验码为了校验代码的正确性。在编制商品项目代码时,厂商必须遵守商品编码的基本原则:对同一商品项目的商品必须编制相同的商品项目代码;对不同的商品项目必须编制不同的商品项目代码。保证商品项目与其标识代码一一对应,即一个商品项目只有一个代码,一个代码只标识一个商品项目。另外,图书和期刊作为特殊的商品也采用了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)条码符号可设计成既可供固定式扫描器全向扫描,又可用手持扫描设备识读的形式。(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子集的条码字符从左到右,以一个深色模块开始,以一个浅色模块结束。图2-3 通用商品条码字符集示意图2.4.2 EAN-13码符号结构EAN-13条码符号是由左侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符及右侧空白区构成,如图2-4所示。 图2-4 EAN-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。表2-3 左侧数据符的奇偶排列规则注:表中A为A子集,B为B子集纵向值0-9:代表前置码数值;横向值12-7:代表代码位置序号,以“6901234567892”为例,其条码的左侧数据符的排列形式是由前置码6决定的。从表中可以知道排列规律是ABBBAA。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。第三章 条码图像的预处理3.1 图像分割理论 3.1.1 图像分割的的定义图像分割是数字图像处理领域一类非常重要的图像分析技术,在对图像的研究和应用中,根据不同领域的不同需要,在某一领域往往仅对原始图像中的某些部分(目标)感兴趣。这些目标区域一般来说都是具备自身特定的一些诸如灰度、纹理等,图像分割就主要根据图像在各个区域的不同特性,而对其进行边界或区域上的分割,并从中提取出所关心的目标。分别以图像的灰度、边界、形态学特征等为基础总结出图像分割的不同方法,清楚地介绍了各种不同分割方法的原理及数学基础,最后用MATLAB对不同的方法进行仿真实验。实验结果表明,不同的方法得到了不同的分割结果,并且没有一种通用的分割方法对所有的图像都能达到理想的效果。多年来人们对图像分割提出了不向的解释和表述,这里借助集合概念,给出图像分割比较正式的定义。令集合代表整个图像区域,对的分割可看做将分成个满足以下五个条件的非空子集(子区域);对对所有的和,有;对,有;对,有;对,是连通的区域。其中是对所有在集合中元素的逻辑谓词,代表空集。条件指出在对一幅图像的分割结果中全部子区域的总和(并集)应能包括图像中所有像素(就是原图像);条件指出在分割结果中各个子区域是互不重叠的,或者说在分割结果中一个像素不能同时属于两个区域;条件指出属于同一个区域中的像素应该具有某些相同特性;条件指出在分割结果中属于不同区域的像素应该只有一些不同的特性;条件要求分割结果中同一个子区域内的任意两个像素在该子区域内互相连通,或者说分割得到的区域是一个连通组元。3.1.2图像分割算法图像分割因其广泛的应用前景一直受到学术界和工程界的高度重视,围绕图像分割的理论相继被提出。目前已经发展到近千种不同类型的分割算法。按下类方式进行划分:(1) 按分割原理分类 从图像分割的定义不难看出,图像分割是基于相邻像素值方面的两个性质:不连续性和相似性。区域内部的像素一般具有某种相似性,而区域和边界之间具有某种不连续性。根据区域和边界的特点,图像分割可以简单的分为边缘检测和区域生长两大类,也可以将两者结合使用。从原理上分为三类:1.阈值分割2.边缘检测3区域提取。 算法1基于这样假设,每个区域有许多灰度相近的像素构成,物体和背景之剑或其他物体之间有明显的差别,还可以通过取门限的方法将像素分成不同的区域。算法2首先检测出局部的不连续性,再将他们连成边界,这些边界把图像分成不同的区域。算法3是根据区域内部的均匀性而实现的分割,可以分为合并,分裂及分裂合并三种。图像分割在本质上是找出空域像素与满足一定均一性的区域之间对应关系的过程。他得到的目标有两个形式:边缘和区域。边缘和区域。边缘和区域是互相对偶的因素,如果获得了准确的边缘,那么相应的区域也就可以方便地表示。如果得到有效地区域标记,那么边缘也就可以区域标记的基础上予以确定。(2) 按分割过程中处理的策略分类无论采用什么算法,最终都必须通过计算机的处理才能将图像分割出来。计算机的处理策略有并行和串行之分,结合图像分割的特点与计算机处理的策略将图像分割算法分为:1.并行分割处理2.串行边界分割3并行区域分割4串行区域分割。(3) 按相关知识分类在图像处理中,弧度,纹理,彩色,时变,噪声,立体,运动到呢个多维模式向量均是处理图像可以运用的知识。概括起来可以分为以下五类五种类型: 1.面向特征的过程2.已统计机理为中心的构造3.针对图像爱你过对象的新号表示4数据融合的多信息源集成5特定领域系统的方法。综上,图像分割的算法非常多,但因为棋处理的对象差距很大,不能找到一个通用方法。所以具体问题具体分析,选择适当的方法进行分割目标。3.1.3图像分割结果 本文采用的是分水岭算法,分水岭算法(watershed)是一种借鉴了形态学理论的分割方法,在该方法中,将一幅图看成一个拓扑形图,其中灰度值对应地形高度值。高灰度值对应着山峰,低灰度值对应着山谷。水总是朝声势底的地方流动,直到一局部低洼处才停下来,这个低洼处被称为吸水盆地。最终所有的水会分聚在不同的吸水盆地,吸水盆地之间的山脊被称为分水岭。水从分水岭流下时,它朝不同的吸水盆地流去的可能性是相等。将这种想法应用于图像分割,就是要在灰度图像中找出不同的吸水盆地和分水岭,由这些不同的吸引盆地和分水岭组成的区域即边我们要分割的目标。分水岭阈值选择算法可以看成是一种自适应的多阈值分割算法,在图像梯度图上进行阈值选择时,经常遇到的问题是如何恰当地选择阈值。阈值若选得太高,则许多边缘会丢失或边缘出现破碎现象;阈值若选得太低,则容易产生虚假边缘,而且边缘变厚导致定位不精确,然而分水岭阈值选择算法则可避免这个缺点。Matlab图像处理工具箱提供的watershed函数可用于实现分水岭算法。 图3.13利用分水岭方法的图像分割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表示图像像素的行列数。对图像进行灰度处理,为实现数字的阈值变换提供前提条件,要将256色位图转变为灰度图,首先必须计算每种原色对应的灰度值,灰度与RGB颜色的对应关系Y=0.299R+0.587G+0.114B将调色板转换成灰度调色板。实现的指令:y=rgb2gray(I)。为了对图像进行后续处理,需要对图像进行二值化处理,二值化是图像分割技术中的区域分割技术,它是区域分割中最基本也是最常用的手段,使用阈值将背景与图像分割出来,也称阈值分割。阈值分割的主要算法有两个步骤:1.确定需要的分割阈值2将像素与分割阈值作比较并划分。3.2.1灰度图像 3.2.2二值化图像3.3 图像的加噪仿真图像增强操作主要是针对图像各种噪声而言的,为了说明以上滤波方法的用途,需要模拟数字图像的各种噪声来分析滤波效果。Matlab图像处理工具箱提供imnoise函数,可以用该函数添加各种噪声函数调用格式如下:J=imnoise(Itype,parameters)。下表列出imnoise函数能够产生的五种噪声及对应的参数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-3.2所示图像预处理结果。 3-3.2 图像处理的结果第四章 条码的译码方法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/T2.5/7,那么ATi=2若2.5/7Ti/T3.5/7,那么ATi=3若3.5/7Ti/T4.5/7,那么ATi=4若4.5/7Ti/T,那么ATi=5表4-1列出了正向译码时,EAN-13条码字符值与归一化值(Tl, T2)的对应关系。 表4-1中“E”表示偶字符,“O”表示奇字符EAN-13码字符编码与归一化值(T1. T2)的对应关系见表4-2。表4-2 EAN-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作比较,C3C4者为字符1,反之为7;对于左侧奇字符、右侧偶字符2和8可通过C2与C3作比较,C2C3者为字符8,反之为2;对于左侧偶字符1和7可通过C1与C2作比较,C1C2者为字符7,反之为1;对于左侧偶字符2和8可通过C2与C3作比较,C2C3者为字符2,反之为8;由上述条码字符识别理论可总结出相似边距离测量法的一般步骤。由条码宽度的计算我们得到了各个条、空的宽度(像素),并通过计算n=T/7,T=C1+C2+C3+C4得到单位
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸设计 > 毕业论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!