




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DSP数字图像处理课程设计报告基于 DSP图像处理的EAN13码识别学院:电子信息工程学院班级:电子1202 姓名:汤世忠(12213048)姓名:王磊(12213050)指导教师:高海林目录1实验目的22设计背景23设计原理24设计方案35流程框图46算法介绍46.1匹配算法46.2识别部分56.3显示部分67结果分析78遇到的问题99总结910参考文献1011感谢101 实验目的利用C64x系列DSP处理器及图像采集设备等硬件,用C语言编程实现对EAN13条形码的识别及其输出显示。2设计背景条码技术在我国起步较晚,但发展非常迅速已广泛用于工业、商业、图书出版等领域。传统的条码识别方法是用光电识读器,通过光在深色和浅色上的反射效果区别条纹的亮暗,然后经过将反射光转换为电子脉冲后使用解码器将其转换成二进制码。然而这种方法会由于印刷的质量受到干扰,况且设备价格昂贵也是其中一个问题。采用数字图像处理来识别处理是一种简单的方法,而且能克服传统方法的不足,具有较强的实用性。3设计原理EAN-13是由欧洲的International Article Numbering Association(EAN)在UPC-A标准的基础上建立的。是一种数字国际通用符号体系,由数字和条码两部分组成。数字部分由13位十进制数组成的数码,从左到右为起始符、左侧数据符、中间分隔符、右侧数据符、终止符,其中右侧数据符的最后一位为检验符。如图1所示。图1条码部分用数字“1”来表示条码的一个“暗”或“条”部分,而用“0”来表示条码的一个“亮”或“空间”部分。这样,数值1101就表示一个两个宽度的条(11),跟着一个宽度的空间(0),跟着一个宽度的条(1)。这个在条码中可能被打印如图2所示:图2对于数据符中字符的编码也有区别,我们称中间分隔符左边的为L符,右边的为R符。L符的编码存在奇偶集,经常使用“字符集A”(奇)和“字符集B”(偶)来表示,R符使用“字符集C”表示。编码规则如表1所示:表1一个EAN-13字符使用7个元素来描述,包含2个条和2个空间。任何条或空间的长度都不会超过4个元素。唯一的例外情况就是左警戒条和右警戒条(都是3个元素)以及中间警戒条(5个元素长)。检验符处在条码数字的最后一位,用来检车前面的数值是否正确,可由前面数值计算得来,计算校验位的步骤如下:1) 将最右边一个数位作为“奇数”位,从右向左为每个字符指定奇数/偶数位。2) 对所有奇数位上的数值求和,将结果乘以3。对所有偶数位上的数值求和。3) 对第1步和第2步计算的结果求和。4) 校验位的数字加上用第3步计算的总和数应该能够被10整除。5) 如果第4步计算的总和数能够被10整除,校验位就是“0”(不是10)4设计方案首先在屏幕中央上划定一个200*12的区域,在识别时将条形码调整至该区域。对该区域进行二值化处理,得到非黑即白的条码图像,便于后续的算法处理。识别算法方面,利用EAN13编码的特殊性,可有如下的思路:在EAN13编码中,对于同一子集中的码,连续的“0”或“1”的个数的排列就能将该子集中的10个数字分辨出来。如A子集中的“0”,它的编码为0001101,我们换一种方式编码,把它看作是3,2,1,1. 这种编码方式有助于简化我们的算法,因为可以不用考虑具体是“0”还是“1”,而且使得A子集和C子集的编码保持一致。这种方式编码的码字均由4个元素组成。对条码取了高度为12的像素。由于我们要做竖直方向上的累加,这样既能降低条码倾斜带来的影响,又能减小误差。由图像读入的条码,其最小单位的宽度是不确定的。为此,可以将每4次变化为一组的数据与模板依次相除,若得到的4个数字近似相等,则说明匹配成功,也就识别出了该数字。用计算并比较方差的方法来判断是否“近似相等”。5流程框图6算法介绍6.1匹配算法目的:将对所有模板分别相除进行匹配,返回计算所得方差最小的模板的标号,即为该模块代表的数字。int LEFT_TABLE_INT204 = 3,2,1,1,2,2,2,1,2,1,2,2,1,4,1,1,1,1,3,2, /A子集、C子集 0-9 1,2,3,1,1,1,1,4,1,3,1,2,1,2,1,3,3,1,1,2, 1,1,2,3,1,2,2,2,2,2,1,2,1,1,4,1,2,3,1,1, /B子集 0-9 1,3,2,1,4,1,1,1,3,1,2,1,3,1,2,1,2,1,1,3 ;intgetSTDValue(intmvalues,inttabLen)/*tabLen = 10或20*/intrvalue = 0;intsvalues4;intxvalue4;int DX = 0;inti;int j;inttmp;for(i=0;itabLen;i+)for(j=0;j4;j+) svaluesj = LEFT_TABLE_INTij; /基准值 for(j=0;j4;j+) xvaluej = (int)(double)mvaluesj/svaluesj+0.5); tmp = getDX(xvalue); if(i=0) DX = tmp; else if(tmp9?i-10:i; returnrvalue;6.2识别部分目的:通过逐行逐列扫描像素点,识别出每一个模块的起始和结束,得到一个待匹配的数组并识别,将其存入存放EAN13码数组的对应位置。voidrecog()intchg = 0; /记录颜色变化次数intgvn = 0; /记录实际取值次数(每变化一次取值一次)intcst = 0; /记录同色连续像素的数量intprpx= -1; /记录上次的像素取值intgvalue4; /临时记录一组数字int v; /记录垂直取值为深色的次数inti;int j;intrv;chg = 0; /记录颜色变化次数gvn = 0; /记录实际取值次数(每变化一次取值一次)cst = 0; /记录同色连续像素的数量prpx= -1;EAN_INDEX = 0;/for(i=0;i12;i+) EANi = 0;for(i=intAPixels;iintDPixels;i+)v = 0; for(j=intALines;jintDLines;j+)if(*(Uint8*)(tempYbuffer+ j*numPixels + i)intThreshold) v+;/累加该列为深色的像素个数奇数行if(*(Uint8 *)(tempYbuffer + (j+numLines/2)*numPixels + i)HEIGHT/2?1:0; if(rv=prpx) cst+; else chg+; /变化次数+1 if(chg5 &chg34 &chg59) gvn+;gvalue(gvn-1)%4 = cst; if(gvn%4=0) if(gvn=24) EANEAN_INDEX%12 = getSTDValue(gvalue, 20);EAN_INDEX+; elseEANEAN_INDEX%12 = getSTDValue(gvalue, 10);EAN_INDEX+; else gvalue(gvn-1)%4 = cst; cst = 1; prpx = rv; 6.3显示部分目的:将13位EAN13码在显示屏上显示。void screen()inti,j,k;for(k=0;k12;k+)for(i=0;i20;i+)/行数 for(j=intBPixels+k*24;jintBPixels+k*24+24;j+) /像素数/每行 *(Uint8 *)(tempYbuffer + i*numPixels + j) = ASCII_BITrEANki*48+j-(intBPixels+k*24)=0?255:0; /方框内偶数行for(i=numLines/2;inumLines/2+20;i+)/行数 for(j=intBPixels+k*24;jintBPixels+k*24+24;j+) /像素数/每行 *(Uint8 *)(tempYbuffer + i*numPixels + j) = ASCII_BITrEANk(i-numLines/2)*48+j-(intBPixels+k*24)+24=0?255:0; 7结果分析矿泉水瓶条形码的识别结果如图3:图3可以看出,系统能够完全识别并显示。除此之外,为了测试识别准确率,随机抽取了10个日常商品的条形码进行识别,结果表示10个条形码都能完全识别,识别率100%,如图4,5,6,7,8所示(为了方便显示,只显示了偶场):图4图5图6图7图88遇到的问题1) 针对显示的问题,如果奇偶场不协调处理就会导致显示闪烁。2) 在没有进行检验位判断时输出结果会有误差,由于光线原因会使结果在几个值之间来回交替,添加奇偶检验位判断后只输出正确结果。3) 识别区域在竖直方向上尽量设置的比较小,是为了由此避免由于图像倾斜带来的影响。9总结这次DSP图像处理大作业,我们自选了这个EAN13条码识别的题目。其主要难点在于算法与软件,软件与硬件的结合。这个程序是参照网络上一个Java实现的EAN13码识别的代码来写的,读懂它的算法思想,再搬到我们的C语言程序中。调试过程中总是会出现一些不容易察觉的、很小的,但又致命的错误,经过了几天的检查和修改,把这些小错误一一找出来改正,终于在很多人还未着手做大作业时,提前完成了任务。当stdout中第一次出现令人惊喜的结果时,那种成就感是难以言表的。后来我们改进了算法,加入了校验计算,提高了准确度。再后来又写了一个函数让它在屏幕上实时显示,更加直观。在这次实验中我们不仅更深入地掌握了DSP图像处理的相关知识,还收获了很多乐趣,这样对于学习来说是很好的。10参考
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论