题目:车牌识别的MATLAB实现
数字图像处理技术的应用领域非常广泛,其中运用于车牌识别系统是具有代表性的。随着现代交通技术的发展,汽车逐渐成为人们日常生活中不可缺少的一种交通工具。停车场管理的自动化、高速公路收费的自动化,这必然对交通管理有更高的要求。但是在现有的图像处理的车牌识别算法中,在存在识别速度慢,识别效率低等问题,所以对车牌识别算法的研究是非常有必要的。
一个完整的车牌识别系统包括车牌图像采集、车牌定位、车牌字符分割、车牌字符识别。本文主要依据图像处理的基本理论,对于车牌识别中的车牌定位算法进行学习、研究——首先设计了基于边缘检测的车牌定位算法,研究各种边缘检测算子的边缘检测效果,选择合适的边缘检测算子进行边缘检测。发现经过边缘检测后的图像还存在许多干扰区域。随后直接进行车牌定位,发现不仅增加了车牌定位的计算量影响运行速度还会出现误定位的情况。为了达到更好的定位效果,在边缘检测后增加形态学处理的方法,对图像腐蚀、填充简化图像数据,去除不相干结构,节省运算时间。最后对车牌进行具体的定位,对图像进行行列扫描,先定位出车牌的左右边界,再定位出车牌的上下边界。
基本要求(或指标)
- 学习研究车牌定位所用到的滤波算法、灰度转换算法、边缘检测算法
- 从Roberts算子、Sobel算子、Prewitt算子、拉普拉斯算子、LOG算子、Canny算子中找出合适的边缘检测算法
- 实现定位出车辆牌照的定位系统结构与工作原理车牌通常在各种复杂背景、环境下采集得到的,由于光照不均、车辆的自身运动、图像的采集设备的自身因素,都会导致车牌图像质量的退化,干扰车牌有效信息的定位、提取。因此在进行车牌定位之前,要进行图像预处理。预处理包括彩色图像灰度化、图像去噪、图像对比度增强。再进行车牌图像粗定位和细定位。车牌定位系统结构如图1。图1 车牌定位系统结构方案比较与选择如今车牌识别的思路大致有两种:一是灰度化后二值化再进行定位分割识别 二是基于彩色图像的车牌识别。如今的车辆图像都是由摄像头、数码相机拍摄的彩色图像。彩色图像是由红(R)绿(G)蓝(B)三基色组成的,在数字图像中,每一个基色被分成0到255共256个等级。三种基色叠加,则有16777216种颜色。说明一幅彩色图像最多有1600多万种颜色,存储这么一幅彩色图像不仅要有足够大的空间,还需要复杂的图像处理算法,如果图像处理程序运行的时间过长,就不满足车牌实时定位识别的要求。所以还是选择彩色图像灰度化的处理方法。本文研究的是基于边缘检测和数学形态学相结合的车牌定位方法。边缘算子很多种,要找到合适的算子,才能达到良好的定位效果。数学形态学主要以腐蚀和膨胀这两种数学形态,通过开运算和闭运算来展开。图像去噪:低通滤波器滤除噪声同时模糊边缘,高通滤波器增强边缘同时增强了噪声。所以图像去噪采用中值滤波,中值滤波是一种局部平滑技术,既能消除图像中的噪声,还能有效的保护边界。图像对比度增强:通过灰度拉伸增强对比度。图像预处理1. 彩色图像灰度化加权平均值法:给R、G、B赋予不同的权值,并使R、G、B的值加权平均,即: 其中,、、分别为R、G、B的权值。、、不同的值加权平均值法就会形成不同的灰度图像。由于人眼对绿色敏感度最高、对红色次之、蓝色最不敏感。经实验和理论推导证明,当=0.30、=0.59、=0.11时能得到最好的灰度图像。
在MATLAB图像处理工具箱中,用的函数是rgb2gray。原彩色图像如图2,灰度化后的图像如图3。 图2 原图像 图3 灰度化后的图像2. 中值滤波中值滤波是一种平滑滤波、一种非线性滤波。取一个奇数个点的滑动窗口,对窗口内像素的灰度值进行排序,取中间值作为原窗口中心点处像素的灰度值。步骤如下: ①将模板在图像中漫游,并将模板中心与图像中某个像素的位置重合 ; ②读取模板下各对应像素的灰度值 ; ③将这些灰度值从小到大排列成一列 ; ④找出排在中间的一个值 ; ⑤将这个中间值赋给对应模板中心位置的像素。
在MATLAB图像处理工具中,用到的函数是medfilt2。取的是3*3的平滑窗口。中值滤波后的图像如图4。图4 中值滤波后的图像3. 灰度级变换用于图像对比度增强,在MATLAB中用的函数是:imadjust调用格式:J=imadjust(I)将图像I中的亮度值映射到J中的新值,增加了输出图像的J的对比度。对比度增强后的图像如图5。图5 对比度增强后的图像预处理分析:图4为去噪后的图像,平滑了噪声,很好的消除了图像中噪点的干扰,保护了边界信息。图5为灰度级变化后的图像,相比灰度图像3对比度明显增强。图像边缘检测经过图像预处理后,图像的边界及轮廓一般会比较模糊,为了消除这种不利影响,就需要边缘检测,使得图像的边缘更加清晰。之前的滤波对图像进行积分或平均运算,会使得图像变得模糊,因此要对图像进行逆运算微分使图像重新变得清晰。边缘检测的基本概念:边缘是一组相连的像素集合,通常位于两个不同区域之间。在边缘方向上灰度连续,在另外方向上灰度跳变。边缘检测的算法通常对邻域内像素灰度求一阶导数、二阶导数、梯度来实现的。这些计算过程称之为算子。边缘检测的过程可以分解为对图像的每个像素计算判断的过程。边缘检测的结果通常用灰度图或二值图来表示,边缘的部分用灰度较高的像素表示,没有边缘的部分在灰度图中显示为灰色或黑色。越明显的边缘,在灰度图中越亮。边缘检测结果图中的灰度值可以通过算子计算原图像中对应像素即可。1. 基于梯度的边缘检测 在车牌图像处理中,图像是二维的,梯度算子就是能够由标量函数产生向量函数的一种运算。对于离散的数字图像而言,梯度算子的导数将原来的式子:变成差分形式:寻找一幅数字图像的离散梯度分两个步骤,首先在两个方向上寻找差分:然后找到梯度向量的模值以及方向。两个方向的差值可以用卷积核得出,也就是边缘检测算子。Roberts算子(2*2):Roberts算子边缘检测后的图像如图6所示:图6 Roberts算子边缘检测后的图像Sobel算子(3*3):Sobel算子边缘检测后的图像如图7所示: 图7 Sobel算子边缘检测后的图像Prewitt算子(3*3):Prewitt算子边缘检测后的图像如图8所示:图8 Prewitt算子边缘检测后的图像分析:Sobel算子和Prewitt算子对噪声有一定的抑制能力 , 但不能完全排除伪边缘,甚至有些边缘丢失。 Roberts 边缘算子是一种利用局部方差算子寻找边缘的算子 , 相比之下定位比较精确。2. 拉普拉斯算子拉普拉斯边缘检测算子也是针对图像中3*3领域的检测。;是一个标量算子,是两个梯度向量算子的内积:对于二维空间N=2的情况下,拉普拉斯算子就是两个维度上二阶差分的和,拉普拉斯算子可以通过一个二维卷积模板来执行。两个常用模板如下:拉普拉斯模板相当于一个高通滤波器,对于灰度变化较快的边缘非常有效,对于灰度级变化较慢的边缘即相对较宽的区域,也可使用拉普拉斯算子,对较宽的边缘进行二阶求导,就会在这条宽泛的边缘中形成零交叉点或称过零点。边缘位置可以根据过零点来确定。拉普拉斯边缘检测后的图像如图9所示:图9 拉普拉斯边缘检测后的图像分析:拉普拉斯是二阶微分算子 , 对图像中的阶跃型边缘点定位准确且