1、选图背景

  • 随着科技的发展,图像识别技术在计算机视觉领域起着越来越重要的作用,现已被应用到金融、军事、公安刑侦、生物医学、机器视觉等各个领域;
  • 随着国民经济的快速发展,人民币大量流通市场,商业交易都离不开人民币;
  • 开发出一种高效率、低成本、通用性强的人民币识别系统,能够减少大量的人力资源,提升资金的周转速度,十分具有前景。

2、研究内容及方法

2.1 研究内容

  1. 结合图像处理方面的知识对人民币进行研究分析。
  2. 对纸币图像进行预处理工作,改善图像质量,提高识别准确率。
  3. 以第五版人民币作为研究目标,分析特征区域,完成对纸币面值的识别。
  4. 使用MATLAB实现

2.2 研究方法

2.2.1预处理

对图像进行灰度化、边缘检测、旋转变换(Radon变换)等操作

  1. 灰度处理:将彩色图像转化为灰度级相等的图像,灰度变换是为了简化信息,在用灰度图像进行后续分析能够减少大量计算量。

  2. 边缘检测:边缘检测是为了找到图像中像素变化明显的点的集合,定位图像特征区域,图像特征区域定位指的是在初始图像中确定出纸币图像所在的位置。

  3. 旋转变换倾斜校正):由于纸币摆放、拍摄角度问题会使纸币图像一定程度的倾斜或几何变形,需要进行倾斜校正。采用雷登变换。

  4. 腐蚀:主要是为了缩减图像中的白色区域,用imerode函数实现图像腐蚀。

  5. 闭运算:能消除小的空洞,填充凹角并填补轮廓线中的断裂,使轮廓线更光滑。用imclose函数实现闭运算。

  6. 二值化:二值图像(黑白图像)指的是图像中每个像素点只有黑、白两个值或者说灰度等级只有两种的图像,二值图的灰度范围是0或者255,二维矩阵由0、1组成,“0”表示黑色(灰度值等于0),“1” 表示白色(灰度值等于255),数据类型为1位二进制位。二值图像具有占用空间小、信息掩藏性强的特点。

  7. 纸币定位—边缘切割:图像的定位分割是为了获得完整、单独的目标图像,它是图像处理中非常关键的一步,图像分割主要有基于区域和基于边界分割两种方法,本系统采用区域定位分割法。

    在纸币识别系统中其目的是基于纸币区域和背景区域的色调的不同,定位纸币图像的四条边缘线,确定纸币在整幅图像中的具体位置,通过剪切把纸币和背景分离。定位的准确性将直接影响到后面的特征提取和识别。

