ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:290.05KB ,
资源ID:6058136      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6058136.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(相似边距离条形码识别技术.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

相似边距离条形码识别技术.docx

1、相似边距离条形码识别技术维条形码生成与识别技术、引言条形码(简称条码)技术是集条码理论、光电技术、计算机技术、通信技术、条码印 制技术于一体的一种自动识别技术。 条形码是由宽度不同、 反射率不同的条 (黑色) 和空(白 色),按照一定的编码规则编制而成,用以表达一组数字或字母符号信息的图形标识符。条 形码符号也可印成其它颜色,但两种颜色对光必须有不同的反射率,保证有足够的对比度。 条码技术具有速度快、准确率高、可靠性强、寿命长、成本低廉等特点,因而广泛应用于商 品流通、工业生产、图书管理、仓储标证管理、信息服务等领域。EAN-13 条形码简介)的英文缩写,是以消费资料为使用一维条码主要有 EA

2、N 和 UPC 两种, 其中 EAN 码是我国主要采取的编码标准。 EAN 是 欧洲物品条码( European Article Number Bar Code对象的国际统一商品代码。 只要用条形码阅读器扫描该条码, 便可以了解该商品的名称、 型 号、规格、生产厂商、所属国家或地区等丰富信息。EAN 通用商品条码是模块组合型条码,模块是组成条码的最基本宽度单位,每个模块 的宽度为 0.33 毫米。在条码符号中,表示数字的每个条码字符均由两个条和两个空组成,1” ,一个模块的空表它是多值符号码的一种, 即在一个字符中有多种宽度的条和空参与编码。 条和空分别由 14个同一宽度的深、浅颜色的模块组成

3、,一个模块的条表示二进制的 示二进制的 “0” ,每个条码字符共有 7 个模块。即一个条码字符条空宽度之和为单位元素的 7 倍,每个字符含条或空个数各为 2 ,相邻元素如果相同, 则从外观上合并为一个条或空,EAN 条码字符包括 09 共 10 个数字字符,但对应的每个数字字符有三种编码形式,30 种编左侧数据符奇排列、左侧数据符偶排列以及右侧数据符偶排列。这样十个数字将有码,数据字符的编码图案也有三十种,至于从这 30 个数据字符中选哪十个字符要视具体情2.1EAN-13 码的格式EAN条形码有两个版本,一个是 13位标准条码(EAN-13条码),另一个是8位缩短条码(EAN-8条码)。EA

4、N-13条码由代表13位数字码的条码符号组成,如图 1 所示1。图表1厂商代码后面的5数字为商品制造商的代码,是由该国编码管理局审查批准并登记注册的。位(丄厶)数字为商品代码或商品项目代码,用以表示具体的商品项目 即具有相同包 装和价格的同一种商品。最后一位数字为校验码,用以提高数据的可靠性和校验数据输入的 正确性,校验码的数值按国际物品编码协会规定的方法计算。2.2EAN-13条形码的构成EAN-13条形码的构成如图2所示。左侧左侧数据符中间右侧数据符校验符右侧空白起始符分隔符终止符 宀白6位数字6位数字1位数字空图2典型EAN-13条形码的构成(1 )左、右侧空白:没有任何印刷符号,通常是

5、空白,位于条码符号的两侧。用以提般左侧空白11个模块,右侧空白7个模块。(2 )起始符:条形码符号的第一位字符是起始符,它特殊的条空结构用于识别条形码符号的开始。由3个模块组成。成。(4)中间分隔符:位于条码中间位置的若干条与空,用以区分左、右侧数据符,个模块组成。7个模成。条码校验符:表示校验码的条码字符,用以校验条码符号的正确与否,由块组成。终止符:条形码符号的最后一位字符是终止符,它特殊的条空结构用于识别条形码符号的结束。由3个模块组成。图3条形码图案实例图案分成五个部分,从左至右分别为:起始部分、第一数据部分、中间部分、第二数 据部分和结束部分。(1)起始部分:由11条线组成,从左至右

6、分别是 8条白线,一条黑线,一条白线和一条黑线。(2)第一数据部分:由 42条线组成,是按照一定的算法形成的,包含了左侧数据符(右庁)这些数字的信息。(3)中间部分:由5条线组成,从左到右依次是白线,黑线,白线,黑线,白线。(4)第二数据部分:由 42条线组成,是按照一定的算法形成的,包含了右侧数据符(? -1空)这些数字的信息。(5)结尾部分:由11条线组成,从左至右分别是一条黑线,一条白线和一条黑线,条白线。2.3EAN-13的编码规则EAN-13的编码是由二进制表示的。它的数据符、起始符、终止符、中间分隔符编码见表1 。表1 EAN-13 编码字符二进制表示左侧数据符奇性字符(A组)偶性

7、字符(B组)右侧数据符偶性字符(C组)0123456789起始符101中间分隔 符1010终止符101左侧数据符有奇偶性,它的奇偶排列取决于前置符,所谓前置符是国别识别码的第一2,实际上由表2位 尺,该位以消影的形式隐含在左侧六位字符的奇偶性排列中,这是国际物品编码标准版 的突出特点。前置符与左侧六位字符的奇偶排列组合方式的对应关系见表 这种编码规定可看出,与这种组合方式是一一对应固定不变的。例如:中国的国别识别码为“690” ,因此它的前置符为 “6”,左侧数据符的奇偶排列为 “OEEEOO 3,表示偶字符,“O表示奇字符。表2左侧数据符奇偶排列结合方式前置符左侧数据符奇、偶排列前置符左侧数

8、据符奇、偶排列0OOOOOO5OEEOOE1OOEOEE6OEEEOO2OOEEOE7OEOEOE3OOEEEO8OEOEEO4OEOOEE9OEEOEO2.4EAN-13条形码的校验方法校验码的主要作用是防止条形码标志因印刷质量低劣或包装运输中引起标志破损而造成扫描设备误读信息。作为确保商品条形码识别正确性的必要手段, 条形码用户在标志设计 完成后,代码的正确与否直接关系到用户的自身利益。 对代码的验证,校验码的计算是标志 商品质量检验的重要内容之一,应该谨慎严格,需确定代码无误后才可用于产品包装上。F面是EAN-13条形码的校验码验算方法,步骤如下 3:(1)以未知校验位为第 1位,由右至

9、左将各位数据顺序排队(包括校验码)由第2位开始,求出偶数位数据之和,然后将和乘以 3,得积囚!;由第3位开始,求出奇数位数据之和,得 立;用弘 除以10 ,求得余数,并以10为模,取余数的补码,即得校验位数据值(6)比较第1位的数据值与 C的大小,若相等,则译码正确,否则进行纠错处理。例如,设EAN-13码中数字码为 69 (其中校验码值为 8),该条码字符校验过程为:TV; =3x(7 + 0 + 1 + 341 + 9) = 63 AT, = 5 + 0 + 8 + 0 + 0 + 6 = 19 叽=込 + 叽=82,弘除以10的余数为2,故C = 10- 2 = 8,译码正确。3 EAN

10、-13条形码的生成条形码的生成方法如下3:(1 )由口根据表3产生和 1日心匹配的字母码,该字母码有 6个字母组成,字母限于A和B。表3映射表0AAAAAA5ABBAAB1AABABB6ABBBAA2AABBAB7ABABAB3AABBBA8ABABBA4ABAABB9ABBABA(20AAAAAA5ABBAAB1AABABB6ABBBAA2AABBAB7ABABAB3AABBBA8ABABBA4ABAABB9ABBABA)将 1庁和日“产生的字母码按位进行搭配,来产生一个数字 -字母匹配对。并通 过查表4生成条形码的第一数据部分。表4数字-字母映射表数字-字母匹配对二进制信息数字-字母匹配对

11、二进制信息0A00011010B01001110C11100101A00110011B01100111C11001102A00100112B00110112C11011003A01111013B01000013C10000104A01000114B00111014C10111005A01100015B01110015C10011106A01011116B00001016C10100007A01110117B00100017C10001008A01101118B00010018C10010009A00010119B00101119C11101004条形码识别4.1条码识别的基本原理EAN-13是

12、一种(7, 2)码,即每个字符的总宽度为 7个模块宽,交替由两个条和两个空组成,而每个条空的宽度不超过 4个模块,如图4所示。C1 , Cl图片看不清楚?请点击这里查看原图(大图)。图4 EAN-13条码宽度的定义图4中 56心g 表示当前字符中四个相邻条、空的宽度, T是一个字符的宽度,4满足: 莖e,为整数51234 ;且召,。用兀表示当前字符单位模块的宽度,则 T门。令叫=G化I = 1234。由叫化叫叫的值可以得到编码。例如:若 烧1二“2 = 3临=1牡=2,且条码的叫=3%八叫=1他,且条码的排列为空条空条,则可知当前字符的编码 为0001011,是左侧偶字符 9。由于条码印刷和图

13、像采集设备的限制,在图像采集时边缘部分还存在着半像素问题, 实际扫描后得到的图像会出现一定程度的边缘模糊, 尤其当条码密度较大,条空间距较小时边缘模糊更为明显。边缘出现模糊时,将导致寻找条空边缘时产生一定偏差, 当这个偏差超过半个模块宽度时, 便会出现误码。如果再考虑到流通过程中磨损、 水渍浸泡等因素引起的图像缺陷,在这种情况下如果用边缘检测的方法确定条空序列会大大降低条码的识别率。 本文采用的方法为:以起始模块的中心为起始中心、一个单位模块宽度为间距来检测条空序列。4.2条形码扫描方向的判别为了能够正确地解译条形码,在解译条形码符号所表示的数据之前,需要先进行条形码扫描方向的判别,EAN-1

14、3的起始字符和终止字符的编码结构都是 “ 101” ,只能通过它 进行码制的判别(对于多种条码识别的时候,其它码制的条码起始字符和终止字符都不是EAN-13 码的编码“101 ”)但是不能通过起始字符和终止字符来判别它的扫描方向。由从而结构可知,它的右侧字符为全偶,而左侧字符的奇偶顺序由前置符决定,没有全偶的,可以利用此原理来确定 EAN-13码的扫描方向。如果扫描到的前 6个字符为全偶,即为反向扫描,否则为正向扫描。4.3条形码字符的判别方法从上述条码识别原理知,它的逻辑值可以通过和单位模块比较判别。这种方法对于印刷质量很好、没有缺陷的条码很适用, 但是对于条码印刷质量存在缺陷, 则不能正确

15、地解译。因此本文提出了一种解决此类问题的较好方法,即相似边距离测量方法。2坷和卫爲如下:7;/?2.5/732.5/7 5/743.5nTJT47;2O6EOO4E33E9O2 或 O8E1 或 E7O514O9E2 或 E8O1 或 O7E5=5E6O0E4O3表6 EAN-13条码字符值与归一化值的对应关系(反向译码)(虫爲)23452E6O0E4O33O9E2 或 E8O1 或 O7E54E902 或 08E1 或 E705506E004E3表7和表8分别为正向译码和反向译码时 EAN-13条码编码与归一化值的对应关系。表7 EAN-13条码编码与归一化值的对应关系(正向译码)1 II

16、1 II II 1左奇左偶右偶字付字符字符(旳L化)字符兀吗)值编码编码编码|0001101010011111100100011001011001111001100(5,3 )(2,3)(5,3 )10010011(4,4 )0011011(3,4 )1101100(4,4 )2(3,3 )(4,3)(3,3 )0111101010000110000103(5,5 )(2,5)(5,5 )40100011(2,4 )0011101(5,4 )1011100(2,4 )5(3,5 )(4,5 )(3,5 )0110001011100110011106(2,2 )(5,2 )(2,2 )70101

