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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(基于VC的一维条形码识别计算机科学与技术嵌入式系统综合设计.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于VC的一维条形码识别计算机科学与技术嵌入式系统综合设计.docx

1、基于VC的一维条形码识别计算机科学与技术嵌入式系统综合设计基于VC的一维条形码识别-计算机科学与技术嵌入式系统综合设计 嵌入式系统综合设计题 目:基于VC的一维条形码识别 学 号: 2x_ 姓 名:xx_ 班 级:12计科A2_ 专 业:计算机科学与技术 指导教师:xxxx_ 日 期: 2015 年12 月20日基于VC的一维条形码识别摘要条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息 量大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。本系统采用Micosoft Visual C+6.0作为系统软件的编程语言和编译

2、环境。设计研究主要分为两部分:一维条形码的预处理和一维条形码图像的特征提取和识别。第一部分首先对采集的EAN-13条码图像进行预处理,图像的预处理主要是条形码灰度图像的二值化处理,良好的图像处理将对后面实现正确译码有至关重要的作用。第二部分就是对预处理后的条码图像进行特征提取和是识别,我们根据条形码的纹理特点和规则,对其进行特征提取和识别。得到条码所表示的文本信息。关键词:图像处理、条形码识别、EAN-13、二值化、VC6.01 绪论1.1 条码技术概述条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期

3、,是继计算机技术应用和发展应运而生的。随着70年代微处理器的问世,标志着“信息化社会”的到来,它要求人们对社会上各个领域的信息、数据实施正确、有效、及时的采集、传递和管理。因此如何代替人的视觉、人的手工操作、或者在复杂的环境中正确、迅速地获取信息并加以识别,成为人们普遍关心和有关人员精心研究的课题。通俗的说条形码是指在浅色衬底上印有深色矩形的线条(也称条码)排列而成的编码,其码条和空白条的数量和宽度按一定的规则(标准)排列。条形码是由一组规则排列的条、空、相应的数字组成。这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。这些条和空可以有各种不同的组合方法,构成不同的图

4、形符号,即各种符号体系,适用于不同的应用场合。条码系统是由条码符号设计、制作及扫描阅读组成的自动识别系统。微电子技术和激光技术的发展使得条码识别系统越来越受到人们的关注。条码是迄今为止最经济、实用的一种自动识别技术。条码技术具有以下几个方面的优点:可靠准确。 数据输入速度快。经济便宜。灵活、实用。 自由度大。 设备简单。易于制作,可印刷,称作为“可印刷的计算机语言”。正因为条码具有上述迅速,准确,廉价,使用方便,适应性强等优点,克服了其他输入方法的不足,所以他在各个行业中的发展可谓突飞猛进,最初应用于物流管理,最引人注目的是pos系统,它使商店的定货管理,盘点,库存管理,库存查询,验货管理,收

5、款等各项工作效率得到极大地提高。目前已经应用到计算机自动化的各个领域,包括质量跟踪,仓储管理,物资管理,票证管理,人流物流管理,图书文献检索,医疗卫生,邮电系统,安全检查等领域。 1.2 Visual C+数字图像处理基础BMP文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,所以称为位图(bitmap)文件,因其文件扩展名位BMP,故称为BMP文件格式,简称BMP文件。BMP位图文件由四个部分组成:位图头文件(Bitmap-file Header)、位图信息头(Bitmap-information-Header)、调色板

6、(Palette)和像素数据(Image Data)。位图头文件:包含文件类型、文件大小和存放信息等信息,结构如下:typedef struct tagBITMAPFILEHEADER WORD bfType; /类型名,必须是0x424D,即字符串“BM”, DWORD bfSize; /文件大小 WORD bfReserved1; /保留字,不考虑 WORD bfReserved2; /保留字,同上 DWORD bfOffBits; /实际位图数据的偏移字节数,即前三个部分长度之和 BITMAPFILEHEADER;位图信息头:包含位图大小、压缩类型和颜色格式等信息,结构如下:typede

7、fstructtagBITMAPINFOHEADERDWORDbiSize;/指定此结构体的长度,为40LONGbiWidth;/位图宽LONGbiHeight;/位图高WORDbiPlanes;/平面数,为1WORDbiBitCount/采用颜色位数,可以是1,4,8,24DWORDbiCompression;/压缩方式,0为不压缩 DWORDbiSizeImage;/实际位图数据占用的字节数 LONGbiXPelsPerMeter;/X方向分辨率LONGbiYPelsPerMeter;/Y方向分辨率DWORDbiClrUsed;/使用的颜色数DWORDbiClrImportant;/重要颜

8、色数,如果为0,则表示所有颜色都是重要的BITMAPINFOHEADER;调色板:Visual C+中,调色板实际上定义为一个数组,共有biClrUsed个元素,每个元素类型是一个RGBQUAD结构,其定义如下:typedefstructtagRGBQUADBYTErgbBlue;/该颜色的蓝色分量BYTErgbGreen;/该颜色的绿色分量BYTErgbRed;/该颜色的红色分量BYTErgbReserved;/保留值RGBQUAD;像素数据:紧跟在调色板之后的是图像数据字节阵列,用BYTE数据结构存储。图像的每一扫描行由表示图像的连续像素字节组成,每一行的字节数取决于图像图像的颜色数和用像

9、素表示的图像宽度。扫描行是由底向上存储的,这就是说,数据存放是从下到上,从左到右。从文件中最先读到的图像数据是位图最下面的左边的第一个像素,然后是左边第二个像素,而最后读到的图像数据是位图最上面一行的最右边的一个像素。1.3 文本研究意义及内容1.3.1 研究意义条形码技术主要研究如何用条码标识信息、并将条形码表示的信息转换成计算机可识读的语言,以实现自动输入、自动识读、自动统计.在先进的工业国家里,条码技术作为一种信息处理技术己成为社会化产物,不仅应用于生产过程,而且也应用于管理过程。在我国条码技术起步比较晚,但它的发展非常迅速,己被广泛用于工业、商业、图书出版、医疗卫生等各行各业。随着全球

10、经济贸易体系的形成,将被更广泛用于其它领域。现在,它已变成商品进入国际市场的通行证。图像处理识读方法是首先对条码图像进行处理,然后利用统计方法,根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,这样将大大降低条码印刷质量以及条码污染等各种因素的干扰,从而有效地提高条码的识读率。1.3.2 研究内容本文所研究的是基于图像处理方式的条码的识别工作,具体工作如下: 在Visual C+ MFC框架下,利用工具Class Wizard添加图像处理类实现位图文件的读取及打开;对一维条形码图像的预处理(二值化)编程;利用一维条形码的纹理特点和规则,对其进行特征提取和识别的算法研究与实现。

11、2 一维条形码技术2.1 一维条形码简介条码由一组规则排列的条,空及相应的字符组成。条码的信息靠条和空的不同宽度不同位置来传递的,信息量的大小事由条码的宽度和印刷的精度来决定的,条码越宽,包容的条和空越多,传递的信息量也越大,条码印刷的精度越高单位长度内可以容纳的条空也越多,传递的信息量也越大。常见的条形码是由反射率相差很大的黑条和白条排成平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、类别等许多信息。一般情况下,条码组成结构如下:起始边界和终止边界:均为“静态区”,是没有字元、条纹的空白区。开始读取信号:放在条码数据信号的第一个字元之前,是一个空白团的特殊条

12、码,用来辨别条码数据符号的开始信号。数据信号:数据信息的来源。终止字元符号:也是一种特殊条纹与空白图案,告知解码器该数据已经输送完毕。检查和字元:位于数据信息码之后,终止符号之前,检查解码后的结果正确与否。2.2 EAN-13码简述2.2.1 EAN-13码的构造European Article Number(EAN)是欧洲物品编码的缩写,其中,共计13位代码的EAN-13是比较通用的一般终端产品的条形码协议和标准,主要应用于超级市场和其他零售业,一次这种是日常比较常见的。代码前3位是国家代码,中间4位是生产商代码,后5位是产品代码,最后一位是自动生成的校验码。EAN-13商品条码由左侧空白区

13、、起始符、左侧数据符、中间分隔符、右侧数据符、校验符、终止符、右侧空白区及供人识别字符组成,共有113个模块,如图2.1所示:图2.1 EAN-条码符号结构1)左侧空白区:位于条码符号起始符左侧,无印刷符号且与空的颜色相同的区域。其最小宽度为11个模块宽。2)起始符:位于条码符号左侧,表示信息开始的特殊符号,由3个模块组成。3)左侧数据符:介于起始符和中间分隔符之间的表示信息的一组条码字符。表示前缀码(不包含前置码)和厂商代码,共6位数字。由42个模块组成。4)中间分隔符:位于条码符号的中间位置,是平分条码符号的特殊符号,由5个模块组成。5)右侧数据符:中间分隔符右侧的一组选自C子集的条码字符