2.2.2 纸币面值识别

  1. 中央数字提取

    中央数字提取流程

  2. 模板匹配识别

    该方法是基于中央位置(即数字部分)来进行区分。通过上一步骤把纸币单独剪切出来后,根据不同币值人民币长宽比例不同,使用 imcrop 函数把中央带有特征数字的区域剪切出来。接下来,调用rgb2gray函数把提取的部分转换成灰度图像,使用 medfilt2 函数进行中值滤波除去噪声并进行明暗反转。se=strel('rectangle',[a,b]),使用strel函数创建一个a*b的矩形结构元素,调用imdilate函数和imerode函数对结构元素se进行闭运算(先膨胀后腐蚀)。

  3. 长度对比识别

    对降噪后的图片进行二值化处理,得到黑白图像并进行显示。找出数字区域左右边界的第一个黑点,计算出两个黑点之间的水平距离,即为中央数字的宽度,计算出数字宽度与整张纸币长度的比值。[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
  4. 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的人民币识别系统的更多相关文章

  1. 基于MATLAB的人脸识别算法的研究

    基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别:从智能手机的人脸识别的性别识别:如今无人驾驶汽车更是应用了大量的机器 ...

  2. 数字图像处理:基于MATLAB的车牌识别项目 标签: 图像处理matlab算法 2017-06-24 09:17 98人阅读 评论(0)

    学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧.前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码.今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码.这里没有使用 ...

  3. 基于opencv的车牌识别系统

    前言 学习了很长一段时间了,需要沉淀下,而最好的办法就是做一个东西来应用学习的东西,同时也是一个学习的过程. 概述     OpenCV的全称是:Open Source Computer Vision ...

  4. 基于Matlab的多自由度系统固有频率及振型计算

    可参考文涛,基于Matlab语言的多自由度振动系统的固有频率及主振型计算分析,2007 对于无阻尼系统 [VEC,VAL]=eig(inv(A)*K) 对于有阻尼系统,参考振动论坛计算程序 输入M,D ...

  5. 基于VGGnet的人脸识别系统-ubuntu 系统下的Caffe环境搭建(CPU)

    对于caffe的系统一般使用linux系统,当然也有windows版本的caffe,不过如果你一开始使用了windows下面的caffe,后面学习的过程中,会经常遇到各种错误,网上下载的一些源码.模型 ...

  6. python基于OpenCV的人脸识别系统

    想获得所有的代码,请下载(来自我的CSDN): https://download.csdn.net/download/qq_40875849/11292912 主函数: from recognitio ...

  7. 【原】基于matlab的蓝色车牌定位与识别---绪论

    本着对车牌比较感兴趣,自己在课余时间摸索关于车牌的定位与识别,现将自己所做的一些内容整理下,也方便和大家交流. 考虑到车牌的定位涉及到许多外界的因素,因此有必要对车牌照的获取条件进行一些限定: 一.大 ...

  8. AI识万物:从0搭建和部署手语识别系统 ⛵

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 计算机视觉实战系列: https://www.showmeai.tech ...

  9. 基于MFC开发的指纹识别系统.

    MFC-FingerPrint 基于MFC开发的指纹识别系统. 效果图如下: 在第12步特征入库中,会对当前指纹的mdl数据与databases中所有的mdl进行对比,然后返回识别结果. 一.载入图像 ...

  10. 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统

    基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...

随机推荐

  1. PAT (Basic Level) Practice 1002 写出这个数 分数 20

    读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10100. 输出格式: 在一行内输出 ...

  2. 手把手教你玩转 Gitea|使用 Docker 安装 Gitea

    使用 Docker 安装 Gitea 的过程非常简单的,堪比"一键式"安装.Gitea 安装使用系列教程将会从多种方式进行全方位的实操演示. 视频演示中使用腾讯云实验环境安装 Do ...

  3. 实验02_Proteus仿真数码管显示报告

    一.原理总结   利用两个寄存器 R4 和 R5 来存储两个数码管的显示数字,R4 用来存储前一个数码管显示数字,而 R5 用来存储后一个数码管显示数字,利用左移操作 RLC 取 A 中首位放入 C ...

  4. 一篇文章带你掌握主流基础框架——Spring

    一篇文章带你掌握主流基础框架--Spring 这篇文章中我们将会介绍Spring的框架以及本体内容,包括核心容器,注解开发,AOP以及事务等内容 那么简单说明一下Spring的必要性: Spring技 ...

  5. 深入理解AQS--jdk层面管程实现【管程详解的补充】

    什么是AQS 1.java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列.条件队列.独占获取.共享获取等,而这些行为的抽象就是基于AbstractQueu ...

  6. 条件期望:Conditional Expectation 举例详解之入门之入门之草履虫都说听懂了

    我知道有很多人理解不了 "条件期望" (Conditional Expectation) 这个东西,有的时候没看清把随机变量看成事件,把 \(\sigma\)-algebra 看成 ...

  7. POJ2104 K-th number (整体二分)

    刚学了整体二分,用这种解法来解决这道题. 首先对于每个询问时可以二分解决的,这也是可以使用整体二分的前提.将原来的序列看成是插入操作,和询问操作和在一起根据值域进行二分.用树状数组来检验二分值. 1 ...

  8. 基于AIE的贵州省FVC提取

    植被覆盖度获取 植被覆盖度(Fractional Vegetation Cover,FVC),是指植被(包括叶.茎.枝)在地面的垂直投影面积占统计区总面积的百分比,范围在 [0,1] 之间.FVC 是 ...

  9. [Mysql] 两段提交

    事务提交 Mysql 默认开启自动提交事务 两段提交 把一个事务分成两个阶段来提交,就是把redolog拆分成了prepare和commit两段 MySQL想要准备事务的时候会先写redolog.bi ...

  10. nrf9160做主控连接阿里云——(mqtt_simple例程)

    简介:基本每一个云都支持MQTT,这种轻量级协议在数据量不大的应用上是一个很好的选择.上一篇博客使用SLM例程去连接了阿里云,本次使用mqtt_simple去连接云进行测试,关于一些已近在前面文章中演 ...