17、111(4,4 )0000101(3,4 )1010000(4,4 )8(3,3 )(4,3 )(3,3 )0111011001000110001009(4,2 )(3,2 )(4,2 )011011100010011001000000101100101111110100表8 EAN-13条码字符值与归一化值的对应关系(反向译码)1 II 1 II II 1字符左奇左偶右偶字符字符字符(旳L化)字符僅兀吗)值编码编码编码|1011000111001001001111001100110011001100110(2,3)(5,3)(2,3)11100100(3,4)1101100(4,4)0011

18、011(3,4)2(4,3)(3,3)(4,3)1011110100001001000013(2,5)(5,5)(2,5)41100010(5,4)1001110(2,4)0011101(5,4)5(4,5)(3,5)(4,5)1000110100111001110016(2,2)(2,2)(5,2)71111010(3,4)1010000(4,4)0000101(3,4)8(4,3)(3,3)(4,3)1101110100010000100019(3,2)(4,2)(3,2)111011010010000001001110100011101000010111只要由表58可以看出,条形码编码和

19、归一化值在多数情况下呈现一一对应的关系,6中,左确定了归一化值就能确定字符值,但是有四种情况例外。以正向译码为例,在表33,左侧偶字符1,7归一化值均为34,左侧偶字符2, 8归一化值均为43,这几种情况可以根据字符的条空宽度 进一步判别。表9为1728字符标准条空宽度值,其中字符上有“-”的对应条,否则对应空。表9 1728字符标准条空宽度值00110111101100100010000010010110111根据表9中各字符条空宽度的特点可知: 对于左侧奇字符、右侧偶字符 1和7,可通过比较G与6来判别,若0日 U+,则为字符1,反之为7 ;对于左侧奇字符、右对于左侧偶字符1和7 ,可通过