14、,表示5位商品代码,又35个模块组成。6)校验符:最后一个条码字符,选自C子集,由7个模块组成,表示一个校验字符。7)终止符:位于条码符号右侧,表示信息结束的特殊符号,由3个模块组成。8)右侧空白区:在终止符之外的无印刷符号且与空的颜色相同的区域,其最小宽度为7个模块。2.2.2 EAN-13码的编码规则表2.2说明了EAN-13条码中的每个数位应该如何编码,这要取决于这个数位位于条码的哪半边(左边还是右边)。在这种情况下,一个左手边数位的编码(奇数性还是偶数性)将取决于数制码的第一个数位的值(见下表中奇偶性编码)。表2.2 EAN字符集编码表观察发现:一个EAN-13字符使用7个元素来描述,

15、包含2个条和2个空间。任何条或空间的长度都不会超过4个元素。条码左手边的所有字符总是以0(空间)开始的,而条码右手边的所有字符都是以1(条)开始的。如果把1变成0,把0变成1,那么“右手边”编码模式和“左手边奇数”编码模式是完全相同的。“左手边偶数”编码模式是基于“左手边奇数”编码模式的。为了得到偶数编码,可以按照如下步骤对左手边编码模式进行操作:1)把所有的1变成0,0变成1。2)将得到的结果编码反着读(从右到左)就得到了“左手边偶数”编码模式。表2.3说明了条码左手边每个字符按照哪种奇偶性进行编码。奇偶性取决于EAN-13值得第一个数位。例如,我们的CD的EAN-13值是007567816

16、4125。在这个条码中,数制码的第一个数位就是第一个“0”,所以,奇偶性就应该遵循下表中的数字0一行:表2.3 EAN奇偶性编码表观察发现:第二个数制位总是按照奇数性进行编码(这在解码时很重要)。一个UPC-A条码的第一个数制位总是0,因此,全部使用奇数性。所有EAN-13符号(那些第一个数制位不是0的)始终有3个左手边字符采用偶数性编码,有2个采用奇数性编码。这两个表是EAN-13编码的关键和核心,并且兼容现有的UPC-A符号。2.2.3 EAN-13编码的校验方法校验码的主要作用是防止条形码标志因印刷质量低劣或包装运输中引起标志破损而造成扫描设备误读信息。作为确保商品条形码识别正确性的必要

17、手段,条形码用户在标志设计完成后,代码的正确与否直接关系到用户的自身利益。对代码的验证,校验码的计算是标志商品质量检验的重要内容之一,应该谨慎严格,需确定代码无误后才可用于产品包装上。 下面是EAN-13条形码的校验码验算方法,步骤如下:(1)以未知校验位为第1位,由右至左将各位数据顺序排队(包括校验码);(2)由第2位开始,求出偶数位数据之和,然后将和乘以3,得积;(3)由第3位开始,求出奇数位数据之和,得;(4)将和相加得和;(5)用除以10,求得余数,并以10为模,取余数的补码,即得校验位数据值 ;(6)比较第1位的数据值与C的大小,若相等,则译码正确,否则进行纠错处理。 3 一维条形码

18、的识别3.1 图像的预处理3.1.1 图像的二值化处理灰度化二值化,为实现数字图像的阈值变换提供前提条件,要将256色位图转变为灰度图,灰度与RGB值之间的关系为:Y=0299R+0587G+O114B二值化是利用点运算中的阈值变换理论将灰度图转化为二值图像。二值化中阈值T的选择是关键,在整幅图中,我们最关心的是条码,条码是由条空(黑白)组成的,又因为本实验中所用图像为256色位图,故采用双峰法得到阈值T,对其阀值设置为128,此阈值可以有效地把条码的条空区分出来。下图为实验中二值化图像: 图3.2 二值化后的条码图像部分代码如下:void GrayTrans:BinaryImage(int

19、threshold) if(m_pImgDataOut!=NULL) delete m_pImgDataOut; m_pImgDataOut=NULL; if(m_lpColorTableOut!=NULL) delete m_lpColorTableOut; m_lpColorTableOut=NULL; m_nBitCountOut=8; m_nColorTableLengthOut=ComputeColorTabalLength(m_nBitCountOut); if(m_nColorTableLengthOut!=0) m_lpColorTableOut=new RGBQUADm_nC

