嵌入式系统综合设计题目:基于VC的一维条形码识别学号:20124830248____姓名:张文天______班级:12计科A2_____专业:计算机科学与技术指导教师:侯东良______日期:2015年12月20日基于VC的一维条形码识别摘要条码技术是如今应用最广泛的识别和输入技术之一,由于其包含的信息量大,识别错误率低而在各个方面得到很大的重视。它发展迅速并被广泛应用于于工业、商业、图书出版、医疗卫生等各行各业。本系统采用MicosoftVisualC++6.0作为系统软件的编程语言和编译环境。设计研究主要分为两部分:一维条形码的预处理和一维条形码图像的特征提取和识别。第一部分首先对采集的EAN-13条码图像进行预处理,图像的预处理主要是条形码灰度图像的二值化处理,良好的图像处理将对后面实现正确译码有至关重要的作用。第二部分就是对预处理后的条码图像进行特征提取和是识别,我们根据条形码的纹理特点和规则,对其进行特征提取和识别。得到条码所表示的文本信息。关键词:图像处理、条形码识别、EAN-13、二值化、VC6.0目录1绪论...................................................31.1条码技术概述................................................31.2VisualC++数字图像处理基础..................................41.3文本研究意义及内容..........................................51.3.1研究意义...............................................51.3.2研究内容...............................................62一维条形码技术.........................................62.1一维条形码简介..............................................62.2EAN-13码简述................................................72.2.1EAN-13码的构造........................................72.2.2EAN-13码的编码规则....................................82.2.3EAN-13编码的校验方法.................................103一维条形码的识别......................................103.1图像的预处理...............................................103.1.1图像的二值化处理......................................103.1.2条码图像的提取........................................123.2条码图像的字符识别..........................................124结论..................................................13参考文献.................................................11绪论1.1条码技术概述条码技术是在计算机的应用实践中产生和发展起来的一种自动识别技术,条码应用技术就是应用条码系统进行的信息处理技术。条码技术的研究始于20世纪中期,是继计算机技术应用和发展应运而生的。随着70年代微处理器的问世,标志着“信息化社会”的到来,它要求人们对社会上各个领域的信息、数据实施正确、有效、及时的采集、传递和管理。因此如何代替人的视觉、人的手工操作、或者在复杂的环境中正确、迅速地获取信息并加以识别,成为人们普遍关心和有关人员精心研究的课题。通俗的说条形码是指在浅色衬底上印有深色矩形的线条(也称条码)排列而成的编码,其码条和空白条的数量和宽度按一定的规则(标准)排列。条形码是由一组规则排列的条、空、相应的数字组成。这种用条、空组成的数据编码可以供机器识读,而且很容易译成二进制数和十进制数。这些条和空可以有各种不同的组合方法,构成不同的图形符号,即各种符号体系,适用于不同的应用场合。条码系统是由条码符号设计、制作及扫描阅读组成的自动识别系统。微电子技术和激光技术的发展使得条码识别系统越来越受到人们的关注。条码是迄今为止最经济、实用的一种自动识别技术。条码技术具有以下几个方面的优点:可靠准确。数据输入速度快。经济便宜。灵活、实用。自由度大。设备简单。易于制作,可印刷,称作为“可印刷的计算机语言”。正因为条码具有上述迅速,准确,廉价,使用方便,适应性强等优点,克服了其他输入方法的不足,所以他在各个行业中的发展可谓突飞猛进,最初应用于物流管理,最引人注目的是pos系统,它使商店的定货管理,盘点,库存管理,库存查询,验货管理,收款等各项工作效率得到极大地提高。目前已经应用到计算机自动化的各个领域,包括质量跟踪,仓储管理,物资管理,票证管理,人流物流管理,图书文献检索,医疗卫生,邮电系统,安全检查等领域。1.2VisualC++数字图像处理基础BMP文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,所以称为位图(bitmap)文件,因其文件扩展名位BMP,故称为BMP文件格式,简称BMP文件。BMP位图文件由四个部分组成:位图头文件(Bitmap-fileHeader)、位图信息头(Bitmap-information-Header)、调色板(Palette)和像素数据(ImageData)。位图头文件:包含文件类型、文件大小和存放信息等信息,结构如下:typedefstructtagBITMAPFILEHEADER{WORDbfType;//类型名,必须是0x424D,即字符串“BM”,DWORDbfSize;//文件大小WORDbfReserved1;//保留字,不考虑WORDbfReserved2;//保留字,同上DWORDbfOffBits;//实际位图数据的偏移字节数,即前三个部分长度之和}BITMAPFILEHEADER;位图信息头:包含位图大小、压缩类型和颜色格式等信息,结构如下:typedefstructtagBITMAPINFOHEADER{DWORDbiSize;//指定此结构体的长度,为40LONGbiWidth;//位图宽LONGbiHeight;//位图高WORDbiPlanes;//平面数,为1WORDbiBitCount//采用颜色位数,可以是1,4,8,24DWORDbiCompression;//压缩方式,0为不压缩DWORDbiSizeImage;//实际位图数据占用的字节数LONGbiXPelsPerMeter;//X方向分辨率LONGbiYPelsPerMeter;//Y方向分辨率DWORDbiClrUsed;//使用的颜色数DWORDbiClrImportant;//重要颜色数,如果为0,则表示所有颜色都是重要的}BITMAPINFOHEADER;调色板:VisualC++中,调色板实际上定义为一个数组,共有biClrUsed个元素,每个元素类型是一个RGBQUAD结构,其定义如下:typedefstructtagRGBQUAD{BYTErgbBlue;//该颜色的蓝色分量BYTErgbGreen;//该颜色的绿色分量BYTErgbRed;//该颜色的红色分量BYTErgbReserved;//保留值}RGBQUAD;像素数据:紧跟在调色板之后的是图像数据字节阵列,用BYTE数据结构存储。图像的每一扫描行由表示图像的连续像素字节组成,每一行的字节数取决于图像图像的颜色数和用像素表示的图像宽度。扫描行是由底向上存储的,这就是说,数据存放是从下到上,从左到右。从文件中最先读到的图像数据是位图最下面的左边的第一个像素,然后是左边第二个像素,而最后读到的图像数据是位图最上面一行的最右边的一个像素。1.3文本研究意义及内容1.3.1研究意义条形码技术主要研究如何用条码标识信息、并将条形码表示的信息转换成计算机可识读的语言,以实现自动输入、自动识读、自动统计.在先进的工业国家里,条码技术作为一种信息处理技术己成为社会化产物,不仅应用于生产过程,而且也应用于管理过程。在我国条码技术起步比较晚,但它的发展非常迅速,己被广泛用于工业、商业、图书出版、医疗卫生等各行各业。随着全球经济贸易体系的形成,将被更广泛用于其它领域。现在,它已变成商品进入国际市场的通行证。图像处理识读方法是首先对条码图像进行处理,然后利用统计方法,根据相似边距离来判别条码字符,再通过译码、校验、纠错处理来识读条码,这样将大大降低条码印刷质量以及条码污染等各种因素的干扰,从而有效地提高条码的识读率。1.3.2研究内容本文所研究的是基于图像处理方式的条码的识别工作,具体工作如下:在VisualC++MFC框架下,利用工具ClassWizard添加图像处理类实现位图文件的读取及打开;对一维条形码图像的预处理(二值化)编程;利用一维条形码的纹理特点和规则,对其进行特征提取和识别的算法研究与实现。2一维条形码技术2.1一维条形码简介条码由一组规则排列的条,空及相应的字符组成。条码的信息靠条和空的不同宽度不同位置来传递的,信息量的大小事由条码的宽度和印刷的精度来决定的,条码越宽,包容的条和空越多,传递的信息量也越大,条码印刷的精度越高单位长度内可以容纳的条空也越多,传递的信息量也越大。常见的条形码是由反射率相差很大的黑条和白条排成平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、类别等许多信息。一般情况下,条码组成结构如下:起始边界和终止边界:均为“静态区”,是没有字元、条纹的空白区。开始读取信号:放在条码数据信号的第一个字元之前,是一个空白团的特殊条码,用来辨别条码数据符号的开始信号。数据信号:数据信息的来源。终止字元符号:也是一种特殊条纹与空白图案,告知解码器该数据已经输送完毕。检查和字元:位于数据信息码之后,终止符号之前,检查解码后的结果正确与否。2.2EAN-13码简述2.2.1EAN-13码的构造EuropeanArticleNumber(EAN)是欧洲物品编码的缩写,其中,共计13位代码的EAN-13是比较通用的一般终端产品的条形码协议和标准,主要应用于超级市场和其他零售业,一次这种是日常比较常见的。代码前3位是国家代码,中间4位是生产商代码,后5位是产品代码,最后一位是自动生成的校验码。EAN-13商品条码由左侧空白区、起始符、左侧数据符、中间分隔符、右侧数据符、校验符、终止符、右侧空白区及供人识别字符组成,共有113个模块,如图2.1所示:图2.1EAN-条码符号结构1)左侧空白区:位于条码符号起始符左侧,无印刷符号且与空的颜色相同的区域。其最小宽度为11个模块宽。2)起始符:位于条码符号左侧,表示信息开始的特殊符号,由3个模块组成。3)左侧数据符:介于起始符和中间分隔符之间的表示信息的一组条码字符。表示前缀码(不包含前置码)和厂商代码,共6位数字。由42个模块组成。4)中间分隔符:位于条码符号的中间位置,是平分条码符号的特殊符号,由5个模块组成。5)右侧数据符:中间分隔符右侧的一组选自C子集的条码字符,表示5位商品代码,又35个模块组成。6)校验符:最后一个条码字符,选自C子集,由7个模块组成,表示一个校验字符。7)终止符:位于条码符号右侧,表示信息结束的特殊符号,由3个模块组成。8)右侧空白区: