条形码识别

上传人:zou****hua 文档编号:194526299 上传时间:2023-03-13 格式:DOCX 页数:18 大小:265.31KB
收藏 版权申诉 举报 下载
条形码识别_第1页
第1页 / 共18页
条形码识别_第2页
第2页 / 共18页
条形码识别_第3页
第3页 / 共18页
资源描述:

《条形码识别》由会员分享,可在线阅读,更多相关《条形码识别(18页珍藏版)》请在装配图网上搜索。

1、HEFEI UNIVERSITY系另H 电子信息与电气工程系专业电气信息类班级电子(2)班完成 时间2012-11-04 姓名 学号 周峰 0905073012基于 MATLA 啲一维条码识别摘要:条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量 大,识别错误率低而在各个方面得到很大的重视。 它发展迅速并被广泛应用于于工业、 商业、 图书出版、医疗卫生等各行各业。 由我国目前发展现状来看, 条码的正常使用受到条形码印 刷质量和商品运输过程的影响, 并且传统的条码识读方式是采用光电识读器, 条码图像对光 的不同反射效果也必然会对条码的识读产生影响, 而一般条码在搬运过程中条码会不

2、可避免 的破损,所以对质量较差的条码的条码的识别尤为重要。不同的条码有着不同的识读过程。 本设计研究一种基于图像处理方式的识读方法, 通 过一定的数字图像处理算法处理进行译码。 译码算法主要分为两部分: 第一部分首先对采集 的条码图像进行预处理,图像的预处理包括图像分割, 图像滤波等,良好的图像处理将对后 面实现正确译码有重大贡献; 第二部分就是对预处理后的条码图像进行译码, 我们根据相似 边距离来判别条码字符, 再通过译码、校验、纠错处理来识读条码,得到条码所表示的文本 信息。借助于 Matlab 软件的功能我们完成这次译码工作。关键词:图像处理条形码识别 EAN-13 图像滤波 Matla

3、b1.1 条码技术概述条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技 术就是应用条码 系统进行的信息处理技术。条码技术的研究始于 20 世纪中期,是继计算机 技术应用和发展应运而生的。通俗的说条形码是指在浅色衬底上印有深色矩形的线条(也称条码)排列而成的编码,其码条和空白条的数量和宽度按一定的规则(标准)排列。条形码是由一组规则排列的条、空、相应的数字组成。这种用条、空组成的数据编码可以供机器识读, 而且很容易译成二进制数 和十进制数。这些条和空可以有各种不同的组合方法, 构成不同的图形符号,即各种符号体 系,适用于不同的应用场合。条形码是迄今为止最经济、实用的一种

4、自动识别技术。1.2 Matlab 应用图像处理Matlab图像处理工具是由Math Works公司推出的用于数值计算的有力工具,它具有相当强大的矩阵 运算和操作功能,力求人们摆脱繁杂的程序代码。Matlab图像处理工具箱提供了丰富的图像处理函数,灵活运用这些函数可以完成大部分图像处理工作。图像处理工具包是由一系列支持图像处理操作的函数组成的。所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等)、图像分析和统计、二值图像操作等。下面就MATLAB 在图像处理中各方面的应用分别进行介绍。主要包括下面几方面:(1) 图像文件格

