版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第II页共32页目录TOC\o"1-3"\h\u6930 16637 135 13617 2101031.2条形码的编码方法 316882 328094 3114131.3Code128条形码 319852 39629 312858 4155891.4条形码识别 832395 931510 1119890 125908 15270031.5总结 16程序部分是整个系统的大脑,管控着各个部分的协调配合,其中主要便是在运动过程中识别条形码,并且根据条形码识别的内容进行进而控制舵机的旋转,达到分拣的目的。本章通过对Code128条形码的编码原理进行认识,并且通过抓拍物品在运输过程中的图形,对图像进行灰度处理、闭运算等一些列操作对条形码进行定位,得到可以进行条形码识别的图像后,计算并比较条与空宽度的大小,确定基准模块,最终对比条形码编码表分析出条形码所包含的内容。本文主要为智能分拣系统的设计,而智能体现在能够识别货物信息,根据货物信息进行智能分拣。单片机如何识别货物的信息呢?本文利用的是摄像头识别条形码,进而获得物品信息的方法。条形码简称条码,英文名称为barcode,是产品的身份识别代码,也可以称为产品的“身份证”。条形码由全球GS1(Globestandard1)标准委员会定制的全球的统一性的标准,然而,每个国家都会对其进行细致的管理,我们国家的条形码是由国家物品编码中心指定的国家应用标准和应用规范。我国产品上市销售,都需要进行申请条形码(EAN-13),表示是一种由13个数字组成的条形码类型。每个国家都是不同的,例如美国使用UPC-A\E类条形码。条形码又称为一维条形码,一般用在产品标签、物流管理、图书管理、医药食品等领域。EAN-13条码,是当今世界使用的最广泛的条形码,一共由13个数字组成,第13个数字是校验数字,内容是根据前12个数字计算得出。还有一种EAN-8条形码,是EAN-13条码的缩短型。如下图所示。图9:EAN-13与EAN-8条形码根据应用目的的不同,可以大致可以分为商品条形码、物流条形码、图书管理条形码。主要区分一下物流条形码和商品条形码。标志的意义不同:商品条形码一般包括商品的产品名称、生产日期、保质期、生产地等,一般情况下是商品的唯一标识。物流条形码一般是储藏运输单元的唯一标识,一般情况下表示多个或者多种商品的集合。物流条形码一般贴于商品的外包装,供运输、分拣、存储等作业使用。两种条形码服务的领域不同:商品条形码使用于整个商品的最后一个环节,也就是销售环节。而物流条形码是使用于整个商品除了销售的各个环节。信息容量不同:商品条形码一般由13位或者8位数字及符号组成。商品条形码的长度固定、内容少。物流条形码一般是Code128条码,可包含物品的体积、重量、生产日期、批号、发货地、目的地等信息,包含的信息多。标准维护不同:商品条码是国际通用标准化商品的唯一识别码,是零售业的国际语言,更新较少,方便维护。而Code128条码大多是企业工厂自己用或者同行业合作伙伴对各种信息的不断增加应运而生,维护起来相对比较不方便。1.2条形码的编码方法条码的编码一般按照唯一性、无含义性、稳定性的原则来进行编码。通常情况下,有模块组合法和宽度调节法两个编码方法。模块组合法又称为连续性条码,EAN条码、UPC条码和93码均使用模块组合法。模块组合法指一个标准宽度的条表示“1”,一个标准宽度的空表示“0”。然后根据“1”和“0”的顺序组合,进而得到条形码所包含的内容。宽度调节编码法是指条与空分为窄单元与宽单元,窄的条或空表示逻辑值“0”,宽的条或空表示逻辑值“1”。通常来说,宽单元是窄单元的2~3倍。39条形码、库德巴条形码和交叉25条形码都属于宽度调节编码法编制的条形码。1.3Code128条形码本文所识别的条形码类型为Code128条形码,Code128条形码在物流、仓储行业应用相对广泛,故详细了解Code128条形码。Code128A字符集包含大写字母、常用符号、数字以及一些控制类的字符Code128B字符集包含大写、小写字母、常用符号、数字Code128C字符集为纯数字集起始位+数据位+校验位+终止位起始位:211214数据位:开始位到校验位中间终止位:2331112图10:Code128条形码如上图所示,从左往右依次读取,黑色的为条,白色的为空。根据宽度的不同,从细到粗依次赋予1、2、3、4。如图2所示,按粗细值阅读条码为“2112142133111121331221321311231123131221323123111321313123111131412331112”。Code128条形码终止序列总是为“2331112”,起始序列为“211214”,为Code128B条形码起始序列。除去起始序列与终止序列,剩余其他为6个数字一组,即为“|213311|112133|122131|131123|112313|122132|312311|132131|312311|113141”其中,最后一组数字“113141”为校验序列,剩余其他为数据序列。然后在根据Code128编码表得到条形码所包含的内容,其内容为“TJ-BD-ZLZ”。Code128编码表如下表所示:IDCode128ACode128BCode128CBandCodeSPSP0212222!!1222122““2222221##3121223$$4121322%%5131222&&6122213‘‘7122312((8132212))9221213**10221312++11231212,,12112232--13122132..14122231//151132220016123122111712322122182232113319221132442022123155212132126622223112772331213188243112229925321122::26321221;;27312212<<28322112==29322112>>30212123??31212321@@32232121AA33111323BB34131123CC35131321DD36112313EE37132113FF38132311GG39211313HH40231113II41231311JJ42112133KK43112331LL44132131MM45113123NN46113321OO47133121PP48313121QQ49211331RR50231131SS51213113TT52213311UU53213131VV54311123WW55311321XX56331121YY57312113ZZ58312311[[59332111\\60314111]]61221411^^62431111__63111224NUL`64111422SOHa65121124STXb66121421ETXc67141122EOTd68141221ENQe69112214ACKf70112412BELg71122114BSh72122411HTi73142211LFj74142211VTk75241211FFl76221114CRm77413111SOn78241112SIo79134111DLEp80111242DC1q81121142DC2r82121241DC3s83114212DC4t84124112NAKu85124211SYNv86411212ETBw87421112CANx88421211EMy89212141SUBz90214121ESC{91412121FS|92111143GS}93111341RS~94131141USDEL95114113FNC3FNC396114311FNC2FNC297411113SHIFTSHIFT98411311CODECCODEC99113141CODEBFNC4CODEB114131FNC4CODEACODEA311141FNC1FNC1FNC1411131StartAStartAStartA211412StartBStartBStartB211214StartCStartCStartC211232StopStopStop2331112表1:Code128编码表1.4条形码识别条形码识别是一个相对较为复杂的过程,需要经过很多步骤才能够达到提取内容并对其进行识别的工作。首先需要摄像头捕捉图像,需要在摄像头能够捕捉到的所有图像中进行灰度处理,灰度图片如图11所示。处理成为灰度图像后进行轮廓定位,进而定位到条形码,之后通过条与空的宽度得到基准模块,通过计算每个条与空中基准模块的个数,得到数字,对比编码表最终完成译码任务。参照编码表解码得到数字轮廓定位灰度处理参照编码表解码得到数字轮廓定位灰度处理译码成功译码成功图12:条形码识别流程图摄像头定位条形码需要深度考虑条形码的特性,条形码在竖直方向上,具有相同长度的条或空,在水平方向上,黑色的条与白色的空相间配合组成。但是在时间识别扫描的过程中,图像中可能并不只有条形码,可能包含其他的影响因素,如图13所示,图中不但包含条形码,还包含有二维码。扫描到该图像后,对其进行灰度化处理[19],处理结果如下图所示。在一幅模糊的图像中,条形码的周围轮廓灰度的变化不强烈,因此,图像中的层次感并不明显,而在清楚的图像中,条形码的边缘轮廓灰度变化强烈,图像中的层次感明显。因此便使用梯度来定义图像的清楚与否。在该灰度图像中,分别计算X与Y方向的梯度,再用X方向的梯度减去Y方向的梯度,目的是既能够保留X方向的梯度特征,又能够减少Y方向梯度的干扰。但是在该图中,二维码对于条形码的定位产生了一定的影响,但是二维码的空间漏洞比条形码多,所以,在对其进行模糊化,并且二值化,如图15所示。二维码对条形码的影响,在一定程度上有所减少,但是,条形码中出现了黑色的缝隙[20],该缝隙不利于条形码的定位完整的区域,因此进行闭运算来除去黑色的缝隙。算子根据高度于宽度的特征处理黑色的缝隙。处理结果如图16所示。图16虽然条形码中黑色的缝隙明显减少,但是二维码仍然占据整个图像当中很大一部分,对条形码的定位有较大的影响。利用多次膨胀与腐蚀,膨胀的目的使断开二维码的链接,腐蚀使将二维码部分进行腐蚀。结果如图17所示。图17:多次膨胀后的图像到此时对条形码的定位的影响就已经微乎其微了,然后就可以计算图像中每个轮廓的面积,并对面积大小进行比较,选出面积最大的轮廓即为条形码的轮廓。图像在计算机中就可以认为是函数,因此可以将图像看作二维离散型函数,图像的梯度可以看成二维离散函数的求导。例如,某处原图像像素经过梯度变化转化为新图像像素如下图所示。图18:像素梯度变化图如上图所示,相邻位置的像素有所变化,则就存在梯度,如果相邻位置的像素没有变化,那么就不存在梯度。新图像x方向的像素是有原图像x方向的像素加上该处像素梯度的值变化而来,梯度是原图像x方向像素中相邻位置的像素差。例如,100与80的梯度为20,那么新图像该处的像素为100加20得120,相邻处新图像的像素由于不存在梯度,或者梯度为0,所以仍为80,得到的新图像的梯度为120减去80得40,由此变化可以明显发现梯度有所增加。本文则利用这一方法来增强图像得区分,以便于条形码定位与识别。图像函数f(x,y)表达式为:公式1幅度公式:公式2方向角公式:公式3差分求近似倒数:公式4故像素点(x,y)处的梯度值和梯度方向为:公式5上述公式中,包含平方与开平方,计算量较大,所以,可以利用绝对值来近似平方和平方根的操作,降低计算量:公式6首先需要对图像进行灰度处理,本文运用到cvtColor函数,cvtColor(image,gray_image,COLOR_BGR2GRAY)函数三个参数分别为原图像、色彩空间转化后的图像、源和目标色彩空间。通过图片通道数判断图片进行灰值化,如果通道数为3,则进行灰值化处理,否则为原图其程序为:if(srcImage.channels()==3){cvtColor(srcImage,grayImage,CV_RGB2GRAY);}else{grayImage=srcImage.clone();}随后,通过scharr()算子建立图像的梯度幅值,因为在X方向上梯度大,选用X方向的梯度,所以利用subtract()函数使X方向的梯度,减去Y方向的梯度,进而减小Y方向梯度的影响。程序如下:Scharr(grayImage,gradientXImage,CV_32F,1,0);Scharr(grayImage,gradientYImage,CV_32F,0,1);subtract(gradientXImage,gradientYImage,gradientImage);convertScaleAbs(gradientImage,gradientImage);随后需要对图片进行相应的模糊处理,再此处利用blur函数,该函数中此处用到了其中三个参数,其中第一个参数为原图像,第二个参数为目标图像,第三个参数为size,即为内核大小,通常用Size(w,h)来表示,其中w为宽度,h为高度。模糊处理之后,对图像进行阈值化处理,即可得到相对应的黑色与白色的二值化图片,该步骤调用threshold()函数,该函数有四个参数,分别为原图像、二值化后的图像、阈值的具体值、参数阈的类型。得到二值化的图像之后,需要消除小黑点。因此需要运用到形态学[],在形态学中,分为开运算和闭运算,开运算使值先腐蚀,再膨胀,可以消除一些亮的小东西,然后再对其进行局部放大,放大那些低亮度的部分。而闭运算则是先膨胀,后腐蚀,可以清除小黑点。所以闭运算符合目前的需求,在此处我们利用到getStructuringElement()函数与morphologyEX()函数。在此过程中,为了让图像的大小保持不变,所以要用相同次数的膨胀与腐蚀。先腐蚀,为的是让图像中亮的地方减少,而膨胀是为了消除干扰。该过程的程序如下:blur(gradientImage,blurImage,Size(9,9));threshold(blurImage,thresholdImage,210,255,THRESH_BINARY);Matkernel=getStructuringElement(MORPH_RECT,Size(21,7));morphologyEx(thresholdImage,morphImage,MORPH_CLOSE,kernel);Erode(morphImage,morphImage,getStructuringElement(MORPH_RECT,Size(3,3)),Point(-1,-1),4);dilate(morphImage,morphImage,getStructuringElement(MORPH_RECT,Size(3,3)),Point(-1,-1),4);完成以上任务后,便可以对条形码的轮廓进行查找,在查找这一任务中,本文调用了findContours()函数,利用到了其中的四个参数,第一个参数为被寻找轮廓的图像,第二个参数为轮廓,第三个参数为轮廓的检索模式,一般情况下,轮廓的检索模式分为只检测外侧轮廓、检测到的轮廓不建立等级关系、检测到的轮廓建立两个等级关系与建立一个等级树结构的轮廓四种检索模式。第四个参数为近似轮廓的办法,一般情况下分为两种,一种为存储所有的轮廓点,另一种方法为压缩横向、纵向以及对角线方向的元素,只保留该方向上的终点坐标位置。图像中,出现轮廓之后,便需要对轮廓的面积进行计算。轮廓的面积计算在此处调用contourArea()函数,该函数主要是计算轮廓的面积。得到各个轮廓的面积之后,需要对比所有轮廓面积的大小,找到面积最大的轮廓,之后,计算最大面积轮廓的最小的外包的矩形。得到最小外包矩形之后,要计算该矩形的偏斜角度,如果矩形的偏斜角度超标,则该矩形不是想要的,即不是条形码的轮廓矩形。找到对的矩形之后,将扫描的图像进行裁剪,并保存为相对应的结果,保留x方向的边界,扩大矩形。该部分的程序如下:findContours(morphImage,contours,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);for(inti=0;i<contours.size();i++){contourArea.push_back(cv::contourArea(contours[i]));}doublemaxValue;PointmaxLoc;minMaxLoc(contourArea,NULL,&maxValue,NULL,&maxLoc);RotatedRectminRect=minAreaRect(contours[maxLoc.x]);if(minRect.angle<2.0){RectmyRect=boundingRect(contours[maxLoc.x]);myRect.x=myRect.x-(myRect.width/20);myRect.width=myRect.width*1.1;MatresultImage=Mat(srcImage,myRect);if(!imwrit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无锡市澄宜六校联盟2026届高三年级12月学情调研试卷历史试卷(含答案详解)
- 2025年株洲市炎陵县财政局、县审计局公开招聘专业人才备考题库及1套完整答案详解
- 2025四川爱众发展集团有限公司市场化选聘中层管理储备人才2人考试重点题库及答案解析
- 2026湖州市事业单位招聘紧缺人才80人备考核心题库及答案解析
- 2025年12月广东深圳市龙华区面向市内选调公务员7人备考笔试题库及答案解析
- “青苗筑基 浙里建证”浙江省建设投资集团2026届管培生招聘30人笔试重点试题及答案解析
- 2025年中电科海洋信息技术研究院有限公司招聘备考题库有答案详解
- 2025湖北武汉市华中农业大学襄阳书院劳动聘用制人员招聘2人备考考试试题及答案解析
- 北京市海淀区成志幼儿园幼儿园教师(外聘) 3名备考核心题库及答案解析
- 天津医科大学眼科医院2026年第一批公开招聘15人备考题库及完整答案详解一套
- UL2239标准中文版-2019支持导管油管和电缆的硬件UL中文版标准
- 【初中道法】拥有积极的人生态度(课件)-2024-2025学年七年级道德与法治上册(统编版2024)
- 六层住宅楼框架结构施工方案
- TGDNAS 049-2024 脊髓神经功能评估技术
- 地理主题10-1 影响工业区位的因素
- 2022年北京海淀初二(上)期末语文试卷及答案
- 分布式光伏电站支架结构及荷载计算书
- 供货及运输、安全保障措施
- GB/T 16475-2023变形铝及铝合金产品状态代号
- 肠道微生态与中医药课件
- 门诊药房运用PDCA降低门诊药房处方调配差错件数品管圈QCC成果汇报
评论
0/150
提交评论