基于matlab的三种面值人民币的自动识别燕山大学_第1页
基于matlab的三种面值人民币的自动识别燕山大学_第2页
基于matlab的三种面值人民币的自动识别燕山大学_第3页
基于matlab的三种面值人民币的自动识别燕山大学_第4页
基于matlab的三种面值人民币的自动识别燕山大学_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于matlab的三种面值人民币的自动识别所在学校 燕山大学 所在学院 电气工程学院 姓 名 邵爱刚 刘光冉 刘红丹 杨秋怡指导教师 赵彦涛 日期 2013年12月10日 2012年12月摘 要本文通过分析第五版人民币自身特征,分别利用主色调提取、长宽比提取、中值滤波特征图像提取、特征数字提取等四种方法,通过matlab软件来实现对第五套人民币100元、50元、和20元这三个不同面值的纸币进行自动识别。大致思路如下:通过纸币图像特征区域内,不同面值人民币颜色分量比值数不同;不同面值纸币的长宽比不同;不同面值纸币左下角特征图案不同;纸币中间部分面额数字不同,利用不同的数字特征来分别区分出不同面额

2、的纸币。关键词:第五套人民币 主色调 长宽比 特征图案 自动识别前言:随着科技的发展,很多行业都出现了基于人民币纸币识别技术的智能化无人收费系统,节省大量人力资源。人民币纸币的识别技术不仅可以应用在自动售货售票上,也可以应用到银行的自动存取款机,手机营业厅的自动交费机等。目前已有的识别方法主要是利用统计方法进行识别,如尺寸比较法、模板匹配、人工神经网络等。以不同面值人民币自动识别方法的应用日益广泛为背景,本小组提出多种通过利用matlab软件、图像处理技术,实现对第五版人民币20元、50元、100元这三个不同面值纸币,进行简易、快速的自动识别方法,并能够在保证识别准确率的情况下,实现对纸币的快

3、速自动识别。本小组四名成员刘光冉、邵爱刚、杨秋怡、刘红丹同学,经过共同商讨,确立了特征区域图像主色调不同、纸币长宽比不同、特征图像不同、不同币值特征数字这四个方向。并分别从四种不同方向入手,查阅大量相关资料,明确各种方法的实现步骤,共同努力实现程序编写及论文和答辩的准备。正 文本文主要介绍通过matlab软件对所采集的图像进行四种不同方法处理,利用不同面值人民币的特征点,分别实现对第五套人民币20元、50元、100元这三个不同面值纸币进行准确的识别的方法。纸币识别具体过程如下:1、读取图像,将所需的图像放在一定的文件中储存以备所用。2、滤波降噪,为了减少图像噪点,为了便于以后的图像的相关处理,

4、便于区分与识别。3、纸币摆正,针对纸币可能出现的不同的情况需要对纸币进行校正处理,如若倾斜则进行校正处理,如若不倾斜直接进行下一步。4、采用相应的方法剔除背景,只提取纸币部分,避免背景造成的相关的干扰,便于准确快速的识别纸币的不同面值。5、具体的实施思路有四种方法,分别是主色调、图像轮廓长宽比、特征部位(左下角)、特征数字(中间部位),具体部位如下图(1)(2)(3)(4)所示,然后针对不同的思路设计出相应的程序并分别进行处理比对,最后准确快速的识别出不同的纸币面值。(一)、主色调识别首先将纸币的图像从相应的背景下提取出来,然后找到一个色调集中的部分,如图(1)所示。分别提取该部分图像的RGB