5、式的读写和显示。MATLAB提供了图像文件读入函数imread(),用来读取如:bmp, tif、tiff、pcx、$g、gpeg、hdf、xwd等格式图像文;图像写出函数imwrite(),还有图像显示 函数 image()、imshow()等等。 图像处理的基本运算。MATLAB提供了图像的和、差等线性运算,以及卷积、相关、滤波等非线性算。例如,conv2(l, J)实现了 I, J两幅图像的卷积。图像变换。MATLAB提供了一维和二维离散傅立叶变换(DFT)、快速傅立叶变换(FFT)、离散余弦变换(DCT),以及连续小波变换(CWT卜离散小波变换(DWT)及其反变换。二、一维条码技术2.

6、1 一维条码符号的结构通常任何一个完整的条码是由两侧空白区、起始符、数据字符、校验符、终止符组成, 以一维条码而 言,其排列方式通常如表2-1 所示:表 2-1 条码符号结构空白区起始宇符數据字符校骋字符终止字符空白区567822数槻审符图 2-1 条码符号1、空白区 位于条码两侧无任何符号及资讯的白色区域,主要用来提示扫瞄器准备扫瞄。2、起始符 指条码符号的第一位字码,用来标识一个条码符号的开始, 扫瞄器确认此字码存在后开 始处理扫瞄脉冲。3、数据符 位于起始字符后面的字码,用来标识一个条码符号的具体数值,允许双向扫瞄。4、校验符用来判定此次阅读是否有效的字码, 通常是一种算术运算的结果,扫

7、瞄器读入条码进行 解码时,先对读入各字码进行运算,如运算结果与检查码相同,则判定此次阅读有效。2.2 EAN 码简述EAN 码的全名为欧洲商品条码 (European Article Number) ,源于公元1977 年,由欧洲 十二个 工业国家所共同发展出来的一种条码。目前已成为一种国际性的条码系统。 EAN 条码 系统的管理是由国际商品条码总会 (In ternatio nal Article Numberi ng Associatio n)负责各会员国的国家代表号码之分配与授权, 再由各会员国的商品条码专责机构, 对其国内的制 造商、批发 商、零售商等授予厂商代表号码。目前已有30多个

8、国家加盟EAN EAN码由前缀码、厂商识别码、商品项目代码和校验码组成。2.3 EAN-13 码符号的特征(1)条码符号的整体形状为矩形。由一系列互相平行的条和空组成,四周都留有空白区。(2) 条空分别由 1-4个同一宽度的的深或浅颜色的模块组成。深色模块用“1 ”表示,浅色 模块用“ 0”表示。(3) 在条码符号中,表示数字的每个条码字符仅由两个条和两个空组成,共7 个模块。(4)除了表示数字的条码字符外,还有一些辅助条码字符,用作表示起始、终止的分界符 和平分条码符 号的中间分隔符。(5)条码符号的大小可在放大系数的两个极限值所决定的尺寸之间变化,以适应不同印刷 工艺的需求及 用户对印刷面

9、积的要求。231 EAN-13码字符集EAN-13条码字符集包括10个数字字符,即0-9。在条码符号中,每个数字字符由七个模块的二进制表示,其表示形式见条码字符集中的A, B, C三个子集表2-2条码字符集数字字符rC子集00001101ET 集01集111111001010011001011001111001102001001100110111101100301111010100001100001040100011001110110111005011000101110011001110&01O1O0000001011O10OO070111011001000110001008011011100

10、0100110010009000101100101IX1H0100A子集中称为奇排列。B、C子集中条码字符所包含的深色模块的个数为偶数,称为偶排列。232 EAN-13码符号结构EAN-13条码符号是由左侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符及右侧空白区构成,如图 2-4所示图2-4 EAN-13条码符号结构起始得%.L 存左侧中间右侧数据氏分隔符数据区校验符缰止符I, I I , I Z:HvFI 1前置码*6区号Ji右侧 厂空白区95+13模块9 5模块左 侧 空 白起 始 符左侧 数据符6位數宇中 间 分 隔 符右侧 数据 符5 位数 宇校验符1位数 宇蜒 止 符右

11、 侧 空 白图2-5 EAN-13条码符号构成示意图左侧空白区:位于条码符号起始符左侧, 无印刷符号且与空的颜色相同的区域。 其最小 宽度为1 1个模块宽。起始符:位于条码符号左侧,表示信息开始的特殊符号,由 3 个模块组成。 左侧数据符:介于起始符和中间分隔符之间的表示信息的一组条码字符。 表示前缀码(不 包含前置码)和厂商代码,共6位数字。条码字符按A子集或B子集的形式构成。左侧数据符由42个模 块组成。中间分隔符:位于条码符号的中间位置, 是平分条码符号的特殊符号, 由 5 个模块组成。 右侧数据 符:中间分隔符右侧的一组选自C 子集的条码字符,表示 5位商品代码,又35 个模块组成。校

12、验符:最后一个条码字符,选自 C 子集,由 7个模块组成,表示一个校验字符。 终止符:位于条码符号右侧,表示信息结束的特殊符号,由3 个模块组成。右侧空白区:在终止符之外的无印刷符号且与空的颜色相同的区域,其最小宽度为7个模块。三、条码图像的预处理3.1 灰度处理及二值化Matlab 能够处理的四种类型图像:1)索引图像索引图像包括图像矩阵与颜色图数组,其中,颜色图是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵包含一个值,这个值就是颜色图中的索引。颜色图为m*3 双精度值矩阵,各行分别指定红绿蓝( RGB 单色值。2)灰度图像在MATLAB*灰度图像是保存在一个矩阵中的,矩阵中的每一

