基matlab民币动识
姓 名
学 号
院 系 信息科学工程学院
专 业
年 级
指导老师
摘
文通分析第五版民币特征利纸币中央数字特征提取识方法通matlab软件实现第五版民币100元50元20元识
关键词:第五套民币 边缘检测提取 中央数字特征
前言:科技断进步手工劳动先进机械电子设备代交话费存款买东西必须营业厅者商场办理手续通客户服务员间业务交流实现服务实施体验动缴费机存取款体机动售货机出现生活中先进设备中重门技术:纸币识技术钞票投入缴费机者存款机时机器必定会首先识户投入面额少纸币进行真伪辨数写入等功目前已识技术诸图匹配法识神网络识尺寸识纸币部荧光物质识等等组提出matlab软件利软件图处理超强力保证识准确率前提100元50元20元民币进行快速效识
正文
背景介绍
二 Matlab函数介绍
1 Imread
函数imread读取图片文件中数
调格式:
A imread(filenamefmt)
[Xmap] imread(filenamefmt)
[] imread(filename)
2 Imshow
imshowmatlab中显示图函数
调格式:
imshow(BW):显示张二值图BW
imshow(RGB):显示张真彩色图RGB
imshow(Xmap):指定调色板显示图
3 im2bw
matlab中DIP工具箱函数im2bw阈值(threshold)变换法灰度图(grayscale image)转换成二值图般意义指纯黑(0)纯白(255)两种颜色图 然 意两种颜色组合谓二值图 般意义指纯黑(0)纯白(255)两种颜色图 然 意两种颜色组合
调格式:
BW im2bw(I level)
BW im2bw(X map level)
BW im2bw(RGB level)
中level设置阈值level取值范围[0 1]
4 Imfill
该函数填充图区域空洞
调格式:
BW2 imfill(BW)
种格式张二值图显示屏幕 允许户鼠标图点点 点围成区域填充区域种交互方式操作 BW必须二维图户通Backspace键者Delete键取消前选择区域通shift+鼠标左键单击者鼠标右键单击双击确定选择区域
[BW2locations] imfill(BW)
种方式 返回户取样点索引值注意里索引值选取样点坐标
BW2 imfill(BWlocations)
种格式允许户编程时指定选取样点索引locations维数组时 数组行指定区域
BW2 imfill(BW'holes')
填充二值图中空洞区域 黑色背景白色圆圈 圆圈区域填充
I2 imfill(I)
种调格式填充灰度图中空洞区域
BW2 imfill(BWlocationsconn)
5 Bwperim
查找二值图边缘
调格式:
BW2 bwperim(BW1)
BW2 bwperim(BW1conn)
BW2 bwperim(BW1conn)
表示输入图BW1中返回包括象边缘素点图
6 Mode
众数函数计算组数中众数
众数简单说组数中占例数
调格式:
mode(x)
7 medfilt2
中值滤波函数
调格式:
medfilt2(A[m n])
8 Logical
判断参数否逻辑值果检验容逻辑值返回TRUE(1)否返回FALSE(0)
调格式:
Logical(value)
9 Find
原始数中某字符串进行定位确定位置
10 edge
调格式:
BWedge(I)
采灰度二值化图I作输入返回I相二值化图BW函数检测边缘方1方0
BWedge(I’sobel’)
动选择阈值sobel算子进行边缘检测
算子roberts算子prewitt算子log算子等等
三 纸币识流程图
读入检测图片
出结果
进行图边缘检测提取边缘剪切
中央数字部分识
提取中央数字部分
四 流程部分详细说明
1 读入检测图片
Imimread(100jpg’)
figure(1)
imshow(Im)
读入张黑色背景100元民币图片然imshow函数进行图片查
2 进行图边缘检测提取
边缘检测两种方法种edge函数进行边缘检测种二值化+图填充+提取边缘方法
edge函数进行边缘检测选择Sobel算子
Fedge(I2'sobel')sobel算子边缘检测
figure(2)
imshow(F)
图sobel算子边缘检测图达需效果部白色纹路较影响边缘截取选择第二种方法:二值化+图填充+提取边缘
首先图进行二值化处理然imfill函数调hole格式图中空洞进行填充然调bwperim函数二值图进行边缘检测面检测程结果
3 边缘剪切
二值化边缘图需边缘进行剪切切掉背景图案留钞票图案便例分割图片
采mode函数边缘位置确定首先二值图读入矩阵生成m行n列矩阵然行行进行检测遇白色区域(值1)时白色区域处列位置记入数组检测完毕mode函数数组进行检测数组中数字出现边缘位置关键循环:
for i1m
for j1n
if F(ij)~00代表黑色果F(ij)黑色(图区域)
kk+1
left(k)j
for j1n1j
if F(ij1)~0
ll+1
right(l)j1
break
end
end
break
end
end
end
图剪切效果灰度图
4 提取中央数字部分
百元钞票左边中央数字1距离概占整长度025右边05边0275边0520元50元类似:
FFv2jianqie(0275*m050*m0254*n05*n)
中央数字图片
5 中央部分识
中央部分识分两步:1区分百元5020元2区分50元20元
区分百元方法简单百元50元20元截取部分固定1003位数占图片例肯定手算100元中央数字约占超截取道德图80判断出检图100元关键程序:
Ty_100logical(sum(FFv2_bw)<(mt22))
Ty_100_lfind((Ty_1001))
rat_100(Ty_100_l(end)Ty_100_l(1))nt2
if rat_100>08
val_mid100val_mid检测结果
Else
……
果检图片100元图片进行步50元20元区分
5020均2位数法通占例进行区分通数字某特征进行区分需区分开52
图示52细节图取52左部分进行较(红框圈)数字5两根蓝线间距离面两根蓝线距离2恰恰相反出结果
关键程序:
[hang_mhang_n]size(hang)
hang_newround(sum(hang2)hang_n)
hang_blackhang_new(2)hang_new(1)第黑点第二白点间距离
hang_whitehang_new(3)hang_new(2)第二白点第二黑点间距离
if hang_black>hang_white
val_mid 50
else
val_mid 20
end
end
五 程序运行结果
结果显示正确
六 遇问题
1 关背景复杂度问题
边缘检测提取算法完善导致识程序具局限性体现两方面:
(1) 复杂背景法正常识
背景果复杂二值化会导致复杂背景变成连续线条线条较长时候边缘检测程序会段线条识边缘众数计算时候位置样满足系统会认处边缘事实背景中二值化线条导致剪切边缘法正确实现进影响面中央分割识
图复杂背景边缘检测结果
第幅图原图黑色背景中机绘制条长曲线第二幅图原图背景实际生活中建筑物片两幅图轮廓均法正常提取第幅曲线部分开始进行提取位置错误第二幅图根法正常提取
程序存定局限性处理背景太复杂二值化会出现长曲线纸币图
(2) 浅色背景法正常识
程序边缘检测方法图二值化利背景纸币间黑白差异寻找纸币边缘民币背景浅色时二值化时候会浅色动二值化白色(1)纸币部少部分会二值化黑色边缘周围白色样根法区分纸币背景imfill填充法清二值图边缘
实验图片:
图中二值化整幅图片中央少部分方均二值化白色轮廓提取失败
2 关边缘检测两种算法问题
组成员首先edge函数中sobel算子检测方法通实验发现处理背景较干净图片时方法行背景中干扰时边缘检测提取会出现种问题网查询思考决定种边缘检测提取方法二值化+填充空洞+bwperim函数方法图edge函数边缘检测图
幅图出edge函数边缘然完整部图然存时会干扰边缘位置确定结果次课程设计选择第二种方法
图背景中存干扰图edge函数处理剪切图
图知sobel算子边缘检测种情况法正常运行
七 心体会
通次课程设计图识新思路时解关matlab专业知识熟悉函数法编写程序程中出现种问题解学着莫处通次课程设计深知足相信接时间里会断改正完善程序
参考文献:
matlab初学者教程(翻译版)
基matlab四种民币识方法 邵爱刚
数字信号处理(清华学出版社)
附录:
程序代码:
课程设计课题100元50元20元民币识
—————————————————————————
图预处理部分
—————————————————————————
边缘检测
imimread('50yuanjpg')读取原图
figure(1)
subplot(221)
imshow(im)
title('原始图')显示原图
imim2bw(im)转二值图
subplot(222)
imshow(im)
title('二值图')显示二值图
im2imfill(im'holes')填充空洞
Fbwperim(im2)轮廓提取(bwperim函数二值图轮廓提取)
subplot(223)
imshow(im2)
title('填充图')显示填充
subplot(224)
imshow(F)
title('提取出轮廓')
利edge函数sobel算子进行边缘检测
Iimread('imfill100jpg')
I1rgb2gray(I)
n1
H1(n*n)*ones(nn)
I2imfilter(I1H)
figure(1)
subplot(131)
imshow(I)
title('原图')
subplot(132)
imshow(I1)
title('灰度图')
subplot(133)
imshow(I2)
title('滤波图')
Fedge(I2'sobel')sobel算子边缘检测
figure(2)
imshow(F)
边缘提取算法
[m n]size(F)j图数赋值矩阵m行数n列数
Fdouble(F)图数转换double类型
k0l0变量初始化
左右边缘提取
*******方法简述:两边时行行检测****
*******行轮廓列数记然******
*******求众数***************************
for i1m
for j1n
if F(ij)~00代表黑色果F(ij)黑色(图区域)
kk+1
left(k)j
for j1n1j
if F(ij1)~0
ll+1
right(l)j1
break
end
end
break
end
end
end
计算众数求出左右边界
rightmode(right)
leftmode(left)
边界提取
k0l0
for j1n
for i1m
if F(ij)~00代表黑色果F(ij)黑色(图区域)
kk+1
up(k)i
for i1m1i
if F(i1j)~0
ll+1
down(l)i1
break
end
end
break
end
end
end
计算众数求出边界
upmode(up)
downmode(down)
根边缘位置截取图
picimread('imfill100jpg')
jianqiepic(updownleftright)
jianqieim(updownleftright)
figure(2)
subplot(211)
imshow(im)
title('原图')
subplot(212)
imshow(jianqie)
title('边缘剪切图')
—————————————————————————
图识部分
—————————————————————————
中央数字提取
[m n]size(jianqie)
FI(round(024*m)round(050*m)round(025*n)round(052*n))
FFv2jianqie(0275*m050*m0254*n05*n)截取中央图
FFv2medfilt2(FFv2[44])4*4矩阵中值滤波
FFv2FFv2(2(end4)2(end4))
[mt2 nt2]size(FFv2)
FFv2_bwim2bw(FFv205)二值化
figure(3)
subplot(411)
imshow(jianqie)
title('原图')
subplot(412)
imshow(FFv2)
title('中央数字提取+中值滤波图')
subplot(413)
imshow(FFv2_bw)
title('二值化中央数字图')
纸币检测
Ty_100logical(sum(FFv2_bw)<(mt22))处检测中央数字起始终止边缘二值图某列存0(黑色图区域)logical返回TRUE(1)
Ty_100_lfind((Ty_1001))1位置赋值Ty_100_1
rat_100(Ty_100_l(end)Ty_100_l(1))nt2计算图区域占剪切区域例
if rat_100>08果08100处系数前截取中央图关
val_mid100val_mid检测结果
else检测5020
lie_f 0
for j 1(nt22)
for i 1(mt22)
if ~(FFv2_bw(ij)+lie_f)
liej
lie_f1
end
end
end
前列 2——6 5列取黑白行数
FFv2_bw_fFFv2_bw((lie+2)(lie+6))
hang(3)mt2
for j15
for i1(mt22)
if ~(FFv2_bw_f(ij)+FFv2_bw_f(i+1j)+FFv2_bw_f(i+2j))
hang(1j)i第行记录首次黑点行数
for k(i+2)(mt22)
if (FFv2_bw_f(kj)+FFv2_bw_f(k+1j)+FFv2_bw_f(k+2j))>2
hang(2j)k+1第二行记录二次白点
for l(k+2)mt2
if ~(FFv2_bw_f(lj))
hang(3j)l第三行记录二次黑点
break
end
end
break
end
end
break
end
end
end
[hang_mhang_n]size(hang)
hang_newround(sum(hang2)hang_n)
hang_blackhang_new(2)hang_new(1)第黑点第二白点间距离
hang_whitehang_new(3)hang_new(2)第二白点第二黑点间距离
if hang_black>hang_white
val_mid 50
else
val_mid 20
end
end
subplot(414)
imshow('jieguojpg')
xlabel([val_mid]'Fontsize'36'color''r')
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档