基于matlab的车牌识别系统设计

       一个完整的车牌号识别系统要完成从图像采集到字符识别输出,过程相当复杂,基本可以分成硬件部分跟软件部分,硬件部分包括系统触发、图像采集,软件部分包括图像预处理、车牌定位、字符分割、字符识别四大部分,一个车牌识别系统的基本结构如图:

基于matlab的车牌识别系统设计_第1张图片

 

图像预处理

    在图像预处理之前,首先要了解什么是RGB图像、灰度图像、二值化图像,以及他们如何转换。

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

序号

方法

方法论述

灰度化优点

1

分量法

将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应用需要选取一种灰度图像。

1.RGB的值都一样。

2图像数据即调色板索引值,就是实际的RGB值,也就是亮度值。

3因为是256色调色板,所以图像数据中一个字节代表一个像素,很整齐。

2

最大值法

将彩色图像中的三分量亮度的最大值作为灰度图的灰度值

3

均值法

将彩色图像中的三分量亮度求平均得到灰度图的灰度值

4

加权平均法

根据重要性及其它指标,将三个分量以不同的权值进行加权平均,常见的算法:

f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)

 


图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。在matlab中,二值化图像常常为0和1数组表示,二值化的常用算法有几种,见表2

                                                                                    表2

序号

方法

方法论述

1

全局二值化方法

对每一幅图计算一个单一的阀值。灰度级大于阈值的像素被标记为背景色,否则为前景。

2

局部自适应二值化

以像素的邻域的信息为基础来计算每一个像素的阈值。其中一些方法还会计算整个图像中的一个阈值面。如果图像中的一个像素(x,y)的灰度级高于在(x,y)点的阈值面的计算值,那么把像素(x,y)标记为背景,否则为前景字符。

 

 

基于车牌颜色特征的定位方法

本文给出的是一种基于颜色特征的定位算法,该算法不用对整幅图像进行边缘检测,而是直接寻找图片中颜色、形状及纹理符合车牌特征的连通区域。通过对大量车牌图像的分析,可以发现对于具有某种目标色的像素,可以直接通过对H、s、v三分量设定一个范围来把它们过滤出来,无需进行较复杂的色彩距离计算,这样可以在色彩分割时节省大量的时间。这种过滤对蓝色和黄色车牌特别有效,但对于黑色和白色的过滤效果不是很理想。这是因为对于纯色的黑色和白色,它们的色调和饱和度没有意义,所以和其它颜色相比缺少了两个过虑指标。

通过实验数据表明,汽车车牌的HSV值可由下表确定

表3 HSV的取值范围

 

蓝色

黄色

白色

黑色

色调

200~255度

25~55度

\

\

饱和度

0.4~1

0.4~1

0~0.1

\

亮度

0.3~1

0.3~1

0.9~1

0~0.35

注:“\”表示不予考虑的项目。

 

由于该算法的原理特殊,决定了主要针对家庭小型车蓝底白字车牌进行识别。根据彩色图像的RGB比例定位出近似蓝色的候选区域。但是由于RGB三原色空间中两点间的欧氏距离与颜色距离不成线性比例,在设定蓝色区域的定位范围时不能很好的控制。因此造成的定位出错是最主要的。这样在图片中出现较多的蓝色背景情况下识别率会下降,不能有效提取车牌区域。对此本文提出了自适应调节方案。对分割出来的区域进行识别调整。根据长宽比,蓝白色比对候选区域进行多次定位。最终找到车牌区域。

 

车牌倾斜校正

在车牌识别系统中,车牌字符能够正确分割的前提是车牌图像能够水平,以至于水平投影和垂直投影能够正常进行。如果车牌倾斜没有矫正,那么水平投影和垂直投影,甚至铆钉都无法正常处理。车牌矫正是车牌定位和字符分割的一个重要处理过程。经过车牌定位后所获取的车牌图像不可避免地存在某种程度的倾斜,这种倾斜不仅会给下一步字符分割带来困难,最终也将对车牌的识别的正确率造成直接的影响。所以,当车辆信息中获取车牌的第一步,应该是检查倾斜角度,做倾斜矫正。本小节主要介绍车牌图像校正的算法MATLAB。

车牌矫正算法有几种,主要是Hough变换法、Radon变换法。下面主要介绍Radon变换法

图像投影,就是说将图像在某一方向上做线性积分(或理解为累加求和)。如果将图像看成二维函数f(x, y),则其投影就是在特定方向上的线性积分,比如f(x, y)在垂直方向上的线性积分就是其在x轴上的投影;f(x, y)在水平方向上的线积分就是其在y轴上的投影。通过这些投影,可以获取图像在指定方向上的突出特性,这在图像模式识别等处理中可能会用到。

