条码检测系统——基于MATLAB的一维条码识别
条码检测系统——基于MATLAB的一维条码识别
摘 要:条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。由我国目前发展现状来看,条码的正常使用受到条形码印刷质量和商品运输过程的影响,并且传统的条码识读方式是采用光电识读器,条码图像对光的不同反射效果也必然会对条码的识读产生影响,而一般条码在搬运过程中条码会不可避免的破损,所以对质量较差的条码的条码的识别尤为重要。
不同的条码有着不同的识读过程。本设计研究一种基于图像处理方式的识读方法,通过计算机辨识来解决条码印刷质量不佳和条码变形等问题。该方法是采用摄像头采集条码图像,通过照相采集条码图像的方法避免了线性扫描器逐行扫描所产生的问题,同时简化了扫描条码图像的操作。然后通过一定的数字图像处理算法处理进行译码。译码算法主要分为两部分:第一部分首先对采集的条码图像进行预处理,图像的预处理包括图像分割,图像滤波等,良好的图像处理将对后面实现正确译码有重大贡献;第二部分就是对预处理后的条码图像进行译码,我们根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,得到条码所表示的文本信息。与用条码识读器硬件进行译码相比,软件译码具有更大的灵活性和较低的成本,所以具有很大的市场空间。借助于matlab软件的功能我们完成这次译码工作。
关键词:图像处理 图像分割 条形码识别 EAN-13 相似边距识别 图像滤波Matlab
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 it’s large information and low error rate. It develops very quickly and has already been applied in industry,忽略merce,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. 忽略paring with decoding with special Bar-Code identification hardware, decoding with software is more flexible, and the cost is also 忽略paratively 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
目 录
第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的译码原理分析............................................25
5.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所示:
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)。
A子集中条码字符所包含的深色模块的个数为奇数,称为奇排列。B、C子集中条码字符所包含的深色模块的个数为偶数,称为偶排列。
条码字符集示意图见图2-3。A、B子集的条码字符从左到向右,以一个浅色模块开始,以一个深色模块结束。C子集的条码字符从左到右,以一个深色模块开始,以一个浅色模块结束。
图2-3 通用商品条码字符集示意图
2.4.2 EAN-13码符号结构
EAN-13条码符号是由左侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符及右侧空白区构成,如图2-4所示。
左侧空白区:位于条码符号起始符左侧,无印刷符号且与空的颜色相同的区域。其最小宽度为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.阈值分割2.边缘检测3区域提取。
算法1基于这样假设,每个区域有许多灰度相近的像素构成,物体和背景之剑或其他物体之间有明显的差别,还可以通过取门限的方法将像素分成不同的区域。算法2首先检测出局部的不连续性,再将他们连成边界,这些边界把图像分成不同的区域。算法3是根据区域内部的均匀性而实现的分割,可以分为合并,分裂及分裂合并三种。
图像分割在本质上是找出空域像素与满足一定均一性的区域之间对应关系的过程。他得到的目标有两个形式:边缘和区域。边缘和区域。边缘和区域是互相对偶的因素,如果获得了准确的边缘,那么相应的区域也就可以方便地表示。如果得到有效地区域标记,那么边缘也就可以区域标记的基础上予以确定。
- 按分割过程中处理的策略分类
无论采用什么算法,最终都必须通过计算机的处理才能将图像分割出来。计算机的处理策略有并行和串行之分,结合图像分割的特点与计算机处理的策略将图像分割算法分为:1.并行分割处理2.串行边界分割3并行区域分割4串行区域分割。
- 按相关知识分类
在图像处理中,弧度,纹理,彩色,时变,噪声,立体,运动到呢个多维模式向量均是处理图像可以运用的知识。概括起来可以分为以下五类五种类型: 1.面向特征的过程2.已统计机理为中心的构造3.针对图像爱你过对象的新号表示4数据融合的多信息源集成5特定领域系统的方法。
综上,图像分割的算法非常多,但因为棋处理的对象差距很大,不能找到一个通用方法。所以具体问题具体分析,选择适当的方法进行分割目标。
3.1.3图像分割结果
本文采用的是分水岭算法,分水岭算法(watershed)是一种借鉴了形态学理论的分割方法,在该方法中,将一幅图看成一个拓扑形图,其中灰度值
对应地形高度值。高灰度值对应着山峰,低灰度值对应着山谷。水总是朝声势底的地方流动,直到一局部低洼处才停下来,这个低洼处被称为吸水盆地。最终所有的水会分聚在不同的吸水盆地,吸水盆地之间的山脊被称为分水岭。水从分水岭流下时,它朝不同的吸水盆地流去的可能性是相等。将这种想法应用于图像分割,就是要在灰度图像中找出不同的吸水盆地和分水岭,由这些不同的吸引盆地和分水岭组成的区域即边我们要分割的目标。
分水岭阈值选择算法可以看成是一种自适应的多阈值分割算法,在图像梯度图上进行阈值选择时,经常遇到的问题是如何恰当地选择阈值。阈值若选得太高,则许多边缘会丢失或边缘出现破碎现象;阈值若选得太低,则容易产生虚假边缘,而且边缘变厚导致定位不精确,然而分水岭阈值选择算法则可避免这个缺点。Matlab图像处理工具箱提供的watershed函数可用于实现分水岭算法。
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.3 图像的加噪仿真
图像增强操作主要是针对图像各种噪声而言的,为了说明以上滤波方法的用途,需要模拟数字图像的各种噪声来分析滤波效果。
Matlab图像处理工具箱提供imnoise函数,可以用该函数添加各种噪声函数调用格式如下:
J=imnoise(I‘type’,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/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-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作比较,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-4 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。
第五章 条码的译码的基本原理
5.1 EAN-13的译码原理分析
由上一章可知,要辨别一个条码,必须知道条码的码,空间隔C1,C2,C3,C4和一个字符的宽度T.图像经过分割,灰度,二值化处理后得到就是关于条码的二值图像,把图像看作一个二维矩阵,矩阵中的点就是0和255表示白与黑。我们进行列扫描,对于每一列如果有大于大于二分之一行是0的话,判定这一列是0。最后我们得到的是一个一维矩阵,从而由这个一维矩阵,来做字符识别。我们检测这个一维矩阵,若遇到矩阵由0变到255,或是由255变到0,的话,记录下坐标值。然后由坐标值相减得到条空的宽度。由前面的EAN-13条码组成可知:一个条码由3个条空起始符,3个条空终止符,24个条空左侧数据区,5个条空的中间分隔符,20个右侧数据符,4个条空的校验码,所以扫描的坐标应该为60个,整个条空总数为59。字符判别流程图:扫描识别的流程图如下:
分析:通过多次对不同EAN-13条码的识读,证明该条码检测系统速度快、效率高、而误码率却很低,即使在图像预处理上达不到理想的效果,条码仍能正确识读。这是因为我们选择了相似边距离测量的方法。可见,影响条码识别效果的不仅仅是条码图像预处理效果,译码方法更是不可忽视的重要原因。相似边距离测量方法有着其它译码方法无可比拟的优势,它不是根据条码条空宽度的实际值来判别,而是通过所谓的相似边距离来判别。因此,即使条码质量存在欠缺,仍然能够根据相似边距离正确解释条码,有着很强的对实际情况的适应性。
第六章 结论
在对条码图像作相应的图像预处理之后,对得到的二值条码图像利用上述条码识别算法在Matlab软件环境下编写了相应的软件程序。通过多次实验,识别效果很好,误码率低,大大提高了条码的识别率。相信对其它一维条码图像识别具有一定的理论及实践参考价值。
本次设计在译码方法上进行了比较选择,确定了相似边距离的测量方法的优越性。这种方法的设计思路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量来判别。对条码图像的要求相对其它方法而言较低,具有较高的识别率,因而能够很好的满足实际需要。同时用软件实现条码的识别比硬件具有更好的抗噪声性能,且速度快,效率高。
尽管如此,设计中也遇到了很多的问题有待进一步的解决和探索研究。图像处理是条码识别的重要基础。本设计只是对质量较好的条码图像进行一般性处理,但实际中的图像并都不是这么理想,例如条码污染、条码断裂、条码瑕疵等。这些需要进行特殊的图像处理过程才能达到译码的目的。如果条码被污染了我们要进行修复,条码发生几何畸变我们要进行图像矫正等等。只有考虑到更多的方面才能提高系统的性能和适应性,对一定质量范围内的条码图像都能进行有效的处理。其次,对软件程序的精简也是我所追求的,希望通过最精练的语句实现所需要的功能。程序中很多的语句还有进一步改进的空间,这样既能精简语句,使语句简明易懂,也能提高程序整体的执行速度,提高条码识别效率。
条码识别系统的测试和实验结果分析:
我所做的设计包括图像处理,条码识别,图像处理是非常重要的一个环节,在这之中我运用到很多的图像分割的方法,主要用到阈值分割,高低帽图像增强分割,以及图像的腐蚀,膨胀等分割方法,每种分割方法都有其特点,对不同程度污染的条码的分割的效果不一样,其次过于条码识别的方法,利用的矩阵的列扫描扫出正确的条空,这种程序通俗易懂实现起来也比较简单,再条码译码部分主要是利用相似边距法来读取条空的编码,并译码。利用这个思路,用matlab编程能够实现对轻度污染的条码进行识别。下面图片为识别的处理的结果。
图6-1 图像分割
图6-2 条码的译码结果
致谢语
在林老师的指导下,经过这学期的努力学习和工作按时按量地完成了我和毕业设计书写的工作。在老师指导下通过这一段时间的学习,不仅使我的学习能力和独立思考的能力得到了极大的提高,同时也让我认识到我在本专业的专业知识方面还有很多不清楚的地方。这也将对我以后的工作和学习产生有很大的帮助。
在此,特别感谢饶琴学姐,在设计中,她给了我很大的帮助,由于之前比较少使用Matlab来处理图像,对这个软件业比较陌生,所以刚开始出现很多低级错误,基本不懂错误分析、排查,使得问题的方法。在她的引导下,我渐渐地掌握了Matlab编程的方法,她的热情,才学,认真的态度将对我今后的工作,学习有很大的影响。做事讲究方法科学,做人讲究认真务实。
参考文献
[1]朱虹,数字图像处理基础[M],北京:科学出版社,2005。
[2] 董长虹 Matlab图像处理与应用,北京:国防工业出版社,2004.1
[3]徐飞,MATLAB应用图像处理[M],西安:西安电子科技大学出版社,2002。
[4] 徐杰 数字图像处理武汉:华中科技大学出版社,2009.8
[5]朱秀昌、刘峰、胡栋,数字图像处理与图像通信[M],北京:北京邮电大学出版社,2002。
[6] 何东健 数字图像处理.西安:西安电子科技大学出版社,2003.7
[7] 费振原 条码技术及应用,上海:上海科学技术文献出版社,1992.9
[8]刘志海,条形码技术及程序设计[M],重庆:重庆大学出版社,1991。
[9]王雅静,基于图像处理的EAN-13条码识别算法[J],山东理工大学学报(自然科学版),2005,第19卷(第4期):3-5。
[10]赵素霞,基于数字图像处理方式的EAN-13条码识读算法研究[C],山东:山东大学,2005,48-60。
附 录
Study of Recognition for 1-D and 2-D Bar Code Images
Fan Yongfa He Hongzhuang
(College of Mechanial and Electronic Engineering,Hehai Univ,Changzhou 213022,China)
Abstract The authors have studied the moment-invariants theory of pattern recognition,and 忽略bined the other image processing techniques,then developed a one-dimension bar code recognition system which can recognize not only the lightly polluted and in忽略pletele bar codes but also the distorted bar codes with arbitrarily angle.As a result ,the two-dimension recognition system had been developed and studied.
key words Bar code Moment-invariant Image recognition Ellipse model
1 Introduction
1. Bar code technology because of its fast and accurate, has fathom to every corner of the field of 忽略puter management. The traditional model of bar code information extraction is based on optical scanning technology, with digital image processing technology, in recent years digital camera images based on intake patterns and a corresponding decoding system.However, there have not been solved for arbitrary angles of distortion of the bar for literacy issues, this paper, code-128 bar code example, a new technology program, which transformed during thresholding, moment by 忽略puting Center to determine the bar code of the 'elliptical angle'; 忽略bination of image and bar code information, adjust the bar code image to the level of success to solve the distortion at any angle bar code automatic identification of the problem.
2 . Technical programs and mathematical models.
2.1 Technical Programme
Code-128 bar code know a variable length of the continuous bar code as shown in Figure(1), it uses a set of parallel bars, spaces that start character, data character, testing character terminator and a blank area left and right sides.
The bar code image format to standard bitmap, and then can be turned into a binary image, and then find the bar code by the Moment of the relative position and angle, and then adjusted on the bar code image processing, the out忽略e can be scanned.
Figure(1)
One-D-bar code Two-D-barcode
2.2 Mathematical model
Bar code and digital cameras are not strictly vertical, there will always be a certain tilt and offset. In this paper, geometric transformation of digital images to be resolved. 2.2.1 Invariant moment invariants of the object image by the translation, rotation, ratio remained unchanged after the moment of transformation characteristics of volume, can be used to solve the distortion of the image understanding and recognition. N * M pixels of the digital image gray scale is f (x, y), then its (p + q) order central moments can be given by:
2.2.2 Bar Code elliptical model thin model type images can be used to express the oval size, orientation, use of bar code 3 second-order central moments to construct the image of the elliptical bar model shown in Figure 2, a, b long, oval, respectively, the minor axis.
Figure(2) Image Elliptical Model
;
3 . one-dimensional bar code identification system integration and debugging
One-dimensional bar code image recognition system is in VC + + environment to "Document - View" model integration. One CStandard code to achieve standardization of bar code formats, provides bar code type CStdcodeObject geometry of location information that is in the class of functions Myangle, class CCode VIiew threshold integrated image transformation, geometric transformation, noise reduction and other image processing functions. The system for any angle light pollution, distortion one-dimensional bar code, in less than a second to identify, meet the real-time applications.
4. two-dimensional bar code identification systems technology program
Based on code-128 as two-dimensional bar code by the superposition of multi-dimensional bar codes, two-dimensional bar code has inherited the results of one-dimensional bar code, but an increase of matrix separation module. The mechanism is two-dimensional bar code to achieve the level of cutting the number of image matrix, block matrix identification system program pairs one by one scanning, once read the initial character information, namely that the layer number and begin decoding of information, experience terminator when they jump to the next sub-block matrix scanning, sweeping up all over the matrix, in order to prevent loss of information on each bar is divided into two sub-matrices.
5.Two-dimensional bar code identification system design and debugging
Two-dimensional bar code identification system is also in VC + +6.0 environment in order to "document - view" model integration. One CStdDataObject barcode image is read and stored as an array matrix, then matrix partitioning, divided into sub-matrix; class CTwoB128Doc function with function number under the level of information circulating sub-block matrix.
Two-dimensional system can be 忽略pared to 0.5 seconds on the second floor of a serious two-dimensional bar code image noise, correct identification. Two-dimensional bar code identification system has also improved, and only two single bar code for debugging
6. Conclusion
Bar code printing and easy to use in忽略plete or pollution caused, image-based bar code recognition system developed to broaden the practical applications of the bar code; achieve automatic identification. The system also can be used in the field of robot automatically search for Engineering。
References:
1. Fan Yongfa, GUO Yan-ping, image processing and barcode recognition software development [M], a 忽略puter application [J], 2003, (2); 86 ~ 87;
2 . Zhang Ze, Wang Yao the ball, bar code technology and electronic data interchange [M], Beijing; China Railway Press, 1998.
3. Yun-De Jia machine vision [M], Beijing, Science Press, 2000.
4. Wang Xiaohong Rongchun A new method for image normalization, 忽略puter applications and software [J], 2002, (3); 51 ~ 57.
5.HE Hong Zhuang. Based on image recognition mode of bar code decoding system [D], Nanjing: Hohai University: [MA thesis] .2003.
中文翻译:
一维及二维条码图像识别系统研究
范永法 何红庄
(河海大学机电学院 常州 213022)
摘要 以矩不变为特征的模式识别理论为依据,结合其他数字图像处理技术,开发出不仅能对轻度污染与残缺的条码进行识读,而且能对任意角度有畸变的条码图像进行快速识别的系统。在此基础上,对二维条码图像的识别系统进行了开发研究。
关键词 条码 不变矩 图像识别 椭圆模型
- 引言
条码技术的应用因其快速准确,已参透到计算机管理领域的各个角落。条码信息提取的传统模式是基于光电扫描技术,随着数字图像处理技术的发展,近年来出现了基于数码相机的图像摄入模式,并出现了相应的译码系统。然而至今还没有解决对任意角度的畸变的条码进行识读的问题,本文以code-128条码为例,提出了一种全新的技术方案,即在进行阈值处理变换后,通过计算中心矩,确定条码的‘椭圆倾角’;结合图像及条码有关信息,调整条码图像至水平,成功的解决了任意角度畸变条码的自动识别问题。
- 技术方案及数学模型
2.1 技术方案
Code-128条码识一种可变长度的连续型条码如图一所示,它用一组平行的条,空表示起始符,数据符,检验符终止符及左右侧空白区。
将条码图像的格式转换为标准位图,进而可化为二值图,然后经矩计算求出条码的相对位置和倾斜角度,再对条码图像进行调整处理,即可扫描得出结果。
2.2 数学模型
条码与数码相机并不严格垂直,往往会有一定倾斜和偏移。本文通过数字图像的几何变换予以解决。2.2.1矩不变量 矩不变量是物体图像经平移,旋转,比例等变换后仍然不变的矩特征量,可以用于解决畸变图像的理解和识别问题。N*M个像素的数字图像灰度为f(x,y),则其(p+q)阶中心矩
,可以由下式给出:
2.2.2 条码图像椭圆模型 对细长类图像可以用椭圆模型来表示其尺寸,方向性,利用条码的3个二阶中心矩,构建条码图像的椭圆模型 ,如图2所示,a,b分别为椭圆长,短半轴。
3 一维条形码识别系统集成及调试
一维条形码图像识别系统是在VC++的环境下,以“文档-视图”的模式集成的。其中CStandard code 实现条码格式标准化,类CStdcodeObject提供条码图像的几何位置信息,函数Myangle
即在该类中,类CCode VIiew 中集成了图像阈值变换,几何变换,降噪等图像处理函数。本系统对任意角度的轻度污染,畸变一维条码,在一秒内识别,符合实时应用的要求。
4 二维条码识别的系统技术方案
由于基于code-128的二维条码由多层一维条码叠加而成,二维条码继承了一维条码的成果,但增加了矩阵分隔模块。其实现机理是将二维条码图像水平模切为多个子矩阵,识别系统程序对子块矩阵逐个扫描分析,一旦读到起始符信息,即提出层号信息并开始译码,遇到终止符时便跳转到下一个子块矩阵扫描,直到扫遍所有的子矩阵,为防止信息丢失每层条码分成两个子矩阵。
- 二维条码识别系统设计及调试
二维条码识别系统同样是在VC++6.0环境下以“文档-视图”模式集成。其中CStdDataObject是将条码图像读取并储存为数组矩阵,然后进行矩阵分割,划分成子矩阵;类CTwoB128Doc设有功能函数根据层号信息循环子块矩阵。
二维系统可以在0.5秒内对比较严重的噪声二层二维条码图像正确识别。二维条码识别系统还在改进完善,仅对两个单层条码进行调试
6 结束语
条码在印刷及使用中易造成残缺或污染,基于图像的条码识别系统的研制,拓宽了条码的实际应用领域;实现了自动识别。该系统还可以应用于机器人自动寻刀系统工程领域。
参考文献:
1 范水法,郭艳萍,条码图像处理及识别软件开发[M],计算机应用研究[J],2003,(2);86~87;
2 张泽,王耀球,条码技术与电子数据交换[M],北京;中国铁道出版社,1998。
3 贾云得 机器视觉[M],北京,科学出版社,2000。
4 王晓红 赵荣椿 图像规格化的一种新方法,计算机应用与软件[J],2002,(3);51~57.
5 何红庄.基于图像识别模式的条码译码系统的研究[D],南京:河海大学:[硕士论文].2003。
附录(二)
表一 EAN-13字符编码与归一化值(反向译码)
图一 1728判别子程序流程图
相关文章:
条码检测系统——基于MATLAB的一维条码识别
条码检测系统——基于MATLAB的一维条码识别 摘 要:条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。由…...
【Word原件测试资料合集】软件系统功能测试方案,软件测试方案(整体方案),软件测试文档-测试计划模版(功能与性能),软件测试流程
一、 前言 (一) 背景 (二) 目的 (三) 测试目标 (四) 适用范围与读者对象 (五) 术语与缩写 二、 软件测试实施流程 (一) 测试工作总体流…...
1024 程序员节 快乐
大家好,今天是2024-10-24 程序员节~~~~~~~~~祝你节日快乐,程序员!哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦哦 喂~俺个炊饼~ 马飞~ 好了,该说…...
Java枚举类
1.枚举 1.1概述【理解】 为了间接的表示一些固定的值,Java就给我们提供了枚举 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内 1.2定义格式【应用】 格式 public enum s { 枚举项1,枚举项2,枚举项3; } 注意: 定义枚举类要用关键字enum 示例代…...
kubenetes/kubesphere搭建报错
一、prometheus问题 1.kubesphere 安装 prometheus-k8s 报以下错误: MountVolume.SetUp failed for volume "secret-kube-etcd-client-certs" : secret "kube-etcd-client-certs" not found 原因是:kube-etcd-client-certs 这个证…...
分享几个办公类常用的AI工具
办公类 WPS AI讯飞智文iSlideProcessOn亿图脑图ChatPPT WPS AI 金山办公推出的协同办公 AI 应用,具有文本生成、多轮对话、润色改写等多种功能,可以辅助用户进行文档编辑、表格处理、演示文稿制作等办公操作。 https://ai.wps.cn/ 讯飞智文 科大讯飞推…...
Vue入门示例
今天滴学习目标!!! 示例简介HTML内容主体区域输入框列表区域统计和清空 JS引入Vue.js库定义Vue实例el选项data选项methods选项 示例简介 HTML内容 本次实例讲解的是v-for、v-on、v-model来写这小小的实例,下面是实例的效果图&am…...
鸿蒙开发:实现全局异常捕获和异常查看
前言 开发中的异常信息,我们很容易排查,直接可以在控制台中就可以查看,但是,提交给测试同学或者上线后的异常信息,我们如何获取呢?这里我们很容易想起,三方sdk,比如常见的腾讯Bugly…...
Git和GitHub Desktop(Git客户端工具)下载安装教程
不说废话,直接开始。下载网址:https://git-scm.com/ 一.GIT下载 1.点击downloads 2.自己选择自己需要配置的版本 我是windows,所以选择的windows版本的安装 3.根据自己电脑的系统下载软件 我的是64位,选择64位安装 ps :下载很慢…...
Linux经常使用命令汇总和总结
Linux经常使用命令汇总和总结 文章目录 Linux经常使用命令汇总和总结一、基本命令二、目录操作命令三、文件操作命令四、压缩文件操作五、查找命令六、su、sudo七、系统服务八、网络管理九、定时任务指令crontab 配置十、其他命令 一、基本命令 1.1 关机和重启 关机 shutdown …...
three.js 灯光
环境光探针(AmbientLightProbe) 光照探针是一种在3D场景中添加光源的另一种方法。 AmbientLightProbe 是场景中单个环境光的光照估算数据。 有关光照探针的更多信息,请转到 LightProbe 。 构造函数 AmbientLightProbe( color : Color, int…...
ELK日志收集
目前,各个微服务系统的日志都保存在各自指定的目录中,如果这些微服务部署在不同的服务器上,那么日志文件也是分散在各自的服务器上。分散的日志不利于我们快速通过日志定位问题,我们可以借助ELK来收集各个微服务系统的日志并集中展…...
常见docker命令
1、查询已安装docker中某个image依赖包 docker run -it --rm --name my-python-container 【python37:v001】 /bin/bash 【】改成自己环境名字 docker run -it --name lane python37_test:v006 /bin/bash lane是容器名字,python37_test:v006 是镜像名 开启容器 do…...
测试新人刚入行,该如何规划以后的发展路径?
作为一个刚入行的测试新人,应该如何规划自己的职业发展路径?如何规划自己的技术路线?软件测试的段位都有哪些?他们之间的薪资差异如何? 听说这些问题,是目前想要入行软件测试的同学们最关心的。那么我们今…...
Boosting Object Detection with Zero-Shot Day-Night Domain Adaptation
摘要:低亮度场景检测是一个小众且重要的方向,首先在于数据集和过往的研究都集中在光照充足的环境下,其次如果使用传统的训练方法的话由于训练难度大,模型效果也不会很好,有幸的是,现在关于低亮度的研究已经…...
Chromium html<lable>c++接口定义
HTML <label> 元素(标签)表示用户界面中某个元素的说明。 1、<label> 在html_tag_names.json5中接口定义: (third_party\blink\renderer\core\html\html_tag_names.json5) {name: "label",inte…...
QT中中文显示乱码问题
在VS2013中用QT开发GUI应用程序,Qt中显示中文乱码 一: //解决QT中中文显示乱码问题 #pragma execution_character_set("utf-8") 二:在main函数中添加以下代码: #include <QTextCodec>void main() {QTextCod…...
[面试常见]Javascript基础知识
#1024程序员节|征文# Object.assign 和对象扩展运算符有什么区别?是深拷贝还是浅拷贝? 都进行浅拷贝,只赋值对象的第一层属性,而不会递归复制整个对象结构 **const mergedObj Object.assign({},obj1,obj2) JavaScript 中 Map 和 Object 的区别是什么?…...
使用注解@ExcelIgnoreUnannotated实现了在导出 Excel 时忽略没有被标注的字段
ExcelIgnoreUnannotated 注解用于在使用 Apache POI 或其他 Excel 处理库时,指示在导出 Excel 时忽略没有被标注的字段。这意味着只有被特定注解(如 ExcelProperty)标注的字段会被处理和导出。 作用 简化导出过程:只导出需要的字…...
线程的同步
目录 引入 认识条件变量 快速认识接口编辑 认识条件变量编辑 测试代码编辑 生产消费模型 为何要使用生产者消费者模型 理解 编写生产消费模型 BlockingQueue 单生产单消费 多生产多消费 引入 同步:在保证数据安全的前提下,让线程…...
【启明智显分享】ZX7981PG/ZX7981PM融入官方OpenWrt,启明智显SDK/官方OpenWrt任由选择!
好消息!好消息!启明智显ZX7981PG和ZX7981PM正式融入官方 OpenWrt 的大家庭啦!现在开发者不仅可以基于启明智显的SDK进行二次开发,还可以直接应用官方OpenWrt以及我们的开源资料进行开发! 借助OpenWrt的强大生态&…...
如何用java发送包含表格形式的邮件
问题: 如何用java发送包含表格形式的邮件? 方法: 发用freemaker工具来替换html的表格变量,从而动态生成了html。然后再发送这个html格式(不能用纯文本)文本即可。 优化流程: 1、准备模板&#x…...
讲个故事:关于一次接口性能优化的心里路程
这是一个程序猿写的第一个故事,请各位懂行的客官静下心来,慢慢品读。就知道我为什么要单独写一个文章来记录这次过程了,因为实在是太坎坷了...... 背景介绍 近期项目投产时遇到一个问题,投产后在验证时发现大部分用户系统登…...
Centos7升级到openssh9.9
openssh9.9 是2024.9.20出的最新版ssh。因为客户扫描出一大堆centos7的漏洞,全是这个openssh的,好多补丁,所以索性升级到最新版。 需要自己制作rpm包,这个我是不懂,照这个来: Linux服务器升级openssh9.9最…...
使用 STM32F407 串口实现 485 通信
准备工作 了解485通信基本概念与原理:RS485通信详解_485通讯de接什么口-CSDN博客 安装编译软件:keil uVision 5.6 软件资料:STM32CubeF4 固件包,正点原子RS485通信例程 参考视频:第26讲 基础篇-新建H…...
基于NERF技术重建学习笔记
NeRF(Neural Radiance Fields)是一种用于3D场景重建的神经网络模型,能够从2D图像生成逼真的3D渲染效果。它将场景表征为一个连续的5D函数,利用了体积渲染和神经网络的结合,通过学习光线穿过空间时的颜色和密度来重建场…...
webView 支持全屏播放
webView 支持全屏播放 直接上代码 public class CustomFullScreenWebViewClient extends WebChromeClient {WebView webView;Context context;/*** 视频全屏参数*/protected static final FrameLayout.LayoutParams COVER_SCREEN_PARAMS new FrameLayout.LayoutParams(ViewG…...
QGIS之三十二DEM地形导出三维模型gltf
效果 1、准备数据 (1)dem.tif (2)dom.tif 2、qgis加载dem和dom数据 3、安装插件 插件步骤可以参考这篇文章 QGIS之二十四安装插件 安装了Qgis2threejs插件,结果...
【python爬虫】携程旅行景点游客数据分析与可视化
一.选题背景 随着旅游业的快速发展,越来越多的人选择通过互联网平台预订旅行产品,其中携程网作为国内领先的在线旅行服务提供商,拥有大量的旅游产品和用户数据。利用爬虫技术可以获取携程网上各个景点的游客数据,包括游客数量、游…...
python实现onvif协议下控制摄像头变焦,以及融合人形识别与跟踪控制
#1024程序员节 | 征文# 这两天才因为项目需要,对网络摄像头的视频采集以及实现人形识别与跟踪技术。对于onvif协议自然起先也没有任何的了解。但是购买的摄像头是SONY网络头是用在其他地方的。因为前期支持探究项目解决方案,就直接拿来做demo测试使用。 …...
广州美工培训/seo搜索引擎优化书籍
王爽写的很清楚。 如果要形成20位地址,但是是16位的寄存器,则需要组合起来,段地址x16偏移地址物理地址 需要偏移的位数是20-164位,2进制偏移4位即相当于16进制偏移1位。 比如:123C81230x16c8123cx168, 可…...
新疆锦旭建设工程公司网站/互联网十大企业
身边很多朋友都喜欢在网络上下载txt电子书资源,然后用手机阅读,那么今天小编将为大家推荐iOS苹果手机上最好的3个txt阅读器,用来更好的打开txt文件并享受手机阅读小说的乐趣。 Top1:Neat Reader 这款在小编用过的阅读器中绝对排第…...
东戴河网站建设/免费推广seo
TCL(Transaction Control Language)事务控制语言 COMMIT 提交SAVEPOINT 设置保存点ROLLBACK 回滚SET TRANSACTION 转载于:https://www.cnblogs.com/Skyyj/p/6514874.html...
公司网页设计需要跟设计公司洽谈的问题/南宁seo推广服务
题库来源:安全生产模拟考试一点通公众号小程序 制冷与空调设备运行操作考试内容是安全生产模拟考试一点通总题库中生成的一套制冷与空调设备运行操作实操考试视频,安全生产模拟考试一点通上制冷与空调设备运行操作作业手机同步练习。2021年制冷与空调设…...
网站建设上机课/网推和地推的区别
http://www.cnblogs.com/zigzagPath/p/3562458.html http://channel9.msdn.com/search?termwindows%20phone%208.1%20development%20%20absolute%20beginners#pageSize15&ch9Search转载于:https://www.cnblogs.com/luckyhappy/p/3754140.html...
官方网站建设步骤/网站怎么做的
一分钟速览新闻点! 抖音上线“帐号处罚公示”功能雷军将于8月10日做年度演讲苏宁物流否认被收购:消息不实腾讯推出游戏「双减双打」新措施小米手机在欧洲首次登顶,市场份额超越三星和苹果三星电子赶超英特尔,成全球最大芯片厂商爱…...