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. MySQL8更改数据存储目录

  2. Python 类型提示简介

    Python 3.6+ 版本加入了对"类型提示"的支持. 这些"类型提示"是一种新的语法(在 Python 3.6 版本加入)用来声明一个变量的类型. 通过声明 ...

  3. Solutions:Elastic SIEM - 适用于家庭和企业的安全防护 ( 三)

  4. POJ2763 Housewife Wind (树链剖分)

    差不多是模板题,不过要注意将边权转化为点权,将边的权值赋给它所连的深度较大的点. 这样操作过后,注意查询ask()的代码有所改变(见代码注释) 1 #include<cstdio> 2 # ...

  5. 手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea

    前言 在前面的文章中,演示了如何用 Docker 镜像和 Windows 二进制包来安装运行 Gitea.今天是玩转 Gitea 系列的使用 Helm 在 K3s 上安装 Gitea. 关于 Gite ...

  6. RAID5 IO处理之对齐读代码详解

    1 总体流程 当一个读请求的覆盖范围落在一个chunk范围内时为对齐读,流程图如下所示: 2 入口 在RAID5的IO处理函数 make_request() 一开始进行了对齐读的判断和处理,代码如下所 ...

  7. 驱动开发:内核枚举LoadImage映像回调

    在笔者之前的文章<驱动开发:内核特征码搜索函数封装>中我们封装实现了特征码定位功能,本章将继续使用该功能,本次我们需要枚举内核LoadImage映像回调,在Win64环境下我们可以设置一个 ...

  8. python批量加密文件

    1.文件名的加密与解密 #coding:utf-8 from docx import Document import os,sys from docx.oxml.ns import qn def fi ...

  9. JS中数值类型的本质

    一.JS中的数值类型 众所JS爱好友周知,JS中只有一个总的数值类型--number,它包含了整型.浮点型等数值类型.其中,浮点数的实现思想有点复杂,它把一个数拆成两部分来存储.第一部分是有效位数,也 ...

  10. 【多服务场景化解决方案】AR虚拟技术助力智能家装

    ​ 1 .介绍 总览 本应用采用了华为图形引擎服务的AR虚拟技术,您可以在手机相机里摆放想要购置的家具家电,交互式体验让您可以轻松操控它们的3D图例,以此来确定这些家具家电是否适合摆放在您的家里. 特 ...