20、比较 G 与G来判别,若 U?,则为字符7 ,反之为1 ;对于左侧偶字符2和8,可通过比较C立与审来判别,若。卫 G,则为字符2,反之为8。“0”进行译码,该采用相似边距离归一化的条码识别方法,当条码质量存在缺陷使得实际测量值和条码 应该具有的理论值有较大偏差时,仍能正确解译。例如对于左侧奇字符测量值进行译码,那么这四个元素的宽度测量值四舍五入取整后分别为3、3、1、1,从而造成译码错误。若采取相似边距离归一化的条码识别方法进行译码,此时& = = =33,r = 7,A7 = 5,A7 =3,由表知字符编码为左侧奇字符“ 0”。可见利用相似边距离归一化的条码识别方法判别字符值,可以得到比较满

21、意的效果。4.4纠错处理采用相似边距离归一化的译码方法能够在一定程度上消除条、空误差对译码识别的影响。当系统误差特别是条码印刷误差较大导致 赛、爲改变时,译码将出错。因此译码软件应具有一定的纠错能力,以减少条空宽度值不精确的影响,提高条码识别率1。纠错主要从以下两方面进行:(1 )如果条码字符的 E或石 在临界位置,当条或空的宽度有误差时,就会导致坷或卫爲的整数值增1或减1。如果和卫爲中只有一个发生错误,则引起该字符的奇偶性、字符值的改变,如果卫石和都出错,则引起该字符值的改变,但奇偶性未变。实际情况中第一种现象出现的概率比第二种情况大得多,因此本文主要对第一种情况进行纠错。由表1和表2可知,

