基于matlab的三种面值人民币的自动识别(燕山大学)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for i = 1:(mt2/2) if ~(FFv2_bw(i,j) + lie_f) lie = j; lie_f = 1; end
end end % 向当前列后 2——6 共 5 列,取黑白行数 FFv2_bw_f = FFv2_bw(:,(lie+2):(lie+6)); hang(3,:) = mt2; for j = 1:5
val_mid = 100; else
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%↓(下面求取 20 50) % 求取第二象限,出现黑点的列(下面求取 20 50)
6
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
lie_f = 0; for j = 1:(nt2/2)
基于 matlab 的三种面值人民币的自动识别
所在学校
燕山大学
所在学院
电气工程学院
姓 名 邵爱刚 刘光冉 刘红丹 杨秋怡
指导教师
赵彦涛
日期
2013 年 12 月 10 日
2012 年 12 月
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
摘要
本文通过分析第五版人民币自身特征,分别利用主色调提取、长 宽比提取、中值滤波特征图像提取、特征数字提取等四种方法,通过 matlab 软件来实现对第五套人民币 100 元、50 元、和 20 元这三个不 同面值的纸币进行自动识别。大致思路如下:通过纸币图像特征区域 内,不同面值人民币颜色分量比值数不同;不同面值纸币的长宽比不 同;不同面值纸币左下角特征图案不同;纸币中间部分面额数字不同, 利用不同的数字特征来分别区分出不同面额的纸币。
2
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
图(1)
% 颜色判别
% 只取头像部分
function
[val_color,IM_pic_real_head]
=
yanse(IM_pic,left,right,up,down)
% 提取彩色纸币部分
IM_pic_real = IM_pic(up:down,left:right,:);
首先将纸币的图像从相应的背景下提取出来,然后找到一个色调 集中的部分,如图(1)所示。分别提取该部分图像的 RGB 三色分量。 以面值为 100 的为例,该部分面积比较大且容易提取与区分。图像的 相应的该部分提取出来后,利用 R、G、B 分量灰度值累加后的 R/G 比 值确定某一个范围,并通过多次实验确定区间阈值,以此来区分 100、 50、20 的面值,具体程序代码以及相应的结果分析如下:
for i = 1:(mt2-2) if ~(FFv2_bw_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) +
5
% 20 0.0263 0.0351
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
(四)、基于中值滤波的特征数字(中间部位)的识别
本方法是基于中央位置,即数字部分来进行区分。首先提取出纸 币图像,然后确定中央带有特征数字的区域,然后进行中值滤波即降 噪处理。其次,将提取的部分进行二值化处理,使其成为只具有黑白 两色的图像,将此图像显示出来。从数字的最左边及最右边分别开始 以第一个黑点为界计算出数字的宽度,然后计算出此宽度占截取部分 比例的大小,中央数字宽度最大的图片即为面值为 100 的人民币,实 现将 100 元纸币首先区分出来。因 50 和 20 的宽度相当,进一步选取 特征数字 5 和 2 左上角区域,从左向右取五列图像的宽度,计算出每 列图像黑点与白点的比值,进而实现对 20 元和 50 元两个面值人民币 的区分。体程序代码以及相应的结果分析如下:
本方法是基于左下角图示区域的图案差别来区分。100 和 50 的
分别为相应的阿拉伯数字,而 20 则为一定的图案。根据实物所对应
4
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
的图案位置进行计算,确定出各面值纸币所对应的位置区域,将上述 三种面值纸币的取并集,以确保提取特征信息无丢失,如图所示。其 次进行中值滤波降噪,然后锁定左下角的位置,二值化,将区域灰度 值沿 X 坐标向下投影,确定图案对应的投影的左右起点和终点横坐标 差值即为图案的长度,以图案的长度除以提取区域的长度为特征值, 设定相应的阈值,以此来辨别不同的面值。具体程序代码以及相应的 结果分析如下:
% 50
% 10232415
% 11418984
%
9625793
%
r/g = 0.8961[ ,0.94]
% 20
% 12417005
3
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
% 10030369
%
7692525
%
r/g = 1.2379[0.95,1.40]
(二)、基于边缘提取的长宽比例识别
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 = 1.5451[1.41, ]
rat1 = (Ty(end) - Ty(1)) / nt1; if rat1 >= 0.75
val_left = 100; elseif rat1 >= 0.4
val_left = 50; else
val_left = 20; end catch 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
图(2) %长宽比确定币值 function [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.9796 elseif A < 2.0600
% 提取头像部分
[h,l,g] = size(IM_pic_real);
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));
1
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
正文
本文主要介绍通过 matlab 软件对所采集的图像进行四种不同方 法处理,利用不同面值人民币的特征点,分别实现对第五套人民币 20 元、50 元、100 元这三个不同面值纸币进行准确的识别的方法。 纸币识别具体过程如下: 1、读取图像,将所需的图像放在一定的文件中储存以备所用。 2、滤波降噪,为了减少图像噪点,为了便于以后的图像的相关处理, 便于区分与识别。 3、纸币摆正,针对纸币可能出现的不同的情况需要对纸币进行校正 处理,如若倾斜则进行校正处理,如若不倾斜直接进行下一步。 4、采用相应的方法剔除背景,只提取纸币部分,避免背景造成的相 关的干扰,便于准确快速的识别纸币的不同面值。 5、具体的实施思路有四种方法,分别是主色调、图像轮廓长宽比、 特征部位(左下角)、特征数字(中间部位),具体部位如下图(1) (2)(3)(4)所示,然后针对不同的思路设计出相应的程序并分别 进行处理比对,最后准确快速的识别出不同的纸币面值。 (一)、主色调识别
图(4) function [val_mid,FFv2_bw] = zhongyang(FF,m,n) % 提取纸币特殊部位(中央数字) FFv2 = FF(round(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);%二值化 % 判断是否为 100 Ty_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 rat_100 >= 0.8
首先必须将图像读入,进行滤波处理。依据边缘提取原理依次将 100、50、20 的相关的边缘即整个图像的整体轮廓提取出来。以面值 为 100 的为例如图(2),计算出长度与宽度的比值,以此相应的三个 值,设置相应阈值为判断面值的依据。来区分 100、50、 20 的不同 的面值。具体程序代码以及相应的结果分析如下:
图(3) function [val_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
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,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; end end
val_ckb = 20;% 2.0421 2.0368 2.0368 2.0286 2.0421 elseif A < 2.2000
val_ckb = 50;% 2.0919 2.0948 2.0919 2.0909 2.0948 else
val_ckb = 0; end
(三)、基于中值滤波的特征部位(左下角)的图像识别
关键词:第五套人民币 主色调 长宽比 特征图案 自动识别
前言:随着科技的发展,很多行业都出现了基于人民币纸币识别技
术的智能化无人收费系统,节省大量人力资源。人民币纸币的识别技 术不仅可以应用在自动售货售票上,也可以应用到银行的自动存取款 机,手机营业厅的自动交费机等。目前已有的识别方法主要是利用统 计方法进行识别,如尺寸比较法、模板匹配、人工神经网络等。以不 同面值人民币自动识别方法的应用日益广泛为背景,本小组提出多种 通过利用 matlab 软件、图像处理技术,实现对第五版人民币 20 元、 50 元、100 元这三个不同面值纸币,进行简易、快速的自动识别方法, 并能够在保证识别准确率的情况下,实现对纸币的快速自动识别。本 小组四名成员刘光冉、邵爱刚、杨秋怡、刘红丹同学,经过共同商讨, 确立了特征区域图像主色调不同、纸币长宽比不同、特征图像不同、 不同币值特征数字这四个方向。并分别从四种不同方向入手,查阅大 量相关资料,明确各种方法的实现步骤,共同努力实现程序编写及论 文和答辩的准备。
end end % 向当前列后 2——6 共 5 列,取黑白行数 FFv2_bw_f = FFv2_bw(:,(lie+2):(lie+6)); hang(3,:) = mt2; for j = 1:5
val_mid = 100; else
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%↓(下面求取 20 50) % 求取第二象限,出现黑点的列(下面求取 20 50)
6
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
lie_f = 0; for j = 1:(nt2/2)
基于 matlab 的三种面值人民币的自动识别
所在学校
燕山大学
所在学院
电气工程学院
姓 名 邵爱刚 刘光冉 刘红丹 杨秋怡
指导教师
赵彦涛
日期
2013 年 12 月 10 日
2012 年 12 月
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
摘要
本文通过分析第五版人民币自身特征,分别利用主色调提取、长 宽比提取、中值滤波特征图像提取、特征数字提取等四种方法,通过 matlab 软件来实现对第五套人民币 100 元、50 元、和 20 元这三个不 同面值的纸币进行自动识别。大致思路如下:通过纸币图像特征区域 内,不同面值人民币颜色分量比值数不同;不同面值纸币的长宽比不 同;不同面值纸币左下角特征图案不同;纸币中间部分面额数字不同, 利用不同的数字特征来分别区分出不同面额的纸币。
2
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
图(1)
% 颜色判别
% 只取头像部分
function
[val_color,IM_pic_real_head]
=
yanse(IM_pic,left,right,up,down)
% 提取彩色纸币部分
IM_pic_real = IM_pic(up:down,left:right,:);
首先将纸币的图像从相应的背景下提取出来,然后找到一个色调 集中的部分,如图(1)所示。分别提取该部分图像的 RGB 三色分量。 以面值为 100 的为例,该部分面积比较大且容易提取与区分。图像的 相应的该部分提取出来后,利用 R、G、B 分量灰度值累加后的 R/G 比 值确定某一个范围,并通过多次实验确定区间阈值,以此来区分 100、 50、20 的面值,具体程序代码以及相应的结果分析如下:
for i = 1:(mt2-2) if ~(FFv2_bw_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) +
5
% 20 0.0263 0.0351
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
(四)、基于中值滤波的特征数字(中间部位)的识别
本方法是基于中央位置,即数字部分来进行区分。首先提取出纸 币图像,然后确定中央带有特征数字的区域,然后进行中值滤波即降 噪处理。其次,将提取的部分进行二值化处理,使其成为只具有黑白 两色的图像,将此图像显示出来。从数字的最左边及最右边分别开始 以第一个黑点为界计算出数字的宽度,然后计算出此宽度占截取部分 比例的大小,中央数字宽度最大的图片即为面值为 100 的人民币,实 现将 100 元纸币首先区分出来。因 50 和 20 的宽度相当,进一步选取 特征数字 5 和 2 左上角区域,从左向右取五列图像的宽度,计算出每 列图像黑点与白点的比值,进而实现对 20 元和 50 元两个面值人民币 的区分。体程序代码以及相应的结果分析如下:
本方法是基于左下角图示区域的图案差别来区分。100 和 50 的
分别为相应的阿拉伯数字,而 20 则为一定的图案。根据实物所对应
4
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
的图案位置进行计算,确定出各面值纸币所对应的位置区域,将上述 三种面值纸币的取并集,以确保提取特征信息无丢失,如图所示。其 次进行中值滤波降噪,然后锁定左下角的位置,二值化,将区域灰度 值沿 X 坐标向下投影,确定图案对应的投影的左右起点和终点横坐标 差值即为图案的长度,以图案的长度除以提取区域的长度为特征值, 设定相应的阈值,以此来辨别不同的面值。具体程序代码以及相应的 结果分析如下:
% 50
% 10232415
% 11418984
%
9625793
%
r/g = 0.8961[ ,0.94]
% 20
% 12417005
3
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
% 10030369
%
7692525
%
r/g = 1.2379[0.95,1.40]
(二)、基于边缘提取的长宽比例识别
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 = 1.5451[1.41, ]
rat1 = (Ty(end) - Ty(1)) / nt1; if rat1 >= 0.75
val_left = 100; elseif rat1 >= 0.4
val_left = 50; else
val_left = 20; end catch 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
图(2) %长宽比确定币值 function [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.9796 elseif A < 2.0600
% 提取头像部分
[h,l,g] = size(IM_pic_real);
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));
1
工业自动化仪表 3 班 刘光冉 邵爱刚 刘红丹 杨秋怡
正文
本文主要介绍通过 matlab 软件对所采集的图像进行四种不同方 法处理,利用不同面值人民币的特征点,分别实现对第五套人民币 20 元、50 元、100 元这三个不同面值纸币进行准确的识别的方法。 纸币识别具体过程如下: 1、读取图像,将所需的图像放在一定的文件中储存以备所用。 2、滤波降噪,为了减少图像噪点,为了便于以后的图像的相关处理, 便于区分与识别。 3、纸币摆正,针对纸币可能出现的不同的情况需要对纸币进行校正 处理,如若倾斜则进行校正处理,如若不倾斜直接进行下一步。 4、采用相应的方法剔除背景,只提取纸币部分,避免背景造成的相 关的干扰,便于准确快速的识别纸币的不同面值。 5、具体的实施思路有四种方法,分别是主色调、图像轮廓长宽比、 特征部位(左下角)、特征数字(中间部位),具体部位如下图(1) (2)(3)(4)所示,然后针对不同的思路设计出相应的程序并分别 进行处理比对,最后准确快速的识别出不同的纸币面值。 (一)、主色调识别
图(4) function [val_mid,FFv2_bw] = zhongyang(FF,m,n) % 提取纸币特殊部位(中央数字) FFv2 = FF(round(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);%二值化 % 判断是否为 100 Ty_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 rat_100 >= 0.8
首先必须将图像读入,进行滤波处理。依据边缘提取原理依次将 100、50、20 的相关的边缘即整个图像的整体轮廓提取出来。以面值 为 100 的为例如图(2),计算出长度与宽度的比值,以此相应的三个 值,设置相应阈值为判断面值的依据。来区分 100、50、 20 的不同 的面值。具体程序代码以及相应的结果分析如下:
图(3) function [val_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
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,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; end end
val_ckb = 20;% 2.0421 2.0368 2.0368 2.0286 2.0421 elseif A < 2.2000
val_ckb = 50;% 2.0919 2.0948 2.0919 2.0909 2.0948 else
val_ckb = 0; end
(三)、基于中值滤波的特征部位(左下角)的图像识别
关键词:第五套人民币 主色调 长宽比 特征图案 自动识别
前言:随着科技的发展,很多行业都出现了基于人民币纸币识别技
术的智能化无人收费系统,节省大量人力资源。人民币纸币的识别技 术不仅可以应用在自动售货售票上,也可以应用到银行的自动存取款 机,手机营业厅的自动交费机等。目前已有的识别方法主要是利用统 计方法进行识别,如尺寸比较法、模板匹配、人工神经网络等。以不 同面值人民币自动识别方法的应用日益广泛为背景,本小组提出多种 通过利用 matlab 软件、图像处理技术,实现对第五版人民币 20 元、 50 元、100 元这三个不同面值纸币,进行简易、快速的自动识别方法, 并能够在保证识别准确率的情况下,实现对纸币的快速自动识别。本 小组四名成员刘光冉、邵爱刚、杨秋怡、刘红丹同学,经过共同商讨, 确立了特征区域图像主色调不同、纸币长宽比不同、特征图像不同、 不同币值特征数字这四个方向。并分别从四种不同方向入手,查阅大 量相关资料,明确各种方法的实现步骤,共同努力实现程序编写及论 文和答辩的准备。