13、个元素代表一个像素点。矩阵可以是双精度类型,其值域为0, 1;也可以为uint8类型,其数据范围为0, 255。矩阵的每个元素代表不同的亮度或灰度级。3)二进制图像,每个点为两离散值中的一个, 这两个值代表开或关。 二进制图像保存在一个由二维的由 0(关)和1 (开)组成的矩阵中。从另一个角度讲,二进制图像可以看成为一个仅包括黑 与白的灰度图 像,也可以看作只有两种颜色的索引图像。4)RGB 图像与索引图像一样,RGB!像分别用红,绿,蓝三个亮度值为一组,代表每个像素的颜色。与索引图像不同的是, 这些亮度值直接存在图像数组中,而不是存放在颜色图中。 图像数组为 M*N*3, M N 表示图像像

14、素的行列数。对图像进行灰度处理,为实现数字的阈值变换提供前提条件,要将256色位图转变为灰度图,首先必须计算每种原色对应的灰度值,灰度与RGB颜色的对应关系Y=0.299R+0.587G+0.114B为了对图像进行后续处理,需要对图像进行二值化处理,二值化是图像分割技术中的 区域分割技术 它是区域分割中最基本也是最常用的手段, 使用阈值将背景与图像分割出来, 也称阈值分割。3.2.1 灰度图像 322二值化图像團|二电比3.2 图像的滤波3.2.1图像的平滑滤波中值滤波器是一种最常用的非线性平滑滤波器,其滤波原理与均值滤波器方法类似,二者不同是在于中值滤波器的输出像素是由领域像素值是由领域的中

15、间值决定的而不是平均 值决定的,中值对极限像素值远不如平均值那么敏感,所以中值滤波器产生的模糊较少,更适合消除孤立噪声点。它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘。加权中值滤波能够改进中值滤波的边缘信号保持效果。 但对方向性很强的指纹图像进行滤波 处理时,有必要引入方向信息,即利用指纹方向图来指导中值滤波的进行。中值滤波器的优 点是:它可以 克服线性滤波器(如均值滤波)给图像带来的模糊,做到在有效地清除脉冲噪声的 同时,又保持良好的边 缘特性,从而获得较满意的复原效果。根据上述条码图像预处理的理论知识编译相关的Matlab 程序,得到如图 3-3.2 所示图像预处理结果。申

16、11 絕誌方3-3.2 图像处理的结杲四、条码的译码方法及基本原理4.1 译码方案的选择我们所采用的是:相似边距离的测量方法, 这种方法的设计思路是通过对符号中相邻元 素的相似边之 间距离的测量来判别字符的逻辑值,而不是由各元素宽度的实际测量值来判 别。由原理知,要想辨识一个条码,必须先测量条码条、空宽度C1、C2、C3 C4以及一个字符的宽度T条码图像经过预处理后得到的是二值图像,该点的颜色信息在阈值变换时已经定义,用255 和 0 表示白和黑色。我们从条码的左边开始取点,若遇到点的灰度值由255变到 0即由点的颜色由白色变为黑色,则表示检测到条,记录下该点的坐标值, 如果点的颜色由黑色变为

17、白色, 则表示检测到空,记录下该点的坐标值。这样经过扫描后得到各个颜色变化点的坐标,然后将相邻两点的横坐标相减得到各个条、空的宽度由前面所述 EAN-13条码的组成知:一个由占3个条空的起始符、 3个条空的终止符、 24个条空的左侧数据符、 5 个条空的中间 分隔符、 20个条空的右侧数据符、 4个条空的校验符组成。所以,整个条码字符占的条空总数为 59,若条码字符没有发生几何畸变,一行扫描应记录的坐标数为60 个;而对于有几何畸变的条码图像, 例如条码污染、条码断裂、条码瑕疵等,该扫描行的坐标数 将肯定大于 60或小于60,这时将不记录该扫描行, 对此行不处理。这样利用图像统计方法, 逐行扫

