基于MATLAB的人民币识别系统
1、选图背景
- 随着科技的发展,图像识别技术在计算机视觉领域起着越来越重要的作用,现已被应用到金融、军事、公安刑侦、生物医学、机器视觉等各个领域;
- 随着国民经济的快速发展,人民币大量流通市场,商业交易都离不开人民币;
- 开发出一种高效率、低成本、通用性强的人民币识别系统,能够减少大量的人力资源,提升资金的周转速度,十分具有前景。
2、研究内容及方法
2.1 研究内容
- 结合图像处理方面的知识对人民币进行研究分析。
- 对纸币图像进行预处理工作,改善图像质量,提高识别准确率。
- 以第五版人民币作为研究目标,分析特征区域,完成对纸币面值的识别。
- 使用MATLAB实现
2.2 研究方法
2.2.1预处理
对图像进行灰度化、边缘检测、旋转变换(Radon变换)等操作
灰度处理:将彩色图像转化为灰度级相等的图像,灰度变换是为了简化信息,在用灰度图像进行后续分析能够减少大量计算量。
边缘检测:边缘检测是为了找到图像中像素变化明显的点的集合,定位图像特征区域,图像特征区域定位指的是在初始图像中确定出纸币图像所在的位置。
旋转变换(倾斜校正):由于纸币摆放、拍摄角度问题会使纸币图像一定程度的倾斜或几何变形,需要进行倾斜校正。采用雷登变换。
腐蚀:主要是为了缩减图像中的白色区域,用imerode函数实现图像腐蚀。
闭运算:能消除小的空洞,填充凹角并填补轮廓线中的断裂,使轮廓线更光滑。用imclose函数实现闭运算。
二值化:二值图像(黑白图像)指的是图像中每个像素点只有黑、白两个值或者说灰度等级只有两种的图像,二值图的灰度范围是0或者255,二维矩阵由0、1组成,“0”表示黑色(灰度值等于0),“1” 表示白色(灰度值等于255),数据类型为1位二进制位。二值图像具有占用空间小、信息掩藏性强的特点。
纸币定位—边缘切割:图像的定位分割是为了获得完整、单独的目标图像,它是图像处理中非常关键的一步,图像分割主要有基于区域和基于边界分割两种方法,本系统采用区域定位分割法。
在纸币识别系统中其目的是基于纸币区域和背景区域的色调的不同,定位纸币图像的四条边缘线,确定纸币在整幅图像中的具体位置,通过剪切把纸币和背景分离。定位的准确性将直接影响到后面的特征提取和识别。
2.2.2 纸币面值识别
中央数字提取
中央数字提取流程
模板匹配识别
该方法是基于中央位置(即数字部分)来进行区分。通过上一步骤把纸币单独剪切出来后,根据不同币值人民币长宽比例不同,使用 imcrop 函数把中央带有特征数字的区域剪切出来。接下来,调用rgb2gray函数把提取的部分转换成灰度图像,使用 medfilt2 函数进行中值滤波除去噪声并进行明暗反转。se=strel('rectangle',[a,b]),使用strel函数创建一个a*b的矩形结构元素,调用imdilate函数和imerode函数对结构元素se进行闭运算(先膨胀后腐蚀)。
长度对比识别
对降噪后的图片进行二值化处理,得到黑白图像并进行显示。找出数字区域左右边界的第一个黑点,计算出两个黑点之间的水平距离,即为中央数字的宽度,计算出数字宽度与整张纸币长度的比值。[8]
参考表1所示第五版纸币基本特征,根据数字宽度:中央数字宽度最大的图片即为100元,依次类推宽度最小的为1元;根据数字长度和整张纸币长度的币值:币值最大的为100元,依次类推比值最小的为1元。
币值种类 100元 50元 20元 10元 5元 1元 主色调 红 绿 棕 蓝绿 紫 橄榄绿 规格 长156mm 宽76mm 长150mm 宽70mm 长145mm 宽70mm 长140mm 宽70mm 长135mm 宽63mm 长135mm 宽62mm 中央数字长度 38mm 25mm 24mm 22mm 12mm 7mm 中央数字长度/纸币长度 0.243 0.167 0.166 0.157 0.089 0.052 R、G、B对比识别
RGB色彩就是物理学里光的三原色,人类视觉可以感知的所有颜色都可以通过R、G、B(不同亮度度)互相混合得到。同样,任何一种颜色都可以被分解成R、G、B(不同亮度)三种颜色。[9]
提取出数字区域RGB分量,调用mean函数,使用公式返回每个R、G、B分量的平均值,结合不同纸币特征区域R、G、B的不同,通过分量之间作差,判断纸币面纸大小
2.2.3 GUI 界面制作
GUI(图形用户界面)是有各种图形对象(如窗口、按钮、文本和菜单)组成显示的计算机操作用户界面。用户通过运算或控制代码激活图形对象,引起一系列程序代码的执行,结果通过用户界面进行反馈。MATLAB GUI是MATLAB中的一个极具实用性、交互性、美观性的功能,将流程化的MATLAB程序包装进一个简单易懂的图形中去,把繁琐的过程简洁化,从而方便了用户的使用过程,让程序的执行变得更加直观。同时,GUI中信息、数据的传输效率非常高,结果运行与反馈便捷、准确,开发人员不需要在接口代码的设计上花费太多精力,为使用MATLAB的程序设计者提供了一个简单的开发环境,为使用者带来了良好的体验,提高了开发者的工作效率。
本系统设计的平台如下图所示,主界面上显示了待识别图像、旋转校正后的图像、截取面额图像、处理后图像,设置“读取钞票”功能按钮,点击按钮读入待识别纸币图像即可实现对应的功能。
3、结果展示
4、源码获取方式
编程环境:Matlab 2021b(适用2016以上任何版本)
下载链接:https://mbd.pub/o/bread/mbd-Y5yYmJtx 或https://www.jdmm.cc/file/2708227
演示视频:https://www.bilibili.com/video/BV1RW4y1E7dL/
基于MATLAB的人民币识别系统的更多相关文章
- 基于MATLAB的人脸识别算法的研究
基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别:从智能手机的人脸识别的性别识别:如今无人驾驶汽车更是应用了大量的机器 ...
- 数字图像处理:基于MATLAB的车牌识别项目 标签: 图像处理matlab算法 2017-06-24 09:17 98人阅读 评论(0)
学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧.前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码.今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码.这里没有使用 ...
- 基于opencv的车牌识别系统
前言 学习了很长一段时间了,需要沉淀下,而最好的办法就是做一个东西来应用学习的东西,同时也是一个学习的过程. 概述 OpenCV的全称是:Open Source Computer Vision ...
- 基于Matlab的多自由度系统固有频率及振型计算
可参考文涛,基于Matlab语言的多自由度振动系统的固有频率及主振型计算分析,2007 对于无阻尼系统 [VEC,VAL]=eig(inv(A)*K) 对于有阻尼系统,参考振动论坛计算程序 输入M,D ...
- 基于VGGnet的人脸识别系统-ubuntu 系统下的Caffe环境搭建(CPU)
对于caffe的系统一般使用linux系统,当然也有windows版本的caffe,不过如果你一开始使用了windows下面的caffe,后面学习的过程中,会经常遇到各种错误,网上下载的一些源码.模型 ...
- python基于OpenCV的人脸识别系统
想获得所有的代码,请下载(来自我的CSDN): https://download.csdn.net/download/qq_40875849/11292912 主函数: from recognitio ...
- 【原】基于matlab的蓝色车牌定位与识别---绪论
本着对车牌比较感兴趣,自己在课余时间摸索关于车牌的定位与识别,现将自己所做的一些内容整理下,也方便和大家交流. 考虑到车牌的定位涉及到许多外界的因素,因此有必要对车牌照的获取条件进行一些限定: 一.大 ...
- AI识万物:从0搭建和部署手语识别系统 ⛵
作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 计算机视觉实战系列: https://www.showmeai.tech ...
- 基于MFC开发的指纹识别系统.
MFC-FingerPrint 基于MFC开发的指纹识别系统. 效果图如下: 在第12步特征入库中,会对当前指纹的mdl数据与databases中所有的mdl进行对比,然后返回识别结果. 一.载入图像 ...
- 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统
基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...
随机推荐
- 《吐血整理》高级系列教程-吃透Fiddler抓包教程(24)-Fiddler如何优雅地在正式和测试环境之间来回切换-中篇
1.简介 在开发或者测试的过程中,由于项目环境比较多,往往需要来来回回地反复切换,那么如何优雅地切换呢?宏哥今天介绍几种方法供小伙伴或者童鞋们进行参考. 2.实际工作场景 2.1问题场景 (1)已发布 ...
- CSP-J2020 洛谷P7072 直播获奖(Splay/桶排序)
题目描述 NOI2130 即将举行.为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线.本次竞赛的获奖率为 w%,即当前排名前 w% 的选手的最低成绩就是即时的分数线. 更具体 ...
- prometheus监控实战
第一节.环境和软件版本 1.1.操作系统环境 主机ip 操作系统 部署软件 备注 192.168.10.10 Centos7.9 Grafana.Pushgateway.Blackbox Export ...
- 算法设计(动态规划实验报告) 基于动态规划的背包问题、Warshall算法和Floyd算法
一.名称 动态规划法应用 二.目的 1.掌握动态规划法的基本思想: 2.学会运用动态规划法解决实际设计应用中碰到的问题. 三.要求 1.基于动态规划法思想解决背包问题(递归或自底向上的实现均可): 2 ...
- break ,continue,retrun的区别
break ,continue,retrun的区别 1:break 在循环体内结束整个循环过程 for (var i = 1; i <= 5; i++) { if(i == 3){ break; ...
- rabbitmq原理和应用
0.1.索引 https://blog.waterflow.link/articles/1663772504649 RabbitMQ 是一个轻量级且易于部署的消息队列.它支持开箱即用的多种消息传递协议 ...
- Selenium4+Python3系列(六) - Selenium的三种等待,强制等待、隐式等待、显式等待
为什么要设置元素等待 直白点说,怕报错,哈哈哈! 肯定有人会说,这也有点太直白了吧. 用一句通俗易懂的话就是:等待元素已被加载完全之后,再去定位该元素,就不会出现定位失败的报错了. 如何避免元素未加载 ...
- 【题解】CF1722F L-shapes
题面传送门 其实这题根本不用搜索,有耐心即可. 可以发现,在 \(n\times m\) 范围内扫,可能合法的只有以下四种情况,其中蓝色代表示是 *,红色表示不能是 *,其中黄色五角星表示当前 \(i ...
- 版本控制工具Git介绍-01
使用版本控制工具是为了方便团队开发,比如多人共同维护一个项目的时候,用版本控制工具可以很方便的维护项目代码,如果哪天你改了一个版本,出问题了,我们也可以很快的找到你改了什么,这里介绍使用比较多的版本控 ...
- Ajax基础(上)
当我们在浏览器地址栏中输入一个网址,或者通过网页表单向服务器提交内容的时候,我们就开始与服务器进行交互. 传统的Web应用交互: (1)用户触发一个Http请求到服务器,服务器对其进行处理后再返回一个 ...