22、右侧字符为全偶字符排列,左侧字符有10种奇偶排列,这11种排列构成有效的排列集合,把所译的字符串奇偶排列与有效的奇偶排列对比,判断是否为排列集合成员。若是,所译的字符串不作任何处理; 若不是,所译码出错,并找出 吗或卫哪个处在临界值,修改它的归一化整数值,这样可实现纠错。(2)当字符数据为2、8、1、7时,由于条码宽度不精确导致误码,即 2判成8、1判成7,或反之。分析这种误码相对于校验位的差值有一定规律,因此可利用此规律进行纠错。由EAN-13校验方法知:当偶数位上有 2错译成8或1错译成7时,计算得到的实译值与校验值差-8或2,反之8错译成2或7错译成1时,计算得到的实译值与校验值差 8或

23、-2 ;当奇数位上有2错译成8或1错译成7时,计算得到的实译值与校验值差 -6或4,反之,8错译成2或7错译成1时,计算得到的实译值与校验值差 6或-4 ;当然别的字符译错也可能出现这些差值,但几率很小, 可以不予考虑。 这样若程序校验没通过, 可加一个 判断,根据差值判断其属于上述哪种情况,找出出错的字符并纠正。5 程序实现5.1 应用 Visual C+ 生成条形码图像5.11 创建工程文件1)打开 VC+ 6.0 ,点击 “File ”菜单的 “New” 菜单项,在出现的界面中选定Projects 栏”,点击 “ MFC APPWizard(exe) ,”工程文件名为 Generator

24、 。按“确定 ” 按纽,进入 MFC APPWizard 。2)在 MFC APPWizard 第一步选择 Single document 文档类型。第二步和第三步按默认方式。 第四步中去掉 “Docking toolbar ” 、“Initial status bar ”、“Printing andprint preview 前面的 V,即不选该三项。然后点击 “ Advanced ”,在出现的界面参见工程文件。参见工程文件。5.1.2 类代码编制3)点击 “View” 菜单的 “ClassWizard ” 菜单项,在出现的界面中, 选择 Class NameCOMMAND 、 ON_ID_

25、 。4)给类 GeneratorView 添加成员变量,参见源程序 Generatorview.h 。5 ) 打开 文件 GeneratorView.h , 增 加 代 码, 参 见源 程序 。 打 开文 件GeneratorView.cpp ,增加代码,参见源程序。(6)点击“View”菜单的“Classwizard ” 菜单项,在出现的界面中,选择Class Name为 “CWelcomeDlg ,增加成员函数, Object Ids 、Messages、Member functions 分 别为: IDOK 、 BN_CLICKED 、 OnOK() 。 (7)点击“View”菜单的“C

26、lasswizard ” 菜单项,在出现的界面中,选择Class Name为: CmainFrame、 wM_CREATE 、 OnCreate() 。8)打开文件 MainFrame.cpp ,增加 “#include welcomeDlg.h ” ,输入代码,参见源程序。9)打开 GeneratorView.cpp 源文件,增加语句 “ #include GiveCodeDlg.h,输”入成员#inc, lude GiveSizeDlg.h , #include , #include 函数代码,参见源程序。5.2 应用 Visual C+ 识别条形码图像5.2.1创建工程文件1)打开 VC+ 6.0 ,点击 “File ”菜单的 “New” 菜单项,在出现的界面中选定按纽,进入 MFC APPwizard 。”,第四步、第五print preview 前面的“y,即不选该三项。然后点击 “ Advanced步和第六步按默认方式。最终生成工程 Recognizor 。(3)修改菜单。修改“

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1