车牌识别系统设计及MATLAB仿真 下载本文

高速公路车牌识别系统设计及MATLAB仿真 第一章 绪论

箱的用于特别应用的子程序集。工具箱其实是MATLAB函数的子程序库,任意一个工具箱都是为了某一类学科的专业及应用而制定的,主要包括信号处理、控制系统、神经网络、小波分析以及系统仿真等方面的应用。

6.应用软件开发

在开发的环境中,使用户能够更方便地控制多个文件及图形窗口;在编程方面支持函数嵌套和有条件的中断等;在图形化方面,拥有更强大的图形标注与图形处理功能,包括连接注释等;在输入和输出方面,能够直接与Excel和HDF5进行连接。

5

高速公路车牌识别系统设计及MATLAB仿真 第二章 设计原理及系统概述

第二章 设计原理及系统概述

2.1设计原理

车牌识别系统的设计是一项利用车辆的动态视频或者静态图像实现牌照区域定位车牌号码识别的技术。其硬件部分通常包括触发设备、拍摄设备、照明设备、图像收集设备、进行车牌号码识别的处理器等,其软件的关键部分包含车牌区域定位的算法、车牌字符的分割算法和车牌字符的识别算法等相关的算法。一些车牌识别系统还具备借助视频图像来对车辆是否驶入视野准确判断的功能,被称作车辆的视频检测。当车辆的视频检测部分确定车辆到达检测区域时触动图像采集部分,进行图像的采集。牌照识别部分首先对图像进行一些处理,接着定位出车牌区域,再将牌照图像中的字符一一分割出来进行识别,最后所有的字符组成车牌号码输出。

2.2系统概述

图2.1 车牌识别系统示意图

2.2.1图像获取

在图像获取部分中,我们利用在道路两侧安装的高分辨率摄像机对来往的车辆实施抓拍,然后把经过图像采集器得到的图像并构成一个图像数据组储存在计算机的存储空间中,此时储存在计算机中的图像为彩色图像。 2.2.2图像处理

1.灰度转化

由于在计算机存储设备中得到的为彩色图像,因为色彩的种类比较多,不利于对图像处理,因此我们通过把彩色图像转换为灰度图像方便下一步的处理。

6

高速公路车牌识别系统设计及MATLAB仿真 第二章 设计原理及系统概述

我国车牌颜色及其RGB值如下,蓝底(0,0,255)白字(255,255,255)、黄底(255,255,0)黑字(0,0,0)、黑底(0,0,0)白字(255,255,255)、红底(255,0,0)黑字(0,0,0),因为车牌的底色不同,所以从RGB图像中直接对车牌区域进行提取难度相当大。但是无论底色是哪种,车牌的底色与上面的字符颜色的对比度都比较大,将RGB图像转化为灰度图像时,车牌底色的灰度值跟字符的灰度值会相差很大。例如蓝色(255,0,0)与白色(255,255,255)在R通道中并无区别,但在G、R 通道或者是灰度图象中数值相差非常大。同样的道理对白底黑字的牌照可用R 通道,绿底白字的牌照可以用G 通道就能明显显示出牌照区域的位置,以便于后续的处理。原图、灰度对于将彩色图象转换成灰度图象时,图象的灰度值H可由下面的公式计算:

H?0.229R?0.587G?0.114B 公式(2.1)

上式采用了权值加重法,也就是MATLAB内的RGB转灰度图函数rgb2gray()。 2.图像边缘检测

在MATLAB中使用函数edge()实现边缘检测,具体的用法如下所示: Car_Image_Bin=edge(Car_Image_Gray,‘robert’,0.08,‘both’); edge()函数拥有Prewitt算子, Log算子,Canny算子,Sobel算子及Robert算子,几种算法相比之下,Robert算子是使用起来最容易的算子见文献[9]。Robert算子是一种通过局部差分来寻找边缘的算子,它采用对角线方向相邻两像素之差近似梯度幅值检测边缘。其检测垂直边缘的效果优于斜向边缘,不仅定位精度更高,而且对噪声也更敏感。??因此本设计使用Robert算子。

