ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:25.61KB ,
资源ID:1064117      下载积分:8 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wnwk.com/docdown/1064117.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(2023年基于matlab的人民币面额识别.docx)为本站会员(g****t)主动上传,蜗牛文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蜗牛文库(发送邮件至admin@wnwk.com或直接QQ联系客服),我们立即给予删除!

2023年基于matlab的人民币面额识别.docx

1、基于matlab的人民币面额识别 基于matlab的人民币的自动识别 姓 名 学 号 院 系 信息科学与工程学院 专 业 年 级 指导老师 本文通过分析第五版人民币的特征,利用纸币中央数字的特征提取和识别的方法,通过matlab软件实现对第五版人民币的100元、50元和20元的识别。 关键词:第五套人民币 边缘检测和提取 中央数字特征 前言:科技在不断进步,曾经的很多手工劳动如今都被先进的机械和电子设备代替。曾经人们交话费、存款、买东西都必须到营业厅或者商场去办理手续,通过客户和效劳人员之间的业务交流实现效劳的实施和体验。如今,自动缴费机、存取款一体机和自动售货机出现在了我们的生活中。这些先进

2、的设备中最重要的一门技术就是:纸币识别技术。当我们将钞票投入缴费机或者存款机时,机器必定会首先识别用户投入的是面额为多少的纸币,之后再进行真伪区分、数据写入等功能。目前已经有很多的识别技术诸如图像匹配法识别,神经网络识别、尺寸识别、纸币内部荧光物质识别等等。本小组提出使用matlab软件,利用软件对图像处理的超强能力,在保证识别准确率的前提下对100元、50元和20元的人民币进行快速有效的识别。 正文 一. 背景介绍 二. Matlab函数介绍 1. Imread 函数imread用于读取图片文件中的数据。 调用格式: A = imread(filename,fmt) X,map = imre

3、ad(filename,fmt) . = imread(filename) 2. Imshow imshow是matlab中显示图像的函数。 调用格式: imshow(BW):显示一张二值图像BW imshow(RGB):显示一张真彩色图像RGB imshow(X,map):用指定调色板来显示图像 3. im2bw matlab中DIP工具箱函数im2bw使用阈值(threshold)变换法把灰度图像(grayscale image)转换成二值图像。一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。 当然, 也可以是其他任意两种颜色的组合。所谓二值图像, 一般意义上是指只有纯黑(0)