20、olorTableLengthOut; for(int i=0; im_nColorTableLengthOut;i+) m_lpColorTableOuti.rgbBlue=i; m_lpColorTableOuti.rgbGreen=i; m_lpColorTableOuti.rgbRed=i; m_lpColorTableOuti.rgbReserved=0; int pixelByteIn=3; int lineByteIn=(m_imgWidth*pixelByteIn+3)/4*4; m_imgWidthOut=m_imgWidth; m_imgHeightOut=m_imgHei

21、ght; int lineByteOut=(m_imgWidth*m_nBitCountOut/8+3)/4*4; m_pImgDataOut=new unsigned charlineByteOut*m_imgHeight; int m,n; for(m=0;mm_imgHeight;m+) for(n=0;nm_imgWidth;n+) *(m_pImgDataOut+m*lineByteOut+n)=0.11*(m_pImgData+m*lineByteIn+n*pixelByteIn+0) +0.59*(m_pImgData+m*lineByteIn+n*pixelByteIn+1)

22、+0.30*(m_pImgData+m*lineByteIn+n*pixelByteIn+2)+0.5; int i,j; for(i=0;im_imgHeight;i+) for(j=0;jm_imgWidth;j+) if(*(m_pImgDataOut+i*lineByteOut+j)threshold) *(m_pImgDataOut+i*lineByteOut+j)=0; else *(m_pImgDataOut+i*lineByteOut+j)=255; 3.1.2 条码图像的提取图像提取是把图像中的条码部分割出来,得出宽度序列,用于后续的条码译码。通过水平方向和垂直方向的直方图统

23、计,寻找二值化后图像条码区域,来搜索得到条码图像宽度序列。为下一步的字符识别做好准备。3.2条码图像的字符识别EAN-13是一种(7, 2)码,即每个字符的总宽度为7个模块宽,交替由两个条和两个空组成,而每个条空的宽度不超过4个模块,如图4所示。图3.1 EAN-13条码宽度的定义图3.1中表示当前字符中四个相邻条、空的宽度,是一个字符的宽度,满足:, 为整数;且。用表示当前字符单位模块的宽度,则。令,。由的值可以得到编码。例如:若,且条码的排列为条空条空,则可知当前字符的编码为1000100,是右侧偶字符7。,且条码的排列为空条空条,则可知当前字符的编码为0001011,是左侧偶字符9。识别

24、结果如下图:图3.2 EAN-13条码识别结果4 结论在对条码图像作相应的图像预处理之后,对得到的二值条码图像利用上述条码识别算法在vc6.0软件环境下编写了相应的软件程序。通过多次实验,识别效果很好,误码率低,大大提高了条码的识别率。相信对其它一维条码图像识别具有一定的理论及实践参考价值。 尽管如此,设计中也遇到了很多的问题有待进一步的解决和探索研究。图像处理是条码识别的重要基础。本设计只是对质量较好的条码图像进行一般性处理,但实际中的图像并都不是这么理想,例如条码污染、条码断裂、条码瑕疵等。这些需要进行滤波、去噪等处理过程才能达到译码的目的。如果条码被污染了我们要进行修复,条码发生几何畸变

25、我们要进行图像矫正等等。只有考虑到更多的方面才能提高系统的性能和适应性,对一定质量范围内的条码图像都能进行有效的处理。其次,对软件程序的精简也是我所追求的,希望通过最精练的语句实现所需要的功能。程序中很多的语句还有进一步改进的空间,这样既能精简语句,使语句简明易懂,也能提高程序整体的执行速度,提高条码识别效率。参考文献1郑莉, 张瑞丰等. C+语言程序设计M. 北京:清华大学出版社, 2003.2谭浩强. C程序设计M. 北京:清华大学出版社,2005.3杨淑莹. 图像识别与项目实践:VC+、MATLAB技术实现M.北京:电子工业出版社,2014年5月4 冯伟兴,贺波,王臣业等.Visual C+数字图像模式识别技术详解M.北京:机械工业出版社,3013.1.15费振原条码技术及应用,上海:上海科学技术文献出版社,1992.96刘志海,条形码技术及程序设计M,重庆:重庆大学出版社,1991。7王雅静,基于图像处理的EAN-13条码识别算法J,山东理工大学学报, 2005,第19卷(第4期):3-5。8赵素霞,基于数字图像处理方式的EAN-13条码识读算法研究C,山东: 山东大学, 2005,48-60。9苏彦华,Visual C+数字图像识别技术典型案例,北京:人民邮电出版 社,2004。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2