当前位置: 首页 > article >正文

基于matlab的人民币面额识别

本文通过分析第五版人民币的特征,利用纸币中央数字的特征提取和识别的方法,通过matlab软件实现对第五版人民币的100元、50元和20元的识别。

  • Matlab函数介绍
  1. Imread

函数imread用于读取图片文件中的数据。

调用格式:

A = imread(filename,fmt)

[X,map] = imread(filename,fmt)

[...] = imread(filename)

  1. Imshow

imshowmatlab中显示图像的函数。

调用格式:

imshow(BW):显示一张二值图像BW

imshow(RGB):显示一张真彩色图像RGB

imshow(X,map):用指定调色板来显示图像

  1. im2bw

matlabDIP工具箱函数im2bw使用阈值threshold)变换法把灰度图像(grayscale image)转换成二值图像。一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。 当然, 也可以是其他任意两种颜色的组合。所谓二值图像 一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。 当然, 也可以是其他任意两种颜色的组合。

调用格式:

BW = im2bw(I, level)

BW = im2bw(X, map, level)

BW = im2bw(RGB, level)

其中level就是设置阈值的。level取值范围[0, 1]

  1. Imfill

该函数用于填充图像区域和“空洞”。

调用格式:

BW2 = imfill(BW)

这种格式将一张二值图像显示在屏幕上, 允许用户使用鼠标在图像上点几个点, 这几个点围成的区域即要填充的区域。要以这种交互方式操作, BW必须是一个二维的图像。用户可以通过按Backspace键或者Delete键来取消之前选择的区域;通过shift+鼠标左键单击或者鼠标右键单击或双击可以确定选择区域。

[BW2,locations] = imfill(BW)

这种方式, 将返回用户的取样点索引值。注意这里索引值不是选取样点的坐标。

BW2 = imfill(BW,locations)

这种格式允许用户编程时指定选取样点的索引。locations是个多维数组时, 数组每一行指定一个区域。

BW2 = imfill(BW,'holes')

填充二值图像中的空洞区域。 如, 黑色的背景上有个白色的圆圈。 则这个圆圈内区域将被填充。

I2 = imfill(I)

这种调用格式将填充灰度图像中所有的空洞区域。

BW2 = imfill(BW,locations,conn)

  1. Bwperim

用于查找二值图像的边缘。

调用格式:

BW2 = bwperim(BW1)
       BW2 = bwperim(BW1,conn)
       BW2 = bwperim(BW1,conn)

表示从输入图像BW1中返回只包括对象边缘像素点的图像。

  1. Mode

众数函数,用于计算一组数据中的众数。

众数,简单的说,就是一组数据中占比例最多的那个数。

调用格式:

mode(x)

  1. medfilt2

中值滤波函数.

调用格式:

medfilt2(A,[m n])

  1. Logical

用于判断参数是否为逻辑值,如果检验内容为逻辑值,将返回TRUE1),否则返回FALSE0)。

调用格式:

Logicalvalue

  1. Find

用来对原始数据中的某个字符串进行定位,以确定其位置。

  1. edge

调用格式:

BW=edge(I)

采用灰度或一个二值化图像I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地方为1,其他地方为0.

BW=edge(I,sobel)

自动选择阈值用sobel算子进行边缘检测。

算子还有roberts算子,prewitt算子,log算子等等。

  • 流程各部分详细说明

读入待检测图片

Im=imread(‘100.jpg;

figure(1)

imshow(Im);

读入一张有黑色背景的100元人民币图片。然后使用imshow函数进行图片查看。

  1. 进行图像边缘检测提取

边缘检测共有两种方法,一种是使用edge函数进行边缘检测;另一种是二值化+图像填充+提取边缘的方法。

使用edge函数进行边缘检测,选择Sobel算子。

F=edge(I2,'sobel');%sobel算子边缘检测

figure(2)

imshow(F)

如图,sobel算子边缘检测后的图像。达到需要的效果。但是由于内部白色纹路较多,为了不影响边缘截取,故选择第二种方法:二值化+图像填充+提取边缘。

首先对图像进行二值化处理,然后使用imfill函数,调用“hole”格式,对图像中的空洞进行填充。然后调用bwperim函数,对二值图像进行边缘检测。下面是检测的过程和结果。


http://www.kler.cn/a/389353.html

相关文章:

  • c++ 与 Matlab 程序的数据比对
  • 【深度学习】Java DL4J 2024年度技术总结
  • 雷电9最新版安装Magisk+LSPosd(新手速通)
  • NextJs - ServerAction获取文件并处理Excel
  • Unity新版InputSystem短按与长按,改键的实现
  • 在centos上编译安装opensips【初级-默认安装】
  • redis bind 127.0.0.1和bind 10.34.56.78的区别
  • Hive面试题-- 查询各类型专利 top10 申请人及专利申请数
  • c++基础28函数的类型
  • oracle死锁彻底解决办法
  • 蓝桥杯 懒洋洋字符串--字符串读入
  • Day39 | 动态规划 :完全背包应用 零钱兑换零钱兑换II
  • 用Puppeteer点击与数据爬取:实现动态网页交互
  • 自动驾驶革命:从特斯拉到百度,谁将主宰未来交通?
  • 沈阳乐晟睿浩科技有限公司抖音小店展望未来
  • 【机器学习】机器学习中用到的高等数学知识
  • ZooKeeper在kafka集群中有何作用
  • 冗余连接 代随写法的C#版本
  • 腾讯混元宣布大语言模型和3D模型正式开源
  • Java灵魂拷问13个为什么,你都会哪些?
  • 多用户商城系统的功能及设计和开发
  • Linux 系统结构
  • 什么是电机绕组热保护,它们如何限制浪涌电流?
  • SpringBoot基础系列学习(四):Thymeleaf模板
  • Django中间件应该怎么使用
  • 把握鸿蒙生态崛起的机遇:开发者视角的探讨