m基于GRNN广义回顾神经网络的车牌字符分割和识别算法matlab仿真

发布时间 2023-05-22 19:33:23作者: 我爱C编程

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

2.算法涉及理论知识概要

        车牌识别系统(Vehicle License Plate RecognitionVLPR) 是计算机视频图像识别技术在车辆牌照识别中的一种应用。车牌识别在高速公路车辆管理中得到广泛应用,电子收费(ETC)系统中,也是结合DSRC技术识别车辆身份的主要手段。

 

       车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等技术,识别车辆牌号、颜色等信息,最新的技术水平为字母和数字的识别率可达到99.7%,汉字的识别率可达到99%。在停车场管理中,车牌识别技术也是识别车辆身份的主要手段。在深圳市公安局建设的《停车库(场)车辆图像和号牌信息采集与传输系统技术要求》中,车牌识别技术成为车辆身份识别的主要手段。

 

       车牌识别技术结合电子不停车收费系统(ETC)识别车辆,过往车辆通过道口时无须停车,即能够实现车辆身份自动识别、自动收费。在车场管理中,为提高出入口车辆通行效率,车牌识别针对无需收停车费的车辆(如月卡车、内部免费通行车辆),建设无人值守的快速通道,免取卡、不停车的出入体验,正改变出入停车场的管理模式。

 

       随着交通现代化的发展要求,汽车牌照自动识别技术已经越来越受到人们的重视。车牌自动识别技术中车牌定位、字符切割、字符识别及后期处理是其关键技术。由于受到运算速度及内存大小的限制,以往的车牌识别大都是基于灰度图象处理的识别技术。其中首先要求正确可靠地检出车牌区域,为此提出了许多方法,如Hough变换以检测直线来提取车牌边界区域、使用灰度分割及区域生长进行区域分割,或使用纹理特征分析技术等。Hough变换方法对车牌区域变形或图象被污损时失效的可能性会大大增加,而灰度分割则比直线检测的方法要稳定,但当图象在有许多与车牌的灰度非常相似的区域时,该方法也就无能为力了。纹理分析在遇到类似车牌纹理特征的其他干扰时,车牌定位正确率也会受到影响。本文提出基于车牌彩色信息的彩色分割方法。

 

       GRNN通常被用来进行函数逼近。它具有一个径向基隐含层和一个特殊的线性层。第一层和第二层的神经元数目都与输入的样本向量对的数目相等。GRNN结构如图1所示,整个网络包括四层神经元:输入层、模式层、求和层与输出层。

 

 

 

      输入层的神经元数目与学习样本中输入向量的维数m相等,每个神经元都是一个简单的分布单元,这些神经元直接将输入变量传递到隐含层中。

 

        模式层的神经元数目即为学习样本的数目n,每个神经元都分别对应一个不同的学习样本,模式层中第i个神经元的传递函数为:

 

 

 

3.MATLAB核心程序

 

for ii = 11
 
if ii == 1
   load stepB1.mat
end
if ii == 2
   load stepB2.mat
end
if ii == 3
   load stepB3.mat
end
if ii == 4
   load stepB4.mat
end
if ii == 5
   load stepB5.mat
end
if ii == 6
   load stepB6.mat
end
if ii == 7
   load stepB7.mat
end
if ii == 8
   load stepB8.mat
end
if ii == 9
   load stepB9.mat
end
if ii == 10
   load stepB10.mat
end
if ii == 11
   load stepB11.mat
end
if ii == 12
   load stepB12.mat
end
if ii == 13
   load stepB13.mat
end
if ii == 14
   load stepB14.mat
end
if ii == 15
   load stepB15.mat
end
if ii == 16
   load stepB16.mat
end
if ii == 17
   load stepB17.mat
end
if ii == 18
   load stepB18.mat
end
if ii == 19
   load stepB19.mat
end
if ii == 20
   load stepB20.mat
end
if ii == 21
   load stepB21.mat
end
if ii == 22
   load stepB22.mat
end
 
 
word1=imresize(tmps{1},[40 20]);
word2=imresize(tmps{2},[40 20]);
word3=imresize(tmps{3},[40 20]);
word4=imresize(tmps{4},[40 20]);
word5=imresize(tmps{5},[40 20]);
word6=imresize(tmps{6},[40 20]);
word7=imresize(tmps{7},[40 20]);
 
%第1个
words   = word1;
wordss  = func_yuchuli(words);
wordsss = sim(net,wordss');
[V,I]   = max(wordsss);
d       = I;
y{1}    = func_check(d);
%第2个
words   = word2;
wordss  = func_yuchuli(words);
wordsss = sim(net,wordss');
[V,I]   = max(wordsss);
d       = I;
y{2}    = func_check(d);
%第3个
words   = word3;
wordss  = func_yuchuli(words);
wordsss = sim(net,wordss');
[V,I]   = max(wordsss);
d       = I;
y{3}    = func_check(d);
%第4个
words   = word4;
wordss  = func_yuchuli(words);
wordsss = sim(net,wordss');
[V,I]   = max(wordsss);
d       = I;
y{4}    = func_check(d);
%第5个
words   = word5;
wordss  = func_yuchuli(words);
wordsss = sim(net,wordss');
[V,I]   = max(wordsss);
d       = I;
y{5}    = func_check(d);
%第6个
words   = word6;
wordss  = func_yuchuli(words);
wordsss = sim(net,wordss');
[V,I]   = max(wordsss);
d       = I;
y{6}    = func_check(d);
%第7个
words   = word7;
wordss  = func_yuchuli(words);
wordsss = sim(net,wordss');
[V,I]   = max(wordsss);
d       = I;
y{7}    = func_check(d);
figure(1);
subplot(241);imshow(word1);title(num2str(y{1}));
subplot(242);imshow(word2);title(num2str(y{2}));
subplot(243);imshow(word3);title(num2str(y{3}));
subplot(244);imshow(word4);title(num2str(y{4}));
subplot(245);imshow(word5);title(num2str(y{5}));
subplot(246);imshow(word6);title(num2str(y{6}));
subplot(247);imshow(word7);title(num2str(y{7}));
pause(2);
 
end