18、描图 像,获取条码图像信息,比起只由一行获取信息的方式可靠性更高,这样即使个别噪声点存在并不影响图像信息的获取。4.2 条码字符的判别如图4-4所示是EAN-13条码的一个字符。条、空宽度的定义如下:图中C1、C2、C3C4表示每个字符中四个相邻条、空的宽度,T表示一个字符的宽度。当前宇符下一字符C1 C2-一 阳+图4-4 EAN-13条码宽度的定义设一个字符中单位模块的宽度为n则单位模块的宽度:n=T/7T=C1+C2+C3+C4由于条码条、空宽度C1、C2 C3、C4已知,设条码条、空分别占单位模块的个数为mi,则:mi=ci/n (其中i取1、2、3、4)。因此,由mi可知道条码的编码

19、。例如:4.3 EAN-13 的译码原理分析要辨别一个条码,必须知道条码的码,空间隔C1,C2,C3,C4和一个字符的宽度图像经过分割,灰度,二值化处理后得到就是关于条码的二值图像,把图像看作一个二维矩阵, 矩阵中的点就是 0和 255表示白与黑。我们进行列扫描,对于每一列如果有大于大于二分之 一行是0的话,判定这一列是 0。最后我们得到的是一个一维矩阵,从而由这个一维矩阵, 来做字符识别。我们检测这个一维矩阵,若遇到 矩阵由0变到 255,或是由 255 变到 0,的话,记录下坐标值。然后由坐标值相减得到条空的宽度。由前面的EAN-13条码组成可知:一个条码由 3个条空起始符, 3个条空终止

20、符, 24个条空左侧数据区, 5个条空的中间分隔 符, 20个右侧 数据符, 4个条空的校验码,所以扫描的坐标应该为60个,整个条空总数为59。字符判别流程图:扫描识别的流程图如下:经处理后的二值化图像扫描一列,是否有大于 1/2行是0-N Y这列为1pi这列为0得到一个一维矩阵扫描突变点坐标,并记录坐标相减,得到条空宽度C1C59 t 结束图 5-1 条码扫描的流程图4.4 译码的结果分析根据上述译码理论,采用相似边距离测量方法对预处理后的条码图像 (二值图像)进行 译码 得到如下所示译码结果:复砒川啡h门 SJeicenitionC! Ju; , jiiil 机-IH1-5 T叽您團ttt

21、i*刪舟汕二珂V- 11-llrJI1-1 HIT 和:IM TL!M5N12分析:通过多次对不同EAN-13条码的识读,证明该条码检测系统速度快、效率高、而误码率却很低,即使在图像预处理上达不到理想的效果, 条码仍能正确识读。这是因为我们 选择了相似边距离测量的方法。可见,影响条码识别效果的不仅仅是条码图像预处理效果, 译码方法更是不 可忽视的重要原因。相似边距离测量方法有着其它译码方法无可比拟的优 势,它不是根据条码条空宽度的实 际值来判别,而是通过所谓的相似边距离来判别。因此, 即使条码质量存在欠缺,仍然能够根据相似边距离 正确解释条码, 有着很强的对实际情况的 适应性。六、结论在对条码

22、图像作相应的图像预处理之后, 对得到的二值条码图像利用上述条码识别算法 在 Matlab 软件环境下编写了相应的软件程序。通过多次实验,识别效果很好,误码率低, 大大提高了条码 的识别率。相信对其它一维条码图像识别具有一定的理论及实践参考价值。本次设计在译码方法上进行了比较选择,确定了相似边距离的测量方法的优越性。这 种方法的设计思 路是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值, 而不是由各元素宽度的实际测量 来判别。 对条码图像的要求相对其它方法而言较低, 具有较 高的识别率,因而能够很好的满足实际需要。 同时用软件实现条码的识别比硬件具有更好的 抗噪声性能,且速度快,效

23、率高。尽管如此,设计中也遇到了很多的问题有待进一步的解决和探索研究。图像处理是条 码识别的重要基 础。 本设计只是对质量较好的条码图像进行一般性处理, 但实际中的图像并 都不是这么理想,例如条码污染、条码断裂、 条码瑕疵等。这些需要进行特殊的图像处理过 程才能达到译码的目的。 如果条码被污染了我们要进行修复, 条码发生几何畸变我们要进行 图像矫正等等。只有考虑到更多的方面才能提高系统的性能和适应性, 对一定质量范围内的 条码图像都能进行有效的处理。 其次,对软件程序的精简也是我所追求的, 希望通过最精练 的语句实现所需要的功能。程序中很多的语句还有进一步改进的空间,这样既能精简语句, 使语句简

