基于Matlab的车牌识别算法毕业设计论文 下载本文

内容发布更新时间 : 2024/5/12 21:31:47星期一 下面是文章的全部内容请认真阅读。

基于Matlab的车牌识别算法

图 3.3灰度图像

由原图和灰度图运行结果可知,能清晰地读出原彩色图样,通过图形的对比分析,原始图中车牌区域的灰度明显不同于其他区域,蓝底部分最为明显。经过程序运行出来的灰度图可以比较容易的识别出车牌的区域,达到了预期的灰度效果。

3.1.2图像的边缘检测

在Matlab中利用函数edge()实现边缘检测,具体的用法如下所示:

Car_Image_Bin=edge(Car_Image_Gray,'robert',0.15,'both');

在edge()函数中有Sobel算子,Prewitt算子,Roberts算子,Log算子,Canny算子及Robert算子,几种算法相比之下,Roberts算子是一种最简单的算子,是一种利用局部差分算子寻找边缘的算子,他采用对角线方向相邻两象素之差近似梯度幅值检测边缘。检测垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感,无法抑制噪声的影响。因此本课题使用了Robert算子。

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

(3.3)

?xf?f?x,y??f?x?1,y?1?

?yf?f?x?1,y??f?x,y?1?

(3.4)

13

基于Matlab的车牌识别算法

其幅值为: 错误!未找到引用源。 (3.5)

?11??11??x?2,y?2??x?2,y?2??为中心,所以他度量了??点处45?和135?错误!Robert梯度以?未找到引用源。方向(相互正交)的灰度变化。适当取门限T,做如下判断:

?01??10?G?x,y?T,(x,y)为阶跃状边缘点。Roberts边缘检测算子相当于用??和错误!未找到引用源。对图像进行卷积。both表示双向0.15为敏感度值检测算法。使用边缘检测,腐蚀效果如图3.4所示:

图 3.4 边缘效果图

从边缘效果图可以看出,经过处理以后车牌的轮廓已经非常明显了,车牌区域及汽车标志的边缘呈现白色条纹,基本上达到了边缘检测的效果。但是,在车牌附近的其他区域也由于各种干扰的影响,也存在一些白色区域。所以要对图像做进一步的处理,用灰度图腐蚀来消除多余的边界点。 3.1.3灰度图腐蚀

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

14

基于Matlab的车牌识别算法

Car_Image_Erode=imerode(Car_Image_Bin,Se);

其中结构元素Se又被形象成为刷子,用于测试输入图像,一般比待处理图像小很多。结构元素的大小形状任意,一般是二维的。二维结构元素为数值0和1组成的矩阵,结构元素中数值为1的点决定结构元素的领域像素在进行腐蚀操作时是否需要参加运算。结构元素太大,会造成腐蚀过度,造成信息丢失,太小起不了预期的效果,这里使用3?1矩阵的线性结构元素,即Se??1;1;1?。腐蚀后如图:

图 3.5 腐蚀效果图

从腐蚀的结果分析,腐蚀的目的是消除小而无意义的物体,对比边缘效果检测图与腐蚀效果图可以看出,在边缘检测图中还有的小的无意义的图像已经被完全消除了,留下来的仅仅是车牌区域以及车的标志。已经得到了车牌图像的轮廓线了,只要再经过适当的处理即可把车牌提出出来。 3.1.4图像平滑处理

得到车牌区域的图像轮廓线后,由于图像的数字化误差和噪声直接影响了脚点的提取,因此在脚点提取之前必须对图像进行平滑处理,Matlab有一个图像平滑处理函数imclose(),它与开运算相反,融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。

Car_Image_Perform=imclose(Car_Image_Erode,Se);

结构单元中Se一个小于对象闭合图形,只要两个封闭域的距离小于Se,就将这两个连接成一个连通域,Se生成方式采用

15

基于Matlab的车牌识别算法

Se=strel('rectangle',[25,25]);

即Se是一个一个25?25的矩形,使用矩形是因为车牌是一个矩形,这样,可以是提取的图像最接近预期效果。由于车牌图像经过腐蚀以后只剩下车牌区域以及车的标志。在程序运行的图像平滑后效果如下:

图 3.6 平滑处理后效果

从平滑后的效果图分析,达到了预定的目标。消除了图像的数字化误差和噪声对脚点的直接提取的影响。 3.1.5移除小对象

图像平滑处理了,可能会有多个闭合区域,对于不是车牌区域的必须予以删

除,Matlab提供了一个函数bwareaopen(),用于删除二值图像中面积小于一个定值的对象,默认情况下使用8邻域,

Car_Image_Perform2=bwareaopen(Car_Image_Perform,2000);

这样,Car_Image_Perform中面积小于2000的对象都被删除了。 小对象被删除后的图像如图3.7所示:

16