条形码的识别图像处理报告

上传人:大米 文档编号:563821423 上传时间:2023-03-14 格式:DOCX 页数:24 大小:427.88KB
返回 下载 相关 举报
条形码的识别图像处理报告_第1页
第1页 / 共24页
条形码的识别图像处理报告_第2页
第2页 / 共24页
条形码的识别图像处理报告_第3页
第3页 / 共24页
条形码的识别图像处理报告_第4页
第4页 / 共24页
条形码的识别图像处理报告_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《条形码的识别图像处理报告》由会员分享,可在线阅读,更多相关《条形码的识别图像处理报告(24页珍藏版)》请在金锄头文库上搜索。

1、华侨大学厦门工学院图像通信课程设计报告题 目:基于数字图像处理的条形码识别专业、班级:学生姓名:学 号:指导教师:分 数:目 录一、设计任务及要求 3二、设计原理及设计方案 32、1、条码译码原理 32、2条码译码方案 4三、设计步骤与结果 103、1设计步骤 103、2结果分析 11四、课程设计总结 15五、心得体会 15六、参考文献 16附录一、源程序 17附录二、成绩评定表 25、设计任务及要求本课程设计研究的就是基于数字图像处理的EAN-13条形码识别算法,通过工具平台MATLAB实现。其中图像处理部分就是条码识别重要的前期工作,利用 MATLAB强大的图象处理工具箱实现图像的读入、加

2、噪仿真、滤波、二值化处 理等工作,最终得到高质量的二值化图像。条码识别就就是在二值图像的基础上 实现,二值图像的质量直接关系到条码能否正确识读。二、设计原理及设计方案2、1、条码译码原理:如图1-1所示就是EAN-13条码的一个字符。条、空宽度的定义如下:图中Ci、图1-1 EAN-13条码宽度的定义当前字符一 T C2、C3、C4表示每个字符中四个相邻条、空的宽度 万表示一个字符的宽度下一字符设一个字符中单位模块的宽度为n,则单位模块的宽度:n=T /7T=G + C2 + C3+C4由于条码条、空宽度C1、C2、C3、C4已知,设条码条、空分别占单位模块 的个数为mi ,则:mi =Cn(

3、其中 i 取 1、2、3、4)因此,由mi可知道条码的编码。例如:若 m=2、m2 =2、m3=2、m4 =1;条码的排列为条-空-条-空,则可知条码编码为1100110就是右侧偶性字符1;(2)若 m=1、m2 =2 m3=1、m4 =3;条码的排列为空-条-空-条,则可知条码编码为0110111就是右侧奇性字符82、2条码译码方案:方案一:宽度测量法在图像方式的译码过程中,宽度的测量不再采用传统的脉冲测量法,而就是通 过记录每个条或空的宽度中所含象素的个数来确定实际的条/空宽度,从而确定整个条码符号所代表的信息。方案二 :平均值法对条码符号图像中从起始符到终止符整个宽度进行测量,然后除以9

4、5(标准宽度),求出单位模块所含的像素列宽 ,再分别测量各个条空的实际宽度(此宽度以单位宽度为单位计算)。方案三 :相似边距离的测量方法这种方法的设计思路就是通过对符号中相邻元素的相似边之间距离的测量来判别字符的逻辑值,而不就是由各元素宽度的实际测量值来判别。前两种方案对条码图像的要求非常高 ,因为它们都就是测量各元素符号的实际宽度 ,然后根据查表法得到所代表的码值。如果实际测量值与标准值存在一点偏差,就不能实现正确译码。而第三种方案正就是有效的解决了这一问题,因此本文采用相似边距离测量的方法来实现译码功能。下面就简要说明一下这一方法。由原理知,要想辨识一个条码,必须先测量条码条、 空宽度 C

5、1 、 C2 、 C3 、 C4 以及一个字符的宽度T 。条码图像经过预处理后得到的就是二值图像,该点的颜色信息在阈值变换时已经定义,用 255 与 0 表示白与黑色。我们从条码的左边开始取点 ,若遇到点的灰度值由 255 变到 0 即由点的颜色由白色变为黑色,则表示检测到条 ,记录下该点的坐标值,如果点的颜色由黑色变为白色,则表示检测到空,记录下该点的坐标值。这样经过扫描后得到各个颜色变化点的坐标,然后将相邻两点的横坐标相减得到各个条、空的宽度、由前面所述EAN-13 条码的组成知 :一个由占 3 个条空的起始符、 3 个条空的终止符、 4 个条空的左侧数据符、 5 个条空的中间分隔符、 2