因为Robert边缘检测算子是一种利用局部的差分来寻找边缘的算子, 根据任一相互垂直方向上的差分都可用来估计梯度,Robert算子采用对角方向相邻两像素之差,其计算公式如下:

?xf?f(x,y)?f(x?1,y?1) 公式(2.2) ?yf?f(x?1,y)?f(x,y?1) 公式(2.3)

其增幅值为:

G(x,y)??xf2??yf2 公式(2.4)

Robert梯度是以(x-0.5,y-0.5)为中心,度量(x-0.5,y-0.5)点处45°和135°错误!未找到引用源。方向(相互正交)的灰度变化。取一个适当的门限T,进行如下判断: G(x,y)fT,(x,y)为阶跃状边缘。

?01??10?Robert边缘检测操作数也就相当于用??与错误!未找到引用源。对图像做卷积分。

7

高速公路车牌识别系统设计及MATLAB仿真 第二章 设计原理及系统概述

3.灰度图腐蚀

所谓腐蚀其实就是消除边界点,然后使边界向内部收缩的一个过程。利用它能够消除小且无意义的物体。腐蚀的规则是输出图像的最小值是输入图像领域中的最小值,在一个二值图像中,若有一个像素值为0,则相应的输出像素值也为0。假如设定B对X腐蚀所产生的二值图像E是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么B将完全包含于X中。本系统设计采用imerode()函数:

Car_Image_Erode=imerode(Car_Image_Bin,Se);

其中结构元素Se被形象地称为刷子,用于测试输入图像,通常比待处理图像小很多。结构元素的大小形状是任意的,大多数情况下都是二维的。二维结构元素是数值0和1构成的矩阵,结构元素的领域像素在进行腐蚀操作时是否需要参加运算是根据结构元素中数值为是否为1。如果结构元素太大,则会造成腐蚀过度,从而导致造成信息丢失,但是太小又不能达到预期的效果,所以这里采用3×1矩阵的线性结构元素,即Se=[1;1;1]见文献[10]。

4.图像平滑处理

在得到车牌区域的图像轮廓线之后,由于存在图像的数字化误差,加上噪声的影响,对脚点的提取造成影响,所以在脚点提取之前,必须首先对图像进行平滑处理,这里用MATLAB里的一个图像平滑处理函数imclose(),它的功能与开运算相反,用来融合窄的缺口及细长的弯口,去掉小洞和填补轮廓上出现的缝隙。函数imclose():

Car_Image_Perform=imclose(Car_Image_Erode,Se);

结构单元中Se一个小于对象闭合图形,若存在两个封闭域的距离小于S那么就将这两个域连接为一个连通域,采用Se=strel(‘rectangle’[40,20])的Se产生方式。Se是一个40×20的矩形,之所以使用矩形是因为车牌也是矩形的,这样,能够保证提取到最接近预期效果的图像见文献[11]。 2.2.3移除小对象

图像经平滑处理之后,可能会有多个闭合区域存在,但是对于不是车牌区域的区域必须予以删除,于是使用MATLAB里面包含的函数bwareaopen(),来删除二值图像中面积小于一个定值的对象,一般情况下使用8邻域,函数bwareaopen(): Car_Image_Perform2=bwareaopen(Car_Image_Perform,2000);

通过上述函数的处理,Car_Image_Perform中面积小于2000的对象都被删除了。 2.2.4车牌区域边界值计算

对将原始图像进行二值化及轮廓平滑处理后,图像中的任何一个点都是两个离散值中的一个,这两个值代表开(1)与关(0),即只有黑与白两种颜色的特殊灰度图像,而且整个图像只存在两个域(如果有多个域需的,在改变参数后,重新进行剔除干扰对象的处理),全为1的域既是车牌区域,而且与矩形相似,长宽约比为4.5:1,这两个特性也能用来检验提取的区域是否为车牌区域。

8