4、、纯白(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键来

5、取消之前选择的区域;通过shift+鼠标左键单击或者鼠标右键单击或双击可以确定选择区域。 BW2,locations = imfill(BW) 这种方式, 将返回用户的取样点索引值。注意这里索引值不是选取样点的坐标。 BW2 = imfill(BW,locations) 这种格式允许用户编程时指定选取样点的索引。locations是个多维数组时, 数组每一行指定一个区域。 BW2 = imfill(BW,holes) 填充二值图像中的空洞区域。 如, 黑色的背景上有个白色的圆圈。 那么这个圆圈内区域将被填充。 I2 = imfill(I) 这种调用格式将填充灰度图像中所有的空洞区域。 BW2

6、= imfill(BW,locations,conn) 5. Bwperim 用于查找二值图像的边缘。 调用格式: BW2 = bwperim(BW1) BW2 = bwperim(BW1,conn) BW2 = bwperim(BW1,conn) 表示从输入图像BW1中返回只包括对象边缘像素点的图像。 6. Mode 众数函数,用于计算一组数据中的众数。 众数,简单的说,就是一组数据中占比例最多的那个数。 调用格式: mode(x) 7. medfilt2 中值滤波函数. 调用格式: medfilt2(A,m n) 8. Logical 用于判断参数是否为逻辑值,如果检验内容为逻辑值,将返回

7、TRUE(1),否那么返回FALSE(0)。 调用格式: Logical(value) 9. Find 用来对原始数据中的某个字符串进行定位,以确定其位置。 10. edge 调用格式: BW=edge(I) 采用灰度或一个二值化图像I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地方为1,其他地方为0. BW=edge(I,sobel) 自动选择阈值用sobel算子进行边缘检测。 算子还有roberts算子,prewitt算子,log算子等等。 三. 纸币识别流程图 读入待检测图片 得出结果 进行图像边缘检测提取和边缘剪切 中央数字局部识别 提取中央数字局部 四.

8、流程各局部详细说明 1. 读入待检测图片 Im=imread(100.jpg); figure(1) imshow(Im); 读入一张有黑色背景的100元人民币图片。然后使用imshow函数进行图片查看。 2. 进行图像边缘检测提取 边缘检测共有两种方法,一种是使用edge函数进行边缘检测;另一种是二值化+图像填充+提取边缘的方法。 使用edge函数进行边缘检测,选择Sobel算子。 F=edge(I2,sobel);%sobel算子边缘检测 figure(2) imshow(F) 如图,sobel算子边缘检测后的图像。到达需要的效果。但是由于内部白色纹路较多,为了不影响边缘截取,应选择第二种

9、方法:二值化+图像填充+提取边缘。 首先对图像进行二值化处理,然后使用imfill函数,调用“hole格式,对图像中的空洞进行填充。然后调用bwperim函数,对二值图像进行边缘检测。下面是检测的过程和结果。 3. 边缘剪切 得到了二值化的边缘图像后,需要对边缘进行剪切,以切掉背景图案,只留下钞票图案,便于按比例分割图片。 我们采用mode函数,对边缘位置确定。首先,将二值图读入矩阵,生成m行n列的矩阵。然后一行一行进行检测,遇到白色的区域(值为1)时,就将白色区域所处的列位置记入数组。当检测完毕后,使用mode函数对数组进行检测,数组中数字出现的最多的即是边缘的位置。关键循环如下: for

10、i=1:m for j=1:n if F(i,j)=0%0代表黑色,如果F(i,j)不是黑色(那么是图像区域) k=k+1; left(k)=j; for j1=n:-1:j if F(i,j1)=0 l=l+1; right(l)=j1 break end end break end end end 如图为剪切后的效果灰度图。 4. 提取中央数字局部 百元钞票左边到中央数字1的距离大概占整个长度的0.25,右边是0.5,上边是0.275,下边是0.5。20元和50元的类似。所以使用: FFv2=jianqie(0.275xm:0.50xm,0.254xn:0.5xn) 就可以得到中央数字的图

11、片。 5. 中央局部识别 中央局部识别分两步:1.区分百元和50、20元;2.区分50元和20元。 区分百元的方法很简单。因为无论是百元还是50元还是20元,截取的局部大小都是固定的,而100是3位数,故而所占图片的比例肯定最大。经手算得100元的中央数字大约占超过截取道德图像的80%。所以由此可以判断出待检图像是不是100元。以下是关键程序: Ty_100=logical(sum(FFv2_bw)=0.8% val_mid=100;%val_mid为检测结果 Else 如果待检图片不是100元图片,那么进行下一步,50元和20元的区分。 因为50和20均为2位数,故无法通过所占比例进行区分。

12、只能通过数字的某些特征进行区分。我们只需要区分开5和2即可。 如以下图5和2的细节图。取5和2的靠左的一小局部进行比较(红框圈的),数字5后两根蓝线之间的距离小于上面两根蓝线的距离,而2恰恰相反。于是可以得出结果。 关键程序如下: 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=ha

13、ng_white val_mid = 50; else val_mid = 20; end end 五. 程序运行结果 结果显示正确。 六. 遇到的问题 1. 关于背景复杂度的问题。 由于边缘检测和提取的算法不完善导致识别程序具有局限性。表达在如下两方面: (1) 过于复杂的背景无法正常识别; 因为背景如果过于复杂,二值化后会导致很多复杂的背景变成连续的线条。当这些线条比较长的时候,边缘检测程序就会将这段线条识别为边缘,因为众数计算的时候这个位置同样满足。所以系统会认为此处就是边缘,但事实上只是背景中的一些二值化的线条。故而导致剪切边缘无法正确实现,进而影响到后面的中央分割和识别。 如图,是复

14、杂背景的边缘检测结果。 第一幅图的原图为黑色背景中有随机绘制的几条长曲线,第二幅图的原图是背景为实际生活中的建筑物照片。两幅图的轮廓均无法正常提取。第一幅从曲线局部开始进行提取,位置错误。第二幅图根本无法正常提取。 所以,本程序存在一定的局限性,只能处理一些背景不太复杂、二值化之后不会出现过多长曲线的纸币图。 (2) 浅色背景无法正常识别。 本程序的边缘检测方法是图像二值化后利用背景和纸币之间的黑白差异来寻找纸币的边缘。当人民币的背景为浅色时,二值化的时候会将浅色自动二值化为白色(1),而纸币内部只有少局部会二值化为黑色,但边缘周围仍为白色,这样一来根本无法区分纸币和背景,所以用imfill填充后无法去除地看到二值图的边缘。 以下是实验图片: 从图中可以看到,二值化后整幅图片除了中央一少局部其他地方均被二值化为白色,所以轮廓提取失败了。 2. 关于边缘检测的两种算法的问题。 小组成员首先使用了edge函数中使用sobel算子的检测方法。但是通过实验发现,当处理一些背景比较“干净的图片时,方法可行;当背景中有一些干扰时,边缘检测和提取会出现各种问题。经过上网查询和思考,我们决定使用另一种边缘检测和提取的方法,即二值化+填充空洞+bwperim函数的方法。以下图是edge函数的边缘检测图像。 从这幅图可以看出,用edge函

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:浙ICP备2024059924号-2