5、三色分量。以面值为100的为例,该部分面积比较大且容易提取与区分。图像的相应的该部分提取出来后,利用R、G、B分量灰度值累加后的R/G比值确定某一个范围,并通过多次实验确定区间阈值,以此来区分100、50、20的面值,具体程序代码以及相应的结果分析如下:图(1)% 颜色判别% 只取头像部分function val_color,IM_pic_real_head = yanse(IM_pic,left,right,up,down)% 提取彩色纸币部分IM_pic_real = IM_pic(up:down,left:right,:);% 提取头像部分h,l,g = size(IM_pic_real

6、);IM_pic_real_head = IM_pic_real(round(0.07*h):round(0.87*h),round(0.6*l):round(0.8*l),:);IM_rgb = squeeze(sum(sum(IM_pic_real_head,1),2);r_g = IM_rgb(1) / IM_rgb(2);if r_g >= 1.41 val_color = 100;elseif r_g <= 0.94 val_color = 50;else val_color = 20;end% 100% 3892554% 2519328% 2810818% r/g =

7、1.54511.41, % 50% 10232415% 11418984% 9625793% r/g = 0.8961 ,0.94% 20% 12417005% 10030369% 7692525% r/g = 1.23790.95,1.40(二)、基于边缘提取的长宽比例识别首先必须将图像读入,进行滤波处理。依据边缘提取原理依次将100、50、20的相关的边缘即整个图像的整体轮廓提取出来。以面值为100的为例如图(2),计算出长度与宽度的比值,以此相应的三个值,设置相应阈值为判断面值的依据。来区分100、50、 20的不同的面值。具体程序代码以及相应的结果分析如下:图(2)%长宽比确定币值fu

8、nction val_ckb = changkuanbi(left,right,up,down)%确定图片的长宽比例A = (right-left) / (down-up);if A < 2.0000 val_ckb = 100;% 1.9796 1.9778 1.9796 1.9796 1.9796elseif A < 2.0600 val_ckb = 20;% 2.0421 2.0368 2.0368 2.0286 2.0421elseif A < 2.2000 val_ckb = 50;% 2.0919 2.0948 2.0919 2.0909 2.0948else v

9、al_ckb = 0;end(三)、基于中值滤波的特征部位(左下角)的图像识别本方法是基于左下角图示区域的图案差别来区分。100和50的分别为相应的阿拉伯数字,而20则为一定的图案。根据实物所对应的图案位置进行计算,确定出各面值纸币所对应的位置区域,将上述三种面值纸币的取并集,以确保提取特征信息无丢失,如图所示。其次进行中值滤波降噪,然后锁定左下角的位置,二值化,将区域灰度值沿X坐标向下投影,确定图案对应的投影的左右起点和终点横坐标差值即为图案的长度,以图案的长度除以提取区域的长度为特征值,设定相应的阈值,以此来辨别不同的面值。具体程序代码以及相应的结果分析如下:图(3)function va

10、l_left,FFv_bw = zuoxia(FF,m,n)%提取纸币特定部位(左下角)FFv = FF(round(0.80*m):round(0.94*m),round(0.03*n):round(0.15*n);FFv=medfilt2(FFv,4,4);%进行中值滤波;FFv = FFv(2:(end-4),2:(end-4);FFv_bw = im2bw(FFv,0.6);%二值化mt1,nt1 = size(FFv);Ty = find(sum(FFv_bw) <= (mt1-2) = 1);try rat1 = (Ty(end) - Ty(1) / nt1; if rat1

11、 >= 0.75 val_left = 100; elseif rat1 >= 0.4 val_left = 50; else val_left = 20; endcatch val_left = 20;end% 100 0.8226 0.8226 0.8095 0.8095 0.8000% 50 0.6735 0.6667 0.6923 0.6909 0.6724% 20 0.0263 0.0351(四)、基于中值滤波的特征数字(中间部位)的识别本方法是基于中央位置,即数字部分来进行区分。首先提取出纸币图像,然后确定中央带有特征数字的区域,然后进行中值滤波即降噪处理。其次,将提取

12、的部分进行二值化处理,使其成为只具有黑白两色的图像,将此图像显示出来。从数字的最左边及最右边分别开始以第一个黑点为界计算出数字的宽度,然后计算出此宽度占截取部分比例的大小,中央数字宽度最大的图片即为面值为100的人民币,实现将100元纸币首先区分出来。因50和20的宽度相当,进一步选取特征数字5和2左上角区域,从左向右取五列图像的宽度,计算出每列图像黑点与白点的比值,进而实现对20元和50元两个面值人民币的区分。体程序代码以及相应的结果分析如下:图(4)function val_mid,FFv2_bw = zhongyang(FF,m,n)% 提取纸币特殊部位(中央数字)FFv2 = FF(r

13、ound(0.24*m):round(0.50*m),round(0.25*n):round(0.52*n);FFv2=medfilt2(FFv2,4,4);%进行中值滤波;FFv2 = FFv2(2:(end-4),2:(end-4);mt2,nt2 = size(FFv2);FFv2_bw = im2bw(FFv2,0.5);%二值化% 判断是否为100Ty_100 = logical(sum(FFv2_bw) <= (mt2-2);Ty_100_l = find(Ty_100 = 1);rat_100 = (Ty_100_l(end) - Ty_100_l(1) / nt2;if

14、rat_100 >= 0.8 val_mid = 100;else %(下面求取20 50) % 求取第二象限,出现黑点的列(下面求取20 50) lie_f = 0; for j = 1:(nt2/2) for i = 1:(mt2/2) if (FFv2_bw(i,j) + lie_f) lie = j; lie_f = 1; end end end % 向当前列后 26 共5列,取黑白行数 FFv2_bw_f = FFv2_bw(:,(lie+2):(lie+6); hang(3,:) = mt2; for j = 1:5 for i = 1:(mt2-2) if (FFv2_bw

15、_f(i,j) + FFv2_bw_f(i+1,j) + FFv2_bw_f(i+2,j) hang(1,j) = i;%第一行记录首次黑点行数 for k = (i+2):(mt2-2) if (FFv2_bw_f(k,j) + FFv2_bw_f(k+1,j) + FFv2_bw_f(k+2,j)>=2 hang(2,j) = k+1;%第二行记录二次白点 for l = (k+2):mt2 if (FFv2_bw_f(l,j) hang(3,j) = l;%第三行记录二次黑点 break end end break end end break end end end hang_m,

16、hang_n = size(hang); hang_new = round(sum(hang,2) / hang_n); hang_black = hang_new(2) - hang_new(1); hang_white = hang_new(3) - hang_new(2); if hang_black >= hang_white val_mid = 50; else val_mid = 20; endend结论: % 人民币识别clc; clear all; close all;I = imread('207.jpg');% 图像输入IM_pic = ceshi(I

17、);% 摆正校正 返回I1left,right,up,down,FF = bianyuan(IM_pic);% 剔除边缘 提取纸币FFFF_real = IM_pic(up:down,left:right,:);m,n = size(FF);val_color,IM_pic_real_head = yanse(IM_pic,left,right,up,down);% 色调识别val_ckb = changkuanbi(left,right,up,down);% 长宽比识别val_left,FFv_bw = zuoxia(FF,m,n);% 左下角特征识别val_mid,FFv2_bw = zh

18、ongyang(FF,m,n);% 中央特征识别subplot(2, 3, 1); imshow(I); title('原图像');subplot(2, 3, 2); imshow(IM_pic); title('摆正图像');subplot(2, 3, 3); imshow(FF_real); title('纸币部分');xlabel(val_ckb)subplot(2, 3, 4); imshow(IM_pic_real_head); title('色调识别区域');xlabel(val_color);subplot(2, 3

19、, 5); imshow(FFv_bw); title('左下角特征');xlabel(val_left);subplot(2, 3, 6); imshow(FFv2_bw); title('中央特征识别');xlabel(val_mid);五、结论本小组在进行该项目研究时,首先分别对第五版人民币20元、50元和100元,这三个不同面值的人民币的图像进行了详细的分析和讨论。经过本小组成员的共同商讨,选择出特征区域主色调、长宽比、特征图像和特征数字这四个特征点作为完成本项目的切入点。并对这四个切入点的实现,进行了清晰的步骤分析。接下来,我们小组成员分别从这四个切入

20、点入手,在查阅了大量资料后,实际动手编写程序,最终实现了从所采集图像主色调、长宽比、特征图像和特征数字这四个特征点,利用matlab软件对三个不同面值的人民币进行自动识别。通过对这四种方法的分别运行,我们发现通过主色调不同对于不同面值的纸币进行识别,是可靠度最高、运行速度最快,但却也是受背景图像干扰很严重的的一种方法。通过对中央特征数值的提取来实现对不同面值的识别,是最有效可靠的方法。通过此次三级项目的研究学习,让我们对matlab软件有了更加深入的学习和了解。通过自己动手设计编写程序,并从中发现问题、解决问题,增强了我们实际应用这门学科的能力和分析处理问题的能力。另一方面,也增强了我们的团队

21、协作能力,让我们通过结组讨论、共同解决问题的形式,互补学习、共同进步。通过对这一项目的研究,我们发现不同面值的人民币上,盲文也可以作为重要的区分标志,而且本程序还无法实现对于有污损和褶皱的人民币识别。因此,在接下来的工作中,我们还准备对于不同面值人民币左下角的盲文信息进行进一步的分析处理,用以实现对第五版人民币20元、50元及100元的崭新人民币,甚至对于有污损、褶皱的人民币利进行面值的自动识别。使识别方法具有更高的准确性、稳定性,推广其应用范围。参考文献:1范立南,韩晓微,张广渊.图像处理与模式识别 M.北京:科学出版2007,3.2 美 Rafael C Gonzalez, Richard

22、 E Woods, Steven L Eddins. 阮 秋 琦 译 . 数 字 图 像 处 理 (MATLAB 版)M.北京: 电子工业出版社, 2005. 3范立南,韩晓微,张广渊.图像处理与模式识别 M.北京:科学出版社007,3. 4 美 Rafael C Gonzalez, Richard E Woods, Steven L Eddins. 阮 秋 琦 译 . 数 字 图 像 处 理 (MATLAB 版)M.北京: 电子工业出版社, 2005. 5杜选,高明峰.人工神经网络在数字识别中的应用J.计算机系统与应用 2007.6陈慧鹏,杨亮亮,李鸿.模糊集识别法在纸币清分中的应用研究J.

23、华中科技大学国家数控工,2004. 7宋铭利.关于去除图像噪音的中值滤波算法 J.洛阳师范学院院报,2002.8韩贺磊.人民币纸币面额的机器视觉识别方法研究D.大连理工大学,2007. 9张国华.一种基于模板匹配的人民币纸币面额识别方法 J.沈阳工业大学学报,2005. 附件:1、%此程序用作图像的摆正function I1 = ceshi(I)bw = im2bw(I);bw = imclose(bw, strel('disk', 5);r, c=find(bw=1);rectx, recty, area, perimeter = minboundrect(c, r, 

24、9;a');% 'a'是按面积算的最小矩形,如果按边长用'p'for i = 1 : length(rectx)-1 len = norm(rectx(i+1)-rectx(i) recty(i+1)-recty(i); Len(i) = len;endMaxLen, ind = max(Len);x1 = rectx(ind) rectx(ind+1);y1 = recty(ind) recty(ind+1);% 求得线段的斜率K1 = -(y1(1)-y1(2)/(x1(1)-x1(2);angle = atan(K1)*180/pi;I1 = im

25、rotate(I, -angle, 'bilinear');% imrotate是逆时针的所以取一个负号如果不倾斜则直接进行背景剔除及图像整体轮廓的提取,即边缘提取处理,具体程序如下:% 背景剔除 边缘提取% %function left,right,up,down,FF = bianyuan(IM_pic)IM_g = rgb2gray(IM_pic);% 低通滤波n=1;H=1/(n*n)*ones(n,n);IM_g=imfilter(IM_g,H);% 边缘F = edge(IM_g,'sobel'); m n = size(F);F = double(

26、F);% ground =0;%取背景k = 0;l = 0;%取左右边缘for i1 = 1:m for j1 = 1:n if F(i1,j1) = 0 k = k + 1; left(k) = j1; for j2 = n:-1:j1 if F(i1,j2) = 0 l = l + 1; right(l) = j2; break end end break end endendleft = mode(left);right = mode(right);k = 0;l = 0;%取上下边缘for j1 = 1:n for i1 = 1:m if F(i1,j1) = 0 k = k + 1

27、; up(k) = i1; for i2 = m:-1:i1 if F(i2,j1) = 0 l = l + 1; down(l) = i2; break end end break end endendup = mode(up);down = mode(down);% 已知纸币的上下左右% % 剔除背景,提取纸币部分FF = IM_g(up:down,left:right);% title('纸币部分提取')2、以上程序涉及的函数如下所示:function rectx,recty,area,perimeter = minboundrect(x,y,metric)% defau

28、lt for metricif (nargin<3) | isempty(metric) metric = 'a'elseif ischar(metric) error 'metric must be a character flag if it is supplied.'else % check for 'a' or 'p' metric = lower(metric(:)'); ind = strmatch(metric,'area','perimeter'); if isempt

29、y(ind) error 'metric does not match either ''area'' or ''perimeter''' end % just keep the first letter. metric = metric(1);end% preprocess datax=x(:);y=y(:);% not many error checks to worry aboutn = length(x);if n=length(y) error 'x and y must be the same

30、sizes'end% start out with the convex hull of the points to% reduce the problem dramatically. Note that any% points in the interior of the convex hull are% never needed, so we drop them.if n>3 edges = convhull(x,y,'Qt'); % 'Pp' will silence the warnings % exclude those points i

31、nside the hull as not relevant % also sorts the points into their convex hull as a % closed polygon x = x(edges); y = y(edges); % probably fewer points now, unless the points are fully convex nedges = length(x) - 1;elseif n>1 % n must be 2 or 3 nedges = n; x(end+1) = x(1); y(end+1) = y(1);else %

32、n must be 0 or 1 nedges = n;end% now we must find the bounding rectangle of those% that remain.% special case small numbers of points. If we trip any% of these cases, then we are done, so return.switch nedges case 0 % empty begets empty rectx = ; recty = ; area = ; perimeter = ; return case 1 % with one point, the rect is simple. rectx = repmat(x,1,5); recty = repmat(y,1,5); area = 0; perimeter = 0; return case 2 % only two points. also simple. rectx = x(1 2 2 1 1); recty = y(1 2 2 1 1); area = 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论