Radon变换(拉东变换),就是将数字图像矩阵在某一指定角度射线方向上做投影变换。这就是说可以沿着任意角度theta来做Radon变换。

字符分割

在汽车牌照自动识别过程中,字符分割有承前启后的作用。它在前期牌照定位的基础上进行字符的分割,然后再利用分割的结果进行字符识别。

字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。

具体算法如下:

1,确定图像中字符的大致高度范围:先自下而上对图像进行逐行扫描,直到遇到第一个黑素像素,记下行号,然后自上而下对图像进行逐行扫描,直到遇到第一个黑素像素,记下行号。这两个行号就标志出了字符大致的高度范围。

2,确定每个字符的左起始和右终止位置:在第一步得到的高度范围内进行自左向右逐列扫描,遇到第一个黑色像素时,认为是字符分割的起始位,然后继续扫描,直到遇到有一列中没有黑色像素,认为是这个字符的右终止位置,准备开始进行下一个字符的分割。按照上述方法继续扫描,直到扫描到图像的最右端。这样就得到了每个字符的比较精确的快读范围。

3,在已知的每个字符比较精确的宽度范围内,再按照第一步的方法,分别自下而上和自上而下,逐行扫描,来获取每个字符精确的高度范围。

分割车牌字符左右边界时,通过垂直扫描过程,由于数字和字母具有连通性,所以分割数字和字母比较容易。通过垂直扫描过程,统计黑色像素点的个数,由于两个字符之间没有黑像素,所以可以作为字符分割的界限。

字符归一化

由于图像采集时图像的像素值不一样,经切割出来的字符的大小也不会不一样,所以在进行匹配前必须先进行字符图像归一化。使图像大小跟模板图像大小一致,Matlab提供一个改变图像大小的函数imresize,这里我便不打算多余介绍关于使用imresize一些命令。

字符识别

在前文,我就讲过字符识别的方法,神经网络算法和模板匹配算法,本系统采用的是模板匹配算法,下面主要详细介绍模板匹配算法。

模板匹配:将从待识别的图像或图像区域中提取的若干特征量与模板相应的特征量逐个进行比较,计算它们之间规格化的互相关量,其中互相关量最大的一个就表示期间相似程度最高,可将图像归于相应的类。

匹配时相似度函数定义为:

 

其中, 为待识别车牌字符图像中像素点的灰度值,这里的取值为 0或1,为模板字符图像中像素点的灰度值,这里的取值为0或1;M 和N为模板字符点阵横向和纵向包含的像素个数。

匹配的步骤为:

(1)依次取出模板字符,将模板字符按照上、下、左、右四个方向,在周围五个像素的范围内滑动,每次分别计算出相似度S值,取其中S的最大值作为字符与模板字符之间的相似度函数。

(2)依次从待识别的字符与模板字符的相似度中找出最大相似度所对应的模板字符,判断是否大于该字符的阈值T,如果S大于T,那么待识别的字符的匹配结果就是该模板字符,反之,如果S小于T,表示不匹配,则需要重新检测。

 

车牌识别仿真

采用车牌号渝F3W970的车牌照片进行仿真,仿真效果如下:

基于matlab的车牌识别系统设计_第2张图片

图11 车牌原始图像

使用车牌颜色特征的定位方法处理车辆图像,得到的车牌牌照提取图,效果如图12所示。

基于matlab的车牌识别系统设计_第3张图片

图12车牌定位

使用radon变换法处理车辆牌照,得到的车牌倾斜校正,效果如图13所示。

基于matlab的车牌识别系统设计_第4张图片

图13 车牌倾斜校正

使用最大类间方差法进行车辆图像二值化,效果如图13所示。

基于matlab的车牌识别系统设计_第5张图片

图13 车牌二值化

 

经过一系列的形态学操作,边框处理等等,效果如图14所示。

基于matlab的车牌识别系统设计_第6张图片

图14 边框处理

 

采用垂直投影法,车牌分割图像,效果如图15所示。

基于matlab的车牌识别系统设计_第7张图片

图15 车牌分割

 

经过模板匹配算法,效果如图16所示。

                                                           基于matlab的车牌识别系统设计_第8张图片

代码另上传了

链接https://download.csdn.net/download/qq_17287777/10452721

 

 

你可能感兴趣的:(车牌识别)