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

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

1.算法描述

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

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

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

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

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

1 颜色信息提取

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

2 倾斜校正

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

3.字符分割

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

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

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

2.仿真效果预览
matlab2022a仿真结果如下:

1.png
2.png
3.png
4.png

3.MATLAB核心程序

%=====================读入图片================================
[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')); 
相关文章
|
2天前
|
算法
基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真
本程序基于海鸥优化算法(SOA)进行三维曲面最高点搜索的MATLAB仿真,输出收敛曲线和搜索结果。使用MATLAB2022A版本运行,核心代码实现种群初始化、适应度计算、交叉变异等操作。SOA模拟海鸥觅食行为,通过搜索飞行、跟随飞行和掠食飞行三种策略高效探索解空间,找到全局最优解。
|
2天前
|
算法 数据可视化 数据安全/隐私保护
一级倒立摆平衡控制系统MATLAB仿真,可显示倒立摆平衡动画,对比极点配置,线性二次型,PID,PI及PD五种算法
本课题基于MATLAB对一级倒立摆控制系统进行升级仿真,增加了PI、PD控制器,并对比了极点配置、线性二次型、PID、PI及PD五种算法的控制效果。通过GUI界面显示倒立摆动画和控制输出曲线,展示了不同控制器在偏转角和小车位移变化上的性能差异。理论部分介绍了倒立摆系统的力学模型,包括小车和杆的动力学方程。核心程序实现了不同控制算法的选择与仿真结果的可视化。
28 15
|
1天前
|
算法
基于小波变换和峰值搜索的光谱检测matlab仿真,带GUI界面
本程序基于小波变换和峰值搜索技术,实现光谱检测的MATLAB仿真,带有GUI界面。它能够对CO2、SO2、CO和CH4四种成分的比例进行分析和提取。程序在MATLAB 2022A版本下运行,通过小波分解、特征提取和峰值检测等步骤,有效识别光谱中的关键特征点。核心代码展示了光谱数据的处理流程,包括绘制原始光谱、导数光谱及标注峰值位置,并保存结果。该方法结合了小波变换的时频分析能力和峰值检测的敏锐性,适用于复杂信号的非平稳特性分析。
|
1天前
|
机器学习/深度学习 算法 安全
基于深度学习的路面裂缝检测算法matlab仿真
本项目基于YOLOv2算法实现高效的路面裂缝检测,使用Matlab 2022a开发。完整程序运行效果无水印,核心代码配有详细中文注释及操作视频。通过深度学习技术,将目标检测转化为回归问题,直接预测裂缝位置和类别,大幅提升检测效率与准确性。适用于实时检测任务,确保道路安全维护。 简介涵盖了算法理论、数据集准备、网络训练及检测过程,采用Darknet-19卷积神经网络结构,结合随机梯度下降算法进行训练。
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
272 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
162 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
138 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
9月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
9月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)