6、0 个条空的右侧数据符、 4 个条空的校验符组成。所以 ,整个条码字符占的条空总数为59,若条码字符没有发生几何畸变,一行扫描应记录的坐标数为 60 个。而对于有几何畸变的条码图像,例如条码污染、条码断裂、条码瑕疵等 ,该扫描行的坐标数将肯定大于60 或小于60,这时将不记录该扫描行,对此行不处理。 这样利用图像统计方法 ,逐行扫描图像,获取条码图像信息, 比起只由一行获取信息的方式可靠性更高 ,这样即使个别噪声点存在并不影响图像信息的获取。(1)条码宽度的计算:设条码字符颜色由黑变为白或由白变为黑(由“0变为”1或由”1变为“0”的各点坐标为Xi、X2、X60。则一行扫描的条空宽度(像素)分

7、别为:。=X2 - Xi、C2=X3 - X2 A 、C59 = Xo0 X59 0由上述图像条码译码理论可总结出条码条空宽度计算步骤,如图1-2所示:图1-2条码条空宽度计算在MATLAB中采用读取像素的方法实现。经过二值化后得到一个二值化图 象矩阵bwo简单起见,可以读取矩阵bw的中间一行,得到一个向量Ao为了提高 可靠性,我们也可逐行扫描。h,l=size(bw);%得到二值图像bw的大小A=bw(round(h/2),:);A中只有0与1表示黑与白。读取其中的元素,发生变化记下坐标(像素)存入 另一个向量x中,x元素前后依次相减存入向量y中得条码宽度。(2)条码字符的判别一相似边距法:

8、理论上条形码字符的逻辑值应该由条形码的实际宽度来判断,而相似边距离方法的设计思想通过对符号中相邻元素的相似边之间距离的测量来判别字符的 逻辑值,而不就是由元素宽度的实际值来判别。此种方法的优点就是:即使条码质 量存在缺欠,使得实际测量值与条码应该具有的理论值有较大的偏差,仍然可以根据相似边的距离能够正确解释。图 1-3给出了相似边之间的距离,则图中tl ,t2,t3,t4 ,t5 , t6 ,t7 (归一化值)为条形码相似边距离。本文采用归一化理论,用一 种相似边距离归一化的方法对字符进行判别。该方法即使条码印刷质量有偏差 仍能正确对条码进行识读。图1-3相似边之间的距离图1-4条码字符宽度示

9、图首先见图1-4各种宽度的定义:Cl, C2, C3, C4表示每个字符中四个相邻条、空的宽度,T表示一个字符的宽度,t1上为相似边之间的距离,则用下列值Ti (i=1,2)来定义与T2的归一化值。测量7个宽度值T ,t1 ,t2 ,t3 ,t4 ,t5,t6 ;然后将测量值t1 ,t2 ,t3 ,t4 ,t5,t6转换为 常数值,T2 ,T3,T4 ,T5 ,T6即T序列值,它代表了这些测量值的整数模块宽,以 下方法用于i序列值的求取:若1、5三ti三2、5,那么Ti =2若2、5三ti三3、5,那么Ti =3若 3、5= ti 三 4、5,那么 T i =4若4、5三ti三5、5,那么Ti

10、 =5表1-1列出了正向译码时,EAN-13条码字符值与归一化值(T1 ,T2 )的对应关表1-1中“E裳示偶字符,O炭示奇字符。EAN-13码字符编码与归一化值(,T2 )的对应关系见表1-2表1-1 EAN-13条码字符与归一化值归一化值2345206E004133E90208ElE7054E2E80107E55EG00E403表1-2 EAN-13字符编码与归一化值字符值左音字符编妈归一比官左偶字将编碣山一化M右偶钿端莺归一但值0D001101530L0D1U231110010531001100144011D0U341100L1J442D0100113300110114311011003

11、33011110155010D001251000010554011110024001110154101110)245011000135OtllOOl4510011103560101111220000101521010000227011101144001000134100010J448ID11C11133Idol00143100100)33g0001011420010111lllO.OO位可以瞧到条形码编码与归一化值在多数情况下呈现一一对应的关系 ,只要确 定了归一化值就能确定字符值,但就是有四种情况例外,在表1-2中知,左侧奇字符 与右侧偶字符1,7归一化值均为44,左侧奇字符与右侧偶字符2,

12、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可通过Ci与C2作比较,CiC2者为字符7,反之为1;对于左侧偶字符2与8可通过C2与C3作比较,C2C3者为字符2,反之为8。由上述条码字符识别理论可总结出相似边距离测量法

13、的一般步骤。 由条码宽度的计算我们得到了各个条、 空的宽度 (像素 ),并通过计算n=T /7,T =C1+C2+C3+C4得到单位模块的宽度(像素 )。各个条空的宽度除以单位模块的宽度就就是归一化的条空宽度。而为了方便译码 ,我们除去起始符3 个条空 ,中间分隔符5个条空 ,终止符 3 个条空 ,对剩下的 48 个条空每 4 个条空为一组进行译码。 计算相似边之间的距离 t1 、 t2 从而得到归一化(T1 ,T2 )。最后查表可得条码字符。为检验译码的正确性利用校验位对码字进行校验。流程图如图 1-5与 1728 判别子程序流程如图 1-6。图1-5字符判别流程图三、设计步骤与结果3、1设

14、计步骤对于一个条码图像我们先要对其进行一定的处理才能达到正确译码的目的。而要对其进行处理,首先就是要将其读入。由于有噪声的存在,必须对其进行滤波。也可以人为地加入一定类型的噪声仿真,然后用合适的滤波方法进行滤波,这样有 助于理解各种滤波方法所针对的噪声类型。最后就就是要二值化,得到二值图像。条码图像预处理流程图如图1-7所示。图1-7条码图像预处理流程图MATLAB中利用函数imread来实现图像文件的读取操作。图1-8就是首 次需要处理的条码图片。一般情况下,通过imread函数读取的大多数图像都就是 8位的。当把这些图 像加载到内存中时,MATLAB就将其存储在类uint8中。此外,MATLAB还支持16 位的PNG与TIFF图像。当用户读取这类图像时,MATLAB就将其存储在类uint16 中。而对于索引图像来说,即使图像矩阵的本身为uint8或uint16,imread函数仍将 颜色映射表读取并存储在一个双精度浮点类型的矩阵中。例如:I=imread(008、bmp);该语句可将条码图像读入内存,并以矩阵形式存储。(2) MATLAB的图像处理工具箱提供imno

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号