资源描述:
《一维条码识别系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第21卷增刊成都信息工程学院学报Vol.21Suppl.2006年12月JOURNALOFCHENGDUUNIVERSITYOFINFORMATIONTECHNOLOGYDec.2006文章编号:167121742(2006)增20073205一维条码识别系统的设计与实现3钟书成,陈晓红(成都信息工程学院软件工程系,四川成都610225)摘要:一维条码识别系统是服务于手机识别系统的后台处理程序。系统完成对手机拍摄到的条码图片进行滤波、阈值分割、二值化、上下边沿检测、码字识别等功能。系统不仅能对正常的条码(EAN213码)图片进行正确识别,而且还能对受到轻度污染和残缺的图
2、片进行识别。关键词:一维条码识别系统;条码识别;图像处理;EAN213码中图分类号:TP31115文献标识码:A1引言目前,用手机来进行条码的扫描这门技术在国外已经得到了很好的发展。在美国、日本等国家,通过手机识别条码信息,已经是屡见不鲜的事情。人们在超市通过手机扫描购买商品的条码,然后将通过无线上网可以方便的购物;在电影院手机购买电影票,进场时只需将扫描的条码信息通过蓝牙发送给门口检查处,就能通过,方便又快捷。许多报纸也使用了条形码,如果谁要看某条消息的详细情况,只要用手机扫描这条消息的条码,手机就自动搜索关于这条消息的相关信息。上述功能都和以上所说的对图片进行识别的
3、系统密切相关。而在国内这种技术还不曾得到发展,所以手机来识别条形码还是一门比较新的技术。本文将研究一种基于图像处理的一维条码的识别方法。该方法使用手机的CCD摄像头摄取EAN213条码图像,并将图像以bmp文件形式输入计算机,再对条码图像预处理(中值滤波、阈值分割、二值化)得到二值化的条码图像,然后对二值化的条码图像,进行上下边沿检测、码字识别。2EAN213编码特点EAN213码是一种(7,2)码,即每个字符的总宽度为7个模块,交替由两个条两个空组成,而每个条空的宽度不超过4个模块。一个EAN213码包含13个字符,它由起始符、终止符、中间分隔符、左侧数据符、右侧数据
4、符、校验符组成,如图1所示。左侧数据符有奇、偶排列,右侧数据符为偶排列。由于EAN213码的整个图片应包含1个起始符,1个中间分割符,1个终止符和12个码字区的模块数为95个,条空个数为59图1EAN213码个。左边的码字组成方式是“空条空条”,右边的码字组成方式是“条空条空”。若将黑条模块用二进制的“1”表示,白条模块用二进制的“0”表示,则数据字符的编码图案有30种,如表1所示。EAN213码的第13位不进行编码,其数值隐含在左侧数据符的奇偶排列中,称为前置符。左侧数据符奇偶性与前置符的对应关系如表2所示。3一维条码识别系统框架系统的运行过程是从读入图片到识别图片的
5、过程,所以在分析它的功能的时候就按运行的过程进行模块划分。系统的功能模块见图2。3成都信息工程学院软件工程系软件工程专业2002级4班©1994-2008ChinaAcademicJournalElectronicPublishingHouse.Allrightsreserved.http://www.cnki.net74成都信息工程学院学报第21卷表1EAN213码条码图案表2EAN213码前缀码前置码(附加文字)O和E组合前置码(附加文字)O和E组合0OOOOOO5OEEOOE1OOEOEE6OEEEOO2OOEEOE7OEOEOE3OOEEEO8OEOEEO4OE
6、OOEE9OEEOEO注:E表示偶排列,O表示奇排列读文件模块:内存管理、文件的读入。系统单独设计一个模块对内存管理。在以后读文件、图像处理的过程中使用的内存都将由本模块的函数进行分配和回收,这样就有效的提高了内存的管理。图像处理模块:包括图像的中值滤波、阈值分割、二值化,模块主要完成对图像处理的过程。图片在拍照的时候往往会受到周围环境的影响,拍到的图片一般都有噪点;其次,没经过处理的图片在识别的时候极端不方便。经过图像的中值滤波,图片去除了噪点。为了更利于识别,将求出这张图片的一个阈值,图2系统详细功能模块图将图片的每一个像素的值与这个阈值相比较,最终将图片转换成像素
7、值只有0和1的图片。条码识别模块:包括上下边沿检测、码字识别。因为某些图片受到光的影响,拍摄出来的图片某些部分的条码已经严重破损,这些部位都是不适合于识别,或者识别之后结果也是错误的。所以在识别前要选取一段比较适合于识别的区域,找到这个区域的上下边沿,然后系统将在这个区域进行条码的识别,具体过程是求每个条和空的宽度,然后根据宽度和条码的组成规则识别出码字信息。4主要算法介绍411中值滤波中值滤波是一种非线性信号处理方法,通过从图像中的某个采样窗口取图3中值滤波采样窗口出奇数个数据进行排序得出结果。中值是指窗口中奇数个数据按大小排列后处于中