基于MATLAB的人民币识别系统

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

2、研究内容及方法

2.1 研究内容

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

2.2 研究方法

2.2.1预处理

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

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

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

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

    基于MATLAB的人民币识别系统

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

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

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

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

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

2.2.2 纸币面值识别

  1. *数字提取

    基于MATLAB的人民币识别系统

    *数字提取流程

  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函数,使用基于MATLAB的人民币识别系统公式返回每个R、G、B分量的平均值,结合不同纸币特征区域R、G、B的不同,通过分量之间作差,判断纸币面纸大小

2.2.3 GUI 界面制作

GUI(图形用户界面)是有各种图形对象(如窗口、按钮、文本和菜单)组成显示的计算机操作用户界面。用户通过运算或控制代码激活图形对象,引起一系列程序代码的执行,结果通过用户界面进行反馈。MATLAB GUI是MATLAB中的一个极具实用性、交互性、美观性的功能,将流程化的MATLAB程序包装进一个简单易懂的图形中去,把繁琐的过程简洁化,从而方便了用户的使用过程,让程序的执行变得更加直观。同时,GUI中信息、数据的传输效率非常高,结果运行与反馈便捷、准确,开发人员不需要在接口代码的设计上花费太多精力,为使用MATLAB的程序设计者提供了一个简单的开发环境,为使用者带来了良好的体验,提高了开发者的工作效率。

本系统设计的平台如下图所示,主界面上显示了待识别图像、旋转校正后的图像、截取面额图像、处理后图像,设置“读取钞票”功能按钮,点击按钮读入待识别纸币图像即可实现对应的功能。

基于MATLAB的人民币识别系统

3、结果展示

基于MATLAB的人民币识别系统基于MATLAB的人民币识别系统基于MATLAB的人民币识别系统基于MATLAB的人民币识别系统基于MATLAB的人民币识别系统基于MATLAB的人民币识别系统

4、源码获取方式

编程环境:Matlab 2021b(适用2016以上任何版本)

下载链接:https://mbd.pub/o/bread/mbd-Y5yYmJtx 或https://www.jdmm.cc/file/2708227

演示视频:https://www.bilibili.com/video/BV1RW4y1E7dL/

基于MATLAB的人民币识别系统