24、明易 懂,也能提高程序整体的执行速度,提高条码识别效率。附录:源程序close allI = imread(019.bmp);J= rgb2gray(l); figure(1) imshow(J);title(灰度化图像);e1,e2=size(J); lm=imcrop(J,e2/2-200,e1/2-200,400,400) figure(2) subplot(1,2,1),imshow(Im)title(中心区域);subplot(1,2,2),imhist(lm) title(中心区域直方图); xa,ya=size(lm);b=double(lm);zd=double(max(lm)

25、 zx=double(mi n(lm) T=double(zd+zx)/2; coun t=double(0);while 1coun t=co un t+1;S0=0.0; n0=0.0;S1=0.0; n1=0.0;for i=1:xafor j=1:yaif double(lm(i,j)=TS 仁 S1+double(lm(i,j); n 仁 n 1+1; elseS0=S0+double(lm(i,j); nO=n0+1;endendendT0=S0/n0;T 仁 S1/n1;if abs(T-(T0+T1)/2)0.1break;elseT=(T0+T1)/2;endendcount

26、TK=fin d(J=T);J(K)=255;figure(3)imshow(J)title(图像二值化);B=medfilt2(J,5,1);figure(4)imshow(B)title(中值滤波后图像);yO,xO=size(B);BW = edge(B,log);figure(5);imshow(BW);title(边缘检测图像)%fun ctio n code = barcode(pic) % 条形码识别check_left = 13,25,19,61,35,49,47,59,55,11;% 左边数据编码,奇39,51,27,33,29,57, 5,17, 9,23; % 左边数据编

27、码,偶check_right = 114,102,108,66,92,78,80,68,72,116;% 右边数据编码first_num = 31,20,18,17,12,6,3,10,9,5;% 第一位数据编码bar = imread(019.bmp); %读输入条形码图片bar_Gray = rgb2gray(bar); %将 RGB 图片转换灰度图 a_hist x = imhist(bar_Gray); hist_max =;if a_hist(1)a_hist(2)hist_max = hist_max 1;endx = max(x);for i=2:xif a_hist(i)a_h

28、ist(i-1) & a_hist(i)a_hist(i+1) hist_max = hist_max i;endendif a_hist(x)a_hist(x+1)hist_max = hist_max x+1;endm,n = size(hist_max);k = 0;max_1 = 0;max_2 = 0;for i=1: nif ka_hist(hist_max(i)k = a_hist(hist_max(i);max_1 = hist_max(i);endendtemp = a_hist(max_1);a_hist(max_1) = 0;k = 0;for i=1: nif kmax

29、_2k = max_1;max_1 = max_2;max_2 = k;endT = max_1;k = a_hist(max_1);for i=max_1:max_2if ka_hist(i)k = a_hist(i);T = i;endendm,n = size(bar_Gray); % 求灰度图的大小for i=1:m%对图像进行二值化处理for j=1: nif bar_Gray(i,j)T%选择适当的阈值进行二值化处理bar_10(i,j) = 1;elsebar_10(i,j) = 0;endendend %imshow(bar_10);l = 0;% 检测 59 根条形码for

30、i=1:mk = 1;l = 1+1;for j=1: n-1if bar_10(i,j)=bar_10(i,j+1)%比较同一行相邻两点的颜色是否一致%bar_x(l,k) = i;bar_y(l,k) = j; %记录转折点的纵坐标 k = k+1;% 准备记录下一个数据点end if k61 %点数大于 60,该行应该删掉l = 1-1; break endendif k61 %点数小于 60,该行应该删掉l = l-1;end end m,n = size(bar_y); if m=1 %查看条形码是否有效code = 0;fprin tf(1,GameOver!n);return end for i=1:m%计算每根条形码的宽度for j=1: n-1bar_ nu m(i,j) = bar_y(i,j+1) - bar_y(i,j); if bar_ nu m(i,j)0check_code = 10 - check_code; endif check_code=str2num(num_bar(13) % 判断校验码是否正确 code = nu m_bar elsefprin tf(1,Please Turn It Arou nd!n); returnend

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

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

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


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