【卡号识别】基于matlab CNN银行卡数字识别【含Matlab源码 030期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、CNN简介

1 机器如何识图
先给大家出个脑筋急转弯:在白纸上画出一个大熊猫,一共需要几种颜色的画笔?——大家应该都知道,只需要一种黑色的画笔,只需要将大熊猫黑色的地方涂上黑色,一个大熊猫的图像就可以展现出来。

我们画大熊猫的方式,其实和妈妈们的十字绣很接近——在给定的格子里,绣上不同的颜色,最后就可以展现出一幅特定的“图片”。而机器识图的方式正好和绣十字绣的方式相反,现在有了一幅图片,机器通过识别图片中每个格子(像素点)上的颜色,将每个格子里的颜色都用数字类型存储,得到一张很大的数字矩阵,图片信息也就存储在这张数字矩阵中。
在这里插入图片描述
上图中每一个格子代表一个像素点,像素点里的数字代表颜色码,颜色码范围是[0,255],(各式各样的颜色都是由红、绿、蓝三色组成,每个颜色都是0~255之间数字)

我们在得到的一张大数字矩阵的基础上开展卷积神经网络识别工作:
机器识图的过程:机器识别图像并不是一下子将一个复杂的图片完整识别出来,而是将一个完整的图片分割成许多个小部分,把每个小部分里具有的特征提取出来(也就是识别每个小部分),再将这些小部分具有的特征汇总到一起,就可以完成机器识别图像的过程了

2 卷积神经网络原理介绍
用CNN卷积神经网络识别图片,一般需要的步骤有:
(1)卷积层初步提取特征
(2)池化层提取主要特征
(3)全连接层将各部分特征汇总
(4)产生分类器,进行预测识别

2.1 卷积层工作原理
卷积层的作用:就是提取图片每个小部分里具有的特征
假定我们有一个尺寸为66 的图像,每一个像素点里都存储着图像的信息。我们再定义一个卷积核(相当于权重),用来从图像中提取一定的特征。卷积核与数字矩阵对应位相乘再相加,得到卷积层输出结果。
在这里插入图片描述
(429 = 18
1+540+511+550+1211+750+351+240+2041)
卷积核的取值在没有以往学习的经验下,可由函数随机生成,再逐步训练调整
当所有的像素点都至少被覆盖一次后,就可以产生一个卷积层的输出(下图的步长为1)
在这里插入图片描述
机器一开始并不知道要识别的部分具有哪些特征,是通过与不同的卷积核相作用得到的输出值,相互比较来判断哪一个卷积核最能表现该图片的特征——比如我们要识别图像中的某种特征(比如曲线),也就是说,这个卷积核要对这种曲线有很高的输出值,对其他形状(比如三角形)则输出较低。卷积层输出值越高,就说明匹配程度越高,越能表现该图片的特征。

卷积层具体工作过程:
比如我们设计的一个卷积核如下左,想要识别出来的曲线如下右:
在这里插入图片描述
现在我们用上面的卷积核,来识别这个简化版的图片——一只漫画老鼠
在这里插入图片描述
当机器识别到老鼠的屁股的时候,卷积核与真实区域数字矩阵作用后,输出较大:6600
在这里插入图片描述
而用同一个卷积核,来识别老鼠的耳朵的时候,输出则很小:0
在这里插入图片描述
我们就可以认为:现有的这个卷积核保存着曲线的特征,匹配识别出来了老鼠的屁股是曲线的。我们则还需要其他特征的卷积核,来匹配识别出来老鼠的其他部分。卷积层的作用其实就是通过不断的改变卷积核,来确定能初步表征图片特征的有用的卷积核是哪些,再得到与相应的卷积核相乘后的输出矩阵

2.2 池化层工作原理
池化层的输入就是卷积层输出的原数据与相应的卷积核相乘后的输出矩阵
池化层的目的:
为了减少训练参数的数量,降低卷积层输出的特征向量的维度
减小过拟合现象,只保留最有用的图片信息,减少噪声的传递
最常见的两种池化层的形式:
最大池化:max-pooling——选取指定区域内最大的一个数来代表整片区域
均值池化:mean-pooling——选取指定区域内数值的平均值来代表整片区域
举例说明两种池化方式:(池化步长为2,选取过的区域,下一次就不再选取)
在这里插入图片描述
在44的数字矩阵里,以步长22选取区域,比如上左将区域[1,2,3,4]中最大的值4池化输出;上右将区域[1,2,3,4]中平均值5/2池化输出

2.3 全连接层工作原理
卷积层和池化层的工作就是提取特征,并减少原始图像带来的参数。然而,为了生成最终的输出,我们需要应用全连接层来生成一个等于我们需要的类的数量的分类器。
全连接层的工作原理和之前的神经网络学习很类似,我们需要把池化层输出的张量重新切割成一些向量,乘上权重矩阵,加上偏置值,然后对其使用ReLU激活函数,用梯度下降法优化参数既可。

⛄二、部分源代码

%印刷体识别
clc;clear;close all;
addpath(‘util/’);
addpath(‘data/’);
inputpath=‘data/’;
fdir=dir(strcat(inputpath,‘*.jpg’));
p=size(fdir);
method=2;%定位方法
levelth=0.3;%水平分割缩放阈值
for i=2:p(1)
im=imread(fdir(i).name);
imtp=imresize(im,0.25);
%图像灰度化
if(length(size(im))>1)
im=double(rgb2gray(im));
else
im=double(im);
end
im=imresize(im,0.25);

th=graythresh(im);
pt=size(im);

%提取上下位面
if(method==1)
im=GuassSmoothfilter(im)*255;%平滑
cent=2;
[Labels,BW]=KmeansSg(im,cent);%kmeans聚类
[pMax,pMin]=Findline(BW);%Hough变换
downlevel=pMax.y-(pMax.y-pMin.y)*0.30;
uplevel=pMin.y+(pMax.y-pMin.y)*0.55;
else
[pMax,pMin,pxMax,pxMin]=levelSg(im,levelth);%水平集分割
downlevel=pMax-(pMax-pMin)*0.29;
uplevel=pMin+(pMax-pMin)*0.55;
end

imcrop=im(uplevel:downlevel,:);%定位银行卡号
po=size(imcrop);
imtpcrop=zeros(po(1),po(2),3);
imtpcrop(1:po(1),:,1)=imtp(uplevel:downlevel,:,1);
imtpcrop(1:po(1),:,2)=imtp(uplevel:downlevel,:,2);
imtpcrop(1:po(1),:,3)=imtp(uplevel:downlevel,:,3);
figure;
imshow(imcrop,[]);title(‘灰度切割’)
figure;
imshow(imtpcrop,[]);title(‘彩色切割’)

srcyuv=rgb2yuv(imtpcrop);%rgb转换为YUV通道
figure;
imshow(srcyuv(:,:,2),[]);title(‘yuv通道’)
edg=edge(srcyuv(:,:,3),‘sobel’);%canny边缘检测

figure;
B=im2bw(uint8(imcrop),0.2);
imshow(B,[]);title(‘二值化’)

%[L,num] = bwlabel(~B,4);%获取联通区域
imwrite(uint8((~B)*255),‘x.jpg’);
figure;
imshow(edg,[]);title(‘边缘’)
B=uint8((~B)*255);
cropAll(B)%最终裁剪
recognize%卡号识别

end

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]邸平.基于卷积神经网络的银行卡数字识别研究[J].电脑与信息技术. 2021,29(05)

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值