首页 > 其他分享 >基于模板和形态学处理的车牌检测分割和识别matlab仿真,可以识别其中的一个英文字母和所有数字

基于模板和形态学处理的车牌检测分割和识别matlab仿真,可以识别其中的一个英文字母和所有数字

时间:2023-04-06 15:58:06浏览次数:46  
标签:英文字母 fenge bmp bw matlab imread 识别 车牌

1.算法描述

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

 

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

 

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

 

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

 

       主要模块如下:颜色信息提取、车牌区域定位、识别、提取、检测倾斜度、车牌校正、车牌区域二值化、擦除干扰区域、文字分割、模版匹配、结果输出。

 

1 颜色信息提取

 

        针对家庭小型车蓝底白字车牌进行识别。根据彩色图像的RGB比例定位出近似蓝色的候选区域。但是由于RGB三原色空间中两点间的欧氏距离与颜色距离不成线性比例,在设定蓝色区域的定位范围时不能很好的控制。因此造成的定位出错是最主要的。这样在图片中出现较多的蓝色背景情况下识别率会下降,不能有效提取车牌区域。

 

2 倾斜校正

 

       针对倾斜角度的图片采取rando算法进行倾斜角度计算,并对倾斜图片进行修正,从而得到与水平方向一致的图片,有利于后期的图片分割及图像识别。

 

3.字符分割

 

       计算得到车牌区域分割后的图象,对其白色像素进行水平垂直投影,并计算水平垂直峰值,检测合理的字符高宽比。可用与区域分割相同的方法进行峰值的删除与合并。但在字符分割时,往往由于阈值取得不好,导致字符分割不准确。针对这种情况,可以由车牌格式的先验知识,对分割出的字符宽度进行统计分析,用以指导分割,对因错误分割过宽的字符进行分裂处理。

 

​​​​​​​4.字体识别

 

        常用做法是采用神经网络模型对系统进行训练。但是这种做法增加了系统的复杂度,对实时性要求较高的场合不适应。这里采用简单模版匹配算法。由于在前期的有效处理使得分割后的字体清晰度完整度都能保持较高的水平。有利于提高模版匹配的成功率。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

 

 

 

 

 

 

3.MATLAB核心程序

 

tic
%=====================读入图片================================
[fn,pn,fi]=uigetfile('*.jpg','选择图片');
I=imread([pn fn]);figure(1),imshow(I);title('原始图像');%显示原始图像
chepailujing=[pn fn]
I_bai=I;
[PY2,PY1,PX2,PX1]=caitu_fenge(I);
%===============车牌区域根据面积二次修正======================
[PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1);
%==============更新图片=============================
 
Plate=I_bai(PY1:PY2,PX1:PX2,:);%使用caitu_tiqu
%==============考虑用腐蚀解决蓝色车问题=============
bw=Plate;figure(2),subplot(331),imshow(bw);title('车牌图像');%hsv彩图提取图像
%==============这里要根据图像的倾斜度进行选择
bw=rgb2gray(bw);subplot(332),imshow(bw);title('灰度图像');
%================倾斜校正======================
qingxiejiao=rando_bianhuan(bw)
bw=imrotate(bw,qingxiejiao,'bilinear','crop');subplot(333),imshow(bw);title('倾斜校正');%取值为负值向右旋转
%==============================================
bw=im2bw(bw,graythresh(bw));subplot(334),imshow(bw);title('二值化');
%==========================================================
bw=~bw;subplot(335),imshow(bw);title('擦除反色'); 
%=============对图像进一步裁剪,保证边框贴近字体===========
bw=touying(bw);subplot(336);imshow(bw);title('Y方向处理');
bw=~bw;
bw = bwareaopen(bw, threshold);
bw=~bw;subplot(337),imshow(bw);title('二次擦除');
[y,x]=size(bw);%对长宽重新赋值
%=================文字分割=================================
fenge=shuzifenge(bw,qingxiejiao)
[m,k]=size(fenge);
%=================显示分割图像结果========================= 
figure(3);
for s=1:2:k-1
    subplot(1,k/2,(s+1)/2);imshow(bw( 1:y,fenge(s):fenge(s+1)));
end
%================ 给五张图片定位===============
zm_sz_1 =bw( 1:y,fenge(5):fenge(6));
zm_sz_2 =bw( 1:y,fenge(7):fenge(8));
shuzi_1 =bw( 1:y,fenge(9):fenge(10)); 
shuzi_2 =bw( 1:y,fenge(11):fenge(12)); 
shuzi_3 =bw( 1:y,fenge(13):fenge(14)); 
%==========================识别====================================
%======================把修正数据读入==============================
xiuzhengzm_sz_1=  imresize(zm_sz_1,[110 55],'bilinear');  %调整大小
xiuzhengzm_sz_2 = imresize(zm_sz_2,[110 55],'bilinear');
xiuzhengshuzi_1 = imresize(shuzi_1,[110 55],'bilinear');
xiuzhengshuzi_2 = imresize(shuzi_2,[110 55],'bilinear');
xiuzhengshuzi_3 = imresize(shuzi_3,[110 55],'bilinear');
%============ 把0-9 的数据存储方便访问====================
%hanzishengfen=duquhanzi(imread('cpgui.bmp'),imread('cpguizhou.bmp'),imread('cpjing.bmp'),imread('cpsu.bmp'),imread('cpyue.bmp'));
%因数字和字母比例不同。这里要修改
shuzizimu=duquszzm(imread('0.bmp'),imread('1.bmp'),imread('2.bmp'),imread('3.bmp'),imread('4.bmp'),...
                   imread('5.bmp'),imread('6.bmp'),imread('7.bmp'),imread('8.bmp'),imread('9.bmp'),...
                   imread('10.bmp'),imread('11.bmp'),imread('12.bmp'),imread('13.bmp'),imread('14.bmp'),...
                   imread('15.bmp'),imread('16.bmp'),imread('17.bmp'),imread('18.bmp'),imread('19.bmp'),...
                   imread('20.bmp'),imread('21.bmp'),imread('22.bmp'),imread('23.bmp'),imread('24.bmp'),...
                   imread('25.bmp'),imread('26.bmp'),imread('27.bmp'),imread('28.bmp'),imread('29.bmp'),...
                   imread('30.bmp'),imread('31.bmp'),imread('32.bmp'),imread('33.bmp'));
