基于神经网络的车辆牌照字符识别技术
FPGA教程目录
MATLAB教程目录
-----------------------------------------------------------------------
利用给定的车牌图像库中(在指定的文件夹之中),任意选择其中的多副车牌图像,对其中包含的数字(0~9)或英文字符(A~F)进行手工提取,由于提取以后的图像大小可能不一致,为了便于特征提取,可以对各个图形进行归一化处理(例如:归一化为10×20大小)。
字符分为训练(每个字符至少有5个训练样本)和测试(每种字符可以选择10个加以测试)两大类。通过建立一个三层BP神经网络进行训练,网络的各个参数自己设定。训练完毕,对样本进行测试,并计算测试的准确率。
四、实验结果和分析
1、软件的调试结果(包括调试出的内容和实验的波形、数据、程序出现的现象或界面等)
2、结果分析(程序结果与实验要求之间的差别和原因分析)
包含车牌号的汽车图片。
通过程序运行提取的车牌区域
神经网络训练二次均方差的收敛情况和学习率变化曲线
神经网络训练时,其学习率和二次方差变化为
TRAINBPX: 0/5000 epochs, lr = 0.1, SSE = 68.1032.
TRAINBPX: 50/5000 epochs, lr = 1.14674, SSE = 10.093.
TRAINBPX: 100/5000 epochs, lr = 0.321983, SSE = 0.821155.
TRAINBPX: 150/5000 epochs, lr = 3.69231, SSE = 0.314939.
TRAINBPX: 200/5000 epochs, lr = 42.3412, SSE = 0.0345176.
TRAINBPX: 225/5000 epochs, lr = 143.382, SSE = 0.00973975.
从最终输出的a值可以看出,模式识别还是有一定的误差,但是都比较小。这主要是因为本来在程序设计中就有误差率,所以最后的结果难免有偏差。
五、源程序清单
1:车牌号提取
% license plate recognition - car plate location based on color model
% modified by KouLiangzhi, Oct 10th,2007
I=imread('Car.jpg');
[y,x,z]=size(I);
myI=double(I);
%%%%%%%%%%% 统计分析 %%%%%%%%%%%%%%%
%%%%%%%% Y 方向 %%%%%%%%%%
Blue_y=zeros(y,1);
for i=1:y
for j=1:x
if((myI(i,j,1)<=121)&&myI(i,j,1)>=110&&((myI(i,j,2)<=155)&&(myI(i,j,2)>=141))&&((myI(i,j,3)<=240)&&(myI(i,j,3)>=210)))
% 蓝色RGB的灰度范围
Blue_y(i,1)= Blue_y(i,1)+1; % 蓝色象素点统计
end
end
end
[temp MaxY]=max(Blue_y); % Y方向车牌区域确定
PY1=MaxY;
while ((Blue_y(PY1,1)>=5)&&(PY1>1))
PY1=PY1-1;
end
PY2=MaxY;
while ((Blue_y(PY2,1)>=5)&&(PY2<y))
PY2=PY2+1;
end
IY=I(PY1:PY2,:,:);
%%%%%%%% X 方向 %%%%%%%%%%
Blue_x=zeros(1,x); % 进一步确定X方向的车牌区域
for j=1:x
for i=PY1:PY2
if((myI(i,j,1)<=121)&&myI(i,j,1)>=110&&((myI(i,j,2)<=155)&&(myI(i,j,2)>=141))&&((myI(i,j,3)<=240)&&(myI(i,j,3)>=210)))
Blue_x(1,j)= Blue_x(1,j)+1;
end
end
end
PX1=1;
while ((Blue_x(1,PX1)<3)&&(PX1<x))
PX1=PX1+1;
end
PX2=x;
while ((Blue_x(1,PX2)<3)&&(PX2>PX1))
PX2=PX2-1;
end
PX1=PX1+17;
PX2=PX2-1;
PY1=PY1+5;
PY2=PY2-2; % 对车牌区域的修正
Plate=I(PY1:PY2,PX1:PX2,:);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure,imshow(Plate);
m=PX2-PX1;
n=PY2-PY1;
S=ones(n,m);
for j=1:m
for i=1:n
if((Plate(i,j,1)<=121)&&Plate(i,j,1)>=110&&((Plate(i,j,2)<=155)&&(Plate(i,j,2)>=141))&&((Plate(i,j,3)<=240)&&(Plate(i,j,3)>=210)))
S(i,j)=0;
end
end
end
2:神经网络训练
%【步骤一、样本输入】
nntwarn off;
A=[0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1]';
B=[1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 0]';
C=[0 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 0]';
D=[1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 0]';
E=[1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1]';
F=[1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0]';
zer=[1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1]';
one=[0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0]';
two=[1 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1]';
thr=[1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1]';
fou=[1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0]';
fiv=[1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1]';
six=[1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1]';
sev=[1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]';
eig=[1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1]';
nin=[1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1]';
% 则对训练样本的矩阵初始化如下:
alphabet=[A,B,C,D,E,F,zer,one,two,thr,fou,fiv,six,sev,eig,nin];
p=alphabet;
targets=eye(16,16);
t=targets;
%------------样本的输出值,即输出目标矢量,希望在每一种模式输入时,在输出的位置上输出为1,其他的位置应该为0。若共有模式为16种
%------------每种模式的样本训练为1个,则输出矢量可以简单表示为: targets=eye(16,16)
%----------------确定网络的输入、隐层和输出层
[r,q]=size(p); %输入
[s2,q]=size(t); %输出
s1=13; %隐层神经元的数目,可以根据实际需要选择,一般其数目不能超过训练样本的个数。
%-----------------确定网络训练的初值
[w1,b1]=nwlog(s1,r);
[w2,b2]=rands(s2,s1);
% 【步骤二、设置网络参数并训练】
%----------------确定网络训练的参数
disp_freq=50; %网络训练的显示频率
max_epoch=5000; %最大训练次数
err_goal=0.01; %训练的误差
lr=0.1; %学习率大小
lr_inc=1.05; %增量
lr_dec=0.5; %减量
momentum=0.75; %动量因子
err_ratio=1.05; %误差率
%-------------训练开始
tp=[disp_freq max_epoch err_goal lr lr_inc lr_dec momentum err_ratio]';
[w1,b1,w2,b2,epochs,TR]=trainbpx(w1,b1,'logsig',w2,b2,'logsig',p,t,tp);
save digit.mat w1 b1 w2 b2; %--------存储权值,以方便测试
%【步骤三、测试】
%---------------测试,输入的测试样本为p
load digit_noise.mat
layer1=logsig(w1*p,b1);
a=logsig(w2*layer1,b2);
%-----------------根据a中的最大值可以判断属于何种故障模式
基于神经网络的车辆牌照字符识别技术相关推荐
- mser python车牌识别,基于OPENCV的车辆牌照识别系统研究
摘要: 在我国汽车工业迅猛发展的今天,汽车保有量的逐年大幅增加,对传统的车辆管理和交通运行方式面临着巨大的压力和挑战.为了解决上述问题,车辆牌照自动识别技术(AVI)应运而生,并发展成为现代智能交通系 ...
- 计算机毕业论文内容参考|基于神经网络的网络安全态势感知技术研究
文章目录 导文 文章重点 摘要 前言 绪论 课题背景 国内外现状与趋势 课题内容 相关技术与方法介绍 技术分析 技术设计 技术实现 总结与展望 导文 基于神经网络的网络安全态势感知技术研究 文章重点 ...
- 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测...
话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...
- 基于神经网络的车牌识别,卷积神经网络车牌识别
现在很多工程项目都用车牌识别系统,我想问一下车牌识别系统的原理是什么? 核心算法:从六个步骤来提取我们抓拍的车牌信息,第一:图像捕捉采集.第二:车牌定位.第三:预处理.第四:字符分割.第五:字符识别. ...
- 基于matlab的汽车牌照自动识别
分析汽车牌照的特点,正确获取整个图像中车牌的区域,并识别出车牌号. 将图像预处理.分割.分析等关键技术结合起来,理论与实践相结合,提高图像处理关键技术的综合应用 牌照自动识别是一项利用车辆的动态视频或 ...
- 基于图像处理的汽车牌照的识别
基于图像处理的汽车牌照的识别 作者:陈秋菊 指导老师:李方洲 (温州师范学院 物理与电子信息学院 325027) 摘要:以一幅汽车牌照的识别为例,具体介绍了车牌自动识别的原理.整个处理过程分为预处理 ...
- 基于神经网络的文字识别,BP神经网络图像识别
1.怎么进行人民币冠字码识别 人民币纸币上除了汉字.少数民族文字.汉语拼音及第四套人民币主币上增加的盲文外,还有用以控制各种票券印制数量和防伪作用的冠号和号码.冠,取首之意,冠字也称"字头& ...
- 最新综述:车辆重识别技术
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 [导读]这是一篇新出的车辆ReID中文综述论文,相信对那些想要整体 ...
- 浅析AI边缘计算的车辆/车牌识别技术研发及场景应用
车牌识别技术是计算机视频图像识别技术在车辆牌照识别中的一种应用,它融合了ORC识别.云计算等多种技术,可将运动中的汽车牌照从复杂的背景中提取并识别出来,通过车牌提取.图像预处理.特征提取.车牌字符识别 ...
最新文章
- Autodesk MapGuide Enterprise 2011 Update 1 for Windows发布了
- PowerDesigner设计数据库
- android ndk 编译c++11,Android NDK的C++11标准支持
- 【笔记】分离字符串中的数字、字母和汉字
- canvas绘制多边形
- cocos2dx打飞机项目笔记六:GameScene类和碰撞检测 boundingbox
- 性能测试培训: 监控CPU之python
- 前端npm install失败
- python opencv光流跟踪_Opencv Python版学习笔记(四)光流跟踪之Gunnar Farneback’s 算法...
- 小米这样做,我是拒绝的
- 被称为“Google 最大黑科技”,开发谷歌大脑,这位 AI 掌门人到底有多牛?
- 2020年python考试时间_想准备2021年三月份的Python考试,应该怎么准备呢?
- redis 错误 Error reply to PING from master: '-DENIED Redis is running in protected mode because prote
- redhat安装wine教程_超简单制作多合一系统安装启动U盘的工具
- php 深度验证18位身份证是否正确,并获取地址,出生日期(时间戳),性别。
- Linux Postfix
- 【Word】Word更改默认模板样式——使用自定义模板【以Windows10+Word2019为例】
- MySQL插入数据时报错Cause: java.sql.SQLException: #HY000
- USB接口PCB设计
- 0基础转行软件测试,月薪6000和11000的必备技能,截然不同...