2023年11月28日发(作者:现代索纳塔多少钱)
基于MATLAB的车牌识别系统的设计与实现
1.1 题目的主要研究内容
(1)工作的主要描述(宋体小四号不加粗1.5倍行距)
智能交通系统利用先进的信息技术改善交通状况,使交通更畅通、更安全、
更绿色。车牌识别系统是的核心技术之一,它主要包括车牌定位、字符分割和字
符识别三个核心模块。随着安防视频步入高清时代,视频的分辨率越来越高,智
能交通系统对车牌识别技术有了更高的要求:处理速度更快、环境适应性更强、
识别率更高。
本文从图像预处理、车牌定位、字符分割、字符识别四个方面,具体介绍了
车牌自动识别的原理。并用MATLAB软件编程来实现每一个部分,最后识别出
汽车牌照。
(2)系统流程图
1.2 题目研究的工作基础或实验条件
(1)硬件环境:PC机 设备名称 LAPTOP-7SSHP9VJ
处理器 MD Ryzen 7 5700U with Radeon Graphics 1.80 GHz
机带 RAM 16.0 GB (13.9 GB 可用)
设备 ID 04FA2EC7-DFE3-489F-A61B-E5AA87DDDE15
产品 ID 00342-36141-18074-AAOEM
系统类型 64 位操作系统, 基于 x64 的处理器
笔和触控 没有可用于此显示器的笔或触控输入
(2)软件环境:MATLAB R2019a
1.3 数据集描述
一个完整的车牌号识别系统要完成从图像采集到字符识别输出,过程相当复
杂,基本可以分成硬件部分跟软件部分,硬件部分包括系统触发、图像采集,软
件部分包括图像预处理、车牌定位、字符分割、字符识别四大部分。
本文的数据集包括汽车图片、声音模板和字符模板。汽车图片包括用手机拍
摄的七张照片;声音模板包括阿拉伯数字0-9、英文大写字母A-Z(不包括I和
O)、贵州、桂、京、苏、渝、粤、车牌定位出错、车牌检测、程序运行中、检
测结果、提取出错;字符模板包括阿拉伯数字0-9、英文大写字母A-Z、贵、桂、
京、苏、渝、粤、鲁、陕、豫。
1.4 特征提取过程描述
牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜
色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设
备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、
车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图
像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包
括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时
触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位
出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。
1.4.1 图像预处理
RGB图像:又称彩色图像,RGB色彩就是常说的三原色,R代表Red(红
色),G代表Green(绿色),B代表Blue(蓝色)。自然界中肉眼所能看到的任
何色彩都可以由这三种色彩混合叠加而成,RGB图像用三维数组表示,最后一
维长度为3,(1,2,3分别表示RGB三个分量),对于每一个分量,数值范围也是
0~255。红、绿、蓝三个通道的缩略图,都是以灰度显示的,用不同的灰度色阶
来表示“红,绿,蓝”在图像中的比重。通道中的纯白,代表了该色光在此处为
最高亮度,亮度级别是255,0表示亮度最低,255表示亮度最亮。只有三个通
道同时有值才可以显示出彩色(如红色通道显示为红色)。所以车牌原始图像是
RGB图像。
灰度图像:是每个像素只有一个采样颜色的图像,这类图像通常显示为从最
暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚
至可以是不同亮度上的不同颜色。灰度图像的每个像素只有一个亮度信息的单色
图像。其中的亮度信息,采样自从白色与黑色之间划分的若干等级。我们常说的
灰度阶,就是从白色到黑色划分的等级数。一般为2^n,常用的灰度阶为256,
用单个字节(8bit,256=2^8)就可以存储每一个灰度值,灰度图像用二维数组表
示。
二值化图像,又称黑白图像,顾名思义是由黑色和白色两种颜色表示的图像。
即图像上的像素点的灰度值设置为0或255。
将彩色图像(RGB图像转化为灰度图像的过程称为图像灰度化。要表示灰
度图,就需要把亮度值进行量化,有四种方法:见表1。
表1
图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,
能凸显出感兴趣的目标的轮廓。在matlab中,二值化图像常常为0和1数组表
示,二值化的常用算法有几种,见表2。
表2
1.4.2 车牌定位
自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确
定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜
索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一
步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出
来。流程图如下所示:
导入原始图像图像预处理边缘提取对图像开闭运算车牌定位
1.4.3 车牌字符分割
完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。字
符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符
内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、
字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的
字符分割有较好的效果。流程图如下所示:
1)计算水平投影进行车牌水平矫正。
2)去掉车牌的框架。
3)分析垂直投影找到每个字符中心的位置。
4)按左右宽度切割出字符。
分析垂直投影找
到每个字符的中去掉车牌的框架
心位置
计算水平投影进按左右宽度切割
行车牌水平矫正出字符
1.4.4 车牌字符识别
字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。基于
模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中
模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。基于人工
神经元网络的算法有两种:一种是先对待识别字符进行特征提取,然后用所获得
特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网络,由网络
自动实现特征提取直至识别出结果。实际应用中,牌照识别系统的识别率与牌照
质量和拍摄质量密切相关。牌照质量会受到各种因素的影响,如生锈、污损、油
漆剥落、字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌照、假牌照等等;
实际拍摄过程也会受到环境亮度、拍摄亮度、车辆速度等等因素的影响。这些影
响因素不同程度上降低了牌照识别的识别率,也正是牌照识别系统的困难和挑战
所在。为了提高识别率,除了不断的完善识别算法,还应该想办法克服各种光照
条件,使采集到的图像最利于识别。
字符依次分析出
误差最小的图片
名字
切割出字符送入与字符库的图片分析之差最小的
字符库相减图片是哪张
1.5 分类过程描述
首先,载入原始图片,接下来就是对图像进行处理阶段,主要经过灰度变换,
中值滤波等手段。彩色图像包含着大量的颜色信息,不但在存储上开销很大,而
且在处理上也会降低系统的执行速度,因此在对图像进行识别等处理中经常将彩
色图像转变为灰度图像,以加快处理速度。
由彩色转换为灰度的过程叫做灰度化处理。选择的标准是经过灰度变换后,
像素的动态范围增加,图像的对比度扩展,使图像变得更加清晰、细腻、容易识
别。然后进行定位和切割。这里采用的是对蓝色像素点的采集判断,因为就中国
地区而言绝大部分车牌的底色的蓝色的,虽然算法很快很识别出大区域蓝色,但
缺点在于对蓝色车辆的车牌识别不是很好。
然后对图像进行裁剪,切割出牌照的彩色图像。之后对牌照字符进行预处理,
和对整体图像的处理相同,进行一系列灰度,中值滤波和膨胀腐蚀处理,使车牌
的字符更加明显,有利于下一步的分割处理。然后对牌照字符进行分割,其中的
分割子程序的原理,寻找连续有文字的字块,若长度大于阈值,则认为有两个字
符组成,需要切割,反之,则认为只有一个字符。
然后对字符进行识别。这里对字符的识别采用了模板相减的方法;对分割出
的字符挨个与字符库中的字符进行模板对比,选择差别最小的进行确认,这种方
法优点是简单快捷,缺点是识别率比较差。识别流程图如下所示;
建立数据库计算误差依次识别并标注
样本与数据库中图找到误差最小的图
片相减片
1.6 主要程序代码
clc; %清除命令行
clear all; %清除工作空间所有变量
close all; %关闭所有图形窗口
% ==============开始计时==============================
tic
%=====================读入图片=========================
[fn,pn,fi] = uigetfile(\'汽车图片*.jpg\',\'选择图片\');%显示检索文件的对话框
I = imread([pn fn]); %读入彩色图像
figure(\'NumberTitle\',\'off\',\'Name\',\'原始图像\');
imshow(I);title(\'原始图像; %像是原始图像
%==================加入进度条===========================
waitbar_;
%================图像分割区域(车牌定位)====================
picture =image_segmentation(I);
threshold=50;
%========================倾斜校正===============
[picture_1,angle] = rando_bianhuan(picture); %倾斜校正 picture ·返回校正后的图片angle ·返
回倾斜角度
%=========================形态学操作====================
picture_6 = xingtaixue(picture_1);%主要对图像
%=============对图像进一步裁剪,保证边框贴近字体==
bw = caijian(picture_6);
%=================文字分割=================================
image=qiege(bw);
%=================显示分割图像结果================================
bb =zifu_shibie(image);
imshow(picture_1),title ([\'识别车牌号码:\', bb],\'Color\',\'r\');
%=====================导出文本===========================
fid=fopen(\'\',\'a+\');
fprintf(fid,\'%srn\',bb,datestr(now));
fclose(fid);
%===================读出声音============================
duchushengyin(bb);
% ================读取计时===================================
t= toc;
1.7 运行结果及分析
采用车牌号渝F87P20进行仿真,仿真效果如下:
图1 车牌原始图像
使用车牌颜色特征的定位方法处理车辆图像,得到的车牌牌照提取图,效
果如图2示。
图2 车牌定位
使用radon变换法处理车辆牌照,得到的车牌倾斜校正,效果如图3所示
。
图3 车牌倾斜校正
使用最大类间方差法进行车辆图像二值化,效果如图4所示。
图4 车牌二值化
经过一系列的形态学操作,边框处理等等,效果如图5所示。
图5 边框处理
实验结果表明,该系统可以很好地实现车牌识别的功能,实验结果准确,图
像清晰可辨。
更多推荐
车牌识别
发布评论