shuzi = duqushuzi(imread('0.bmp'),imread('1.bmp'),imread('2.bmp'),imread('3.bmp'),imread('4.bmp'),...
                 imread('5.bmp'),imread('6.bmp'),imread('7.bmp'),imread('8.bmp'),imread('9.bmp')); 

 

  

 

标签:英文字母,fenge,bmp,bw,matlab,imread,识别,车牌
From: https://www.cnblogs.com/51matlab/p/17293015.html

相关文章

  • 目标图像的HOG特征提取matlab仿真
    1.算法描述HOG特征提取方法就是将一个image(你要检测的目标或者扫描窗口): 1)灰度化(将图像看做一个x,y,z(灰度)的三维图像); 2)采用Gamma校正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰; 3)计......
  • m基于简化后的轻量级yolov4深度学习网络农作物检测算法matlab仿真
    1.算法描述        YOLOv4的深层网络包括SPP模块、PANet模块、YOLOHead模块和部分卷积,其主要作用是加强目标特征提取并获取预测结果。SPP模块的输入端和输出端各连接一个三次卷积块,每个三次卷积块包含2个1×1卷积和1个3×3卷积。PANet模块包含特征层堆......
  • m基于HMM和博弈模型的LSTM互联网情感词性分类识别matlab仿真
    1.算法描述        传统的情感分析研究大多立足于解决主观性文本的情感分类问题,面向复杂交互式文本的情感演化分析却力所不逮.本文以天涯论坛短文本中文在线评论为研究对象,首先提出一种高效的情感计算框架捕捉在线评论所蕴含的情感倾向;然后将情感计算和博弈论相结合提......
  • 保护隐私安全,移动端生物识别技术成新宠
    移动信息技术的不断发展,越来越多的人使用手机进行日常生活和工作中的各种操作,如支付、网购、社交等。这也带来了移动安全问题的挑战。为了解决这些问题,移动端生物识别技术应运而生,成为当前移动安全技术的新宠。一、生物识别技术的基本原理生物识别技术是指通过对人体生理特征或......
  • 转载自团队博客:基于深度学习的人脸识别会议签到系统
    电梯演讲:https://www.bilibili.com/video/BV1kc411W7w4?t=9.9原型:1,主界面  2,会议管理  3,人员管理  4,会议室管理......
  • 基于pytorch搭建VGGNet神经网络用于花类识别
    文章目录基于pytorch搭建VGGNet神经网络用于花类识别写在前面VGGNet网络模型搭建训练结果展示小结 基于pytorch搭建VGGNet神经网络用于花类识别写在前面  上一篇写过基于pytorch搭建AlexNet神经网络用于花类识别项目实战,建议阅读此篇前先弄明白上篇所述之事......
  • 基于pytorch搭建ResNet神经网络用于花类识别
    文章目录基于pytorch搭建ResNet神经网络用于花类识别写在前面ResNet网络模型搭建✨✨✨训练结果展示小结基于pytorch搭建ResNet神经网络用于花类识别写在前面【当然这是要在你对这部分网络结构的理论有充分的了解之后】另一方面,我觉得这部分真的得你自己切切实实的钻研,自己一步步的......
  • 目标识别
    目标识别图像轮廓图像轮廓:具有相同颜色或强度的连续点的曲线作用: 可用于图形分析 物体的识别和检测注意点: 为了检测的准确性,需要先对图像进行二值化或Canny操作 画轮廓时会修改输入的图像findContours(img,mode,ApproximationMode) mode:模式 RETR_EXTERNAL=0表示只......
  • 自动驾驶-预瞄-Pure pursuit纯跟踪算法-MATLAB实现
    有空把引入、逻辑、原理介绍给写了,目前先给大家看看代码。将来写大概会分成这么几块:汽车运动学自行车模型跟踪算法主流模型及特点纯跟踪算法原理推导代码介绍代码原创,来之不易,请勿不注明转载。喜欢点个赞吧!网上许多代码都跑不起来hhclc;clear;%------------formroa......
  • c++实现Matlab矩阵Matrix类(实矩阵Matrix、复矩阵CMatrix)
    全栈工程师开发手册(作者:栾鹏)matlab2c动态链接库下载matlab库函数大全matlab2c基础教程matlab2c开发全解教程开发注意事项:1、目前matlab2c对矩阵的实现仅包含实数型、复数型数据。实数型矩阵使用Matrix定义,复数型矩阵使用CMatrix定义。2、实数矩阵元素int、float元素类型会自动......