(汽车行业)基于图像处理
的汽车牌照的识别
基于图像处理的汽车牌照的识别
作者:陈秋菊
指导老师:李方洲
(温州师范学院物理和电子信息学院 325027)
摘要:以壹幅汽车牌照的识别为例,具体介绍了车牌自动识别的原理。整个处理过程分为预
处理、边缘提取、车牌定位、字符分割、字符识别五大模块,用 MATLAB 软件编程来实现
每壹个部分,最后识别出汽车牌照。在研究的同时对其中出现的问题进行了具体分析,处理。
寻找出对于具体的汽车牌照识别过程的最好的方法。
关键词:汽车牌照车牌提取字符分割字符识别
Thevehiclelicenserecognitionbasedontheimageprocessing
Author:ChenQiuju
Tutor:LiFangzhou
(SchoolofPhysicsandElectronicInformationWenZhouNormalCollege325027)
Abstract:
Withonevehiclelicenserecognition,theprincipleoftheautomobileLicenserecognitioni
-process,edgeextraction,vehiclelicensel
ocation,characterdivisionandcharacterrecognition,whichisimplementedseparatedb
,theproblemsarealsoa
nalyzed
d.
Keywords:vehiclelicensevehiclelicenselocationcharactersegmentation
Characterrecognition
引言
选题意义
汽车牌照自动识别系统是以汽车牌照为特定目标的专用计算机视觉系统,是计算机视觉和模
式识别技术在智能交通领域应用的重要研究课题之壹,是实现交通管理智能化的重要环节,
它可广泛应用于交通流量检测,交通控制和诱导,机场、港口、小区的车辆管理,不停车自
动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。目前,发
达国家 LPR(汽车牌照识别技术 LicensePlateRecognition,LPR,简称“车牌通”)系统在实
际交通系统中已成功应用,而我国的开发应用进展缓慢,车牌识别系统基本上仍停留在实验
室阶段。基于这种现状仍有它广阔的应用前景,目前对汽车车牌的识别研究就有了深远的意
义。
课题组成
汽车车牌的识别过程主要包括车牌定位、字符车牌分割和车牌字符识别三个关键环节。其识
别流程如下:
原始图像:由数码相机或其它扫描装置拍摄到的图像
图像预处理:对动态采集到的图像进行滤波,边界增强等处理以克服图像干扰
边缘提取:通过微分运算,2 值化处理,得到图像的边缘
车牌定位:计算边缘图像的投影面积,寻找峰谷点,大致确定车牌位置,再计算此连通域内
的宽高比,剔除不在域值范围内的连通域。最后得到的便为车牌区域。
字符分割:利用投影检测的字符定位分割方法得到单个的字符
字符识别:利用模板匹配的方法和数据库中的字符进行匹配从而确认出字符,得到最后的汽
车牌照,包括英文字母和数字。
本文以壹幅汽车图像为例,结合图像处理各方面的知识,利用 MATLAB 编程,实现了从
车牌的预处理到字符识别的完整过程。各部分的处理情况如下:
2.预处理及边缘提取
图 1 汽车原图
图像在形成、传输或变换过程中,受多种因素的影响,如:光学系统失真、系统噪声、暴光
不足或过量、相对运动等,往往会和原始景物之间或图像和原始图像之间产生了某种差异,
这种差异称为降质或退化。这种降质或退化对我们的处理往往会造成影响。因此在图像处理
之前必须进行预处理,包括去除噪音,边界增强,增加亮度等等。
因为噪声主要是壹些含高频的突变成分,因此能够通过壹个低通滤波器来消除图像中包含的
噪声,且使低频成分得到增强。滤波的方式有俩种,壹种是空间域滤波,壹种是频率域滤波。
在空间域,常见的滤波方式有俩种方式,均值滤波和中值滤波。空间域滤波主要有巴特沃斯
滤波器。在车牌边缘提取之前,俩种滤波方式均采用了。且和未进行滤波的边缘进行比较。
以下是经处理后的壹些图片。
图 2 经均值滤波后提取的边缘图像
图 3 经巴特沃斯低通滤波后提取的边缘图像
图 4 未滤波直接提取出的边缘信息
图 5 经高通滤波器增强后得到的边缘图像
对比之上几幅图片,图 2 的边缘太粗,而图 3 的边缘已经模糊掉了。图 5 中包含的噪声太多,
图 4 未经滤波直接提取出的边缘图像最清晰,所包含的有用信息最多。分析这种情况产生的
原因,归纳起来主要有以下方面:
1、原始图像清晰度比较高,从而简化了预处理
2、图像的平滑处理会使图像的边缘信息受到损失,图像变得模糊
3、图像的锐化能够增强图像中物体的边缘轮廓,但同时也使壹些噪声得到了增强
综上所述,结合 MATLAB 实验过程,得出不是每壹种图像处理之初都适合滤波和边界增强。
本次汽车车牌的识别,为了保存更多的有用信息,经过多次比较,选择图 4 作为后期处理的
依据。边缘的提取采用的是梯度算子,因为其实现过程比较简单,所以在此不多加赘述了。
提取出的边缘含有多个灰度值,要进行二值化处理,选择壹个合适的域值。经多次比较,选
取域值 T=70,对于灰度值大于 T 的赋值为 255,小于 T 的赋值为 0。经过处理后的图像如
下所示:
图 6 二值化后的边缘图像
结合后期分割得到的车牌图 7,二值化后的图像在后期的识别中且不会提高车牌的识别率,
因此不采用二值化的图像来进行识别,因此后面的处理依然使用图 4。
3.车牌提取
经过边缘提取得到的图像,车牌区域在水平方向灰度面积值具有明显频繁的跳变,在垂直方
向上的面积投影则出现峰-谷-峰的特性。根据这种峰谷特点,自动检测车牌位置峰点检测的
车牌区域定位方法,且对初步定位后的车牌进壹步使用微定位技术。该方法包括三部分:(1)
车牌的横向定位;(2)车牌的纵向定位;(3)车牌的微定位。
汽车本身具有壹定的特点,壹般情况下,牌照都挂在缓冲器上或附近,处于车牌照图像的下
半部分,本次分割的主要意图是缩小牌照搜索范围,大致确定出牌照的位置。对如图 4 所示
的汽车边缘图像 f(x,y),我们首先进行水平方向壹阶差分运算,即
g(i,j)=|f(i,j)-f(i,j+1)|
其中 i=1,2,3,⋯,xw-1,j=0,1,2,3,⋯yw-1,其中 xw,yw 分别为图像的行数和
列数。然后对水平差分图像的像素沿水平方向累加产生壹个投影表 T(i),如图 7 所示。
图 7 汽车边缘图像的水平面积投影图
壹般对应于车牌位置的投影值 T(i)较大,而在车牌上,下行附近的投影值较小,均有谷点存
在。只要能找到这俩个谷点,就能大致确定出车牌照的位置,缩小车牌搜索范围。由图 4 能
够见出,车牌下方的横栏处的 T(i)值应该是最大的,而车牌位置就在其附近。根据这些特定,
可定出车牌位置大概在 320~350 行之间。
类似的方法得出汽车边缘图像的垂直面积投影图
图 8 汽车边缘图像的垂直面积投影图
同上可初步得到汽车牌照的列位置在 120~210 之间。大致确定的牌照位置如下图。
图 9 粗略定位出的汽车牌照
对初步确定出来的牌照进行微定位,所谓微定位法,就是对基本定位后的车牌图像进
行局部分析,以进壹步确定字符范围,缩减车牌的左、右和上、下边界,这有利于后续的牌
照字符处理。具体实现如下:(1)由于车牌近似为壹个矩形,上下边缘近似为壹条直线,通过
简单的灰度变化分析就能够再次定位车牌图像的上下边界,这种情况适合于倾斜度较小的车
牌;对于倾斜程度较大的牌照来说,在其横向定位之前就应该利用相关的技术进行车牌的矫
正(例如 Hough 变换技术)。(2)确定左边界:从左向右扫描,当遇到灰度值大于设定值 60 之
后,停止扫描。上边界也是利用这种方式得到。这样就得到首字符的起始位置。再利用牌照
的大小,宽高比壹般都是固定的这些先验知识,就能够确定出牌照的具体位置。本设计中采
用的车牌,其宽高比为 1:3。从而确定出汽车牌照的具体位置。最后提取出的汽车牌照如下
图:
图 10 二值化的汽车牌照
图 11 未进行二值化的汽车牌照
4.字符分割
在汽车牌照自动识别过程中,字符分割有承前启后的作用。它在前期牌照定位的基础
上进行字符的分割,然后再利用分割的结果进行字符识别。字符识别的算法很多,常采用垂
直面积投影法来实现。面积投影法的公式如下:
由于字符块在竖直方向上的投影必然在字符间或字符内的间隙处取得局部最小值,且且这个
位置应满足车牌的字符书写格式、字符尺寸和其他壹些条件的限制。下图是图 10 在垂直方
向上的面积投影图。从图形中我们很直观的见出投影值中出现了 8 条间隙,6 个字母中间的
间隙只有 5 个,仍有三个间隙是字符间的。有字符的列其灰度值比较高,无字符的则相对比
较低。依据这壹点,再结合图 10 的特征,很容易得到每个字符的起始终止位置。第壹个字
符:1-10 第二个字符:10-18 第三个字符:28-41 第四个字符:42-48 第五个字符:60-68
第六个字符:68-78
图 12 车牌垂直方向上的面积投影图
将图 10 按照上面的分析行数不变,列数分为六组,分别影射到六个不同的数组中。又因为
在字符的模式识别中,其模板大小统壹,因此得到的六个数组必须变换其大小,均统壹成 26
×14 的形式。分割出来的六个字符如下所示,分别命名为 ,,,
,,M6jpg 且用 imwrite 函数写入图像文件夹中,以便在后期处理中能够直
接进行调用。
图 12 分割出来的六个字符图像
壹般分割出来的字符要进行进壹步的处理,以满足下壹步字符识别的需要。因为图像中含有
许多燥声,这在预处理的图像中已经见出来了。因此必须进行滤波,然后归壹化,二值处理。
使其最后得到的图像和标准模板壹样。只含有俩种灰度值,黑和白。可是对于车牌的识别,且
不需要这么多的处理就已经能够达到正确识别的目的。在此简化了处理过程,未经滤波归壹
化,直接进行后期处理。
5.字符识别
字符的识别目前用于车牌字符识别(OCR)中的算法主要有基于模板匹配的 OCR 算法以及基
于人工神经网络的 OCR 算法。基于模板匹配的 OCR 的基本过程是:首先对待识别字符进行
二值化且将其尺寸大小缩放为字符数据库中模板的大小,然后和所有的模板进行匹配,最后
选最佳匹配作为结果。用人工神经网络进行字符识别主要有俩种方法:壹种方法是先对待识别
字符进行特征提取,然后用所获得的特征来训练神经网络分类器。识别效果和字符特征的提
取有关,而字符特征提取往往比较耗时。因此,字符特征的提取就成为研究的关键。另壹种
方法则充分利用神经网络的特点,直接把待处理图像输入网络,由网络自动实现特征提取直
至识别。模板匹配的主要特点是实现简单,当字符较规整时对字符图像的缺损、污迹干扰适
应力强且识别率相当高。综合模板匹配的这些优点我们将其用为车牌字符识别的主要方法。
字符识别的算法如下:
因此在字符识别之前必须把模板库设置好。汽车拍照的字符壹般有七个,大部分车牌第壹位
是汉字,通常代表车辆所属省份,或是军种、警别等有特定含义的字符简称;紧接其后的为
字母和数字。车牌字符识别和壹般文字识别在于它的字符数有限,汉字共约 50 多个,大写
英文字母 26 个,数字 10 个。所以建立字符模板库也极为方便。本次设计所识别的车牌只
有字母和数字。为了实验方便,结合本次设计所选汽车牌照的特点,只建立了 3 个字母和 3
个数字的模板。其他模板设计的方法和此相同。
模板设计
分析字符分割得到的图像以及其他车牌图像中字符的特点,将模板大小定为 26×14;
背景为黑色,代表灰度值 0,字符边缘为白色。代表灰度值 255。
设计过程如下:
用画图工具先画出 P、F、M、1、0、3 等几个字符的图像。且分别保存为 ,
,
,,,。根据画图的经验其大小应略大于 26×14,以利
于后面的处理。所得到的字符均为黑字白底。字体为方正姚体,大小 16 号。
所画出的图形如下:
对 1 中获得的粗略图像用 MATLAB 进行处理。处理的方面包括 a.去除边框,利用二维数组
的映射关系实现,去掉开始行(列)和结束行(列)即所有外围像素点 b.提取模板的边缘。其实
与模板库中的字母逐
一进行相关运算寻找相关度最大值所
对应的模板
输出此模板所对应的值
现方法和前面的汽车边缘提取的方法相同,也是利用梯度算子。C.尺寸大小变换,切割为标
准的 26×14 格式。
整个处理过程结束后,再用 imwrite 函数写入图像库中,作为标准模板使用。
经过处理后的标准模板形式如下:
模板的设计过程,共进行了俩次。作为壹幅 jpg 或者 bmp 形式的图片,其中包含了许许
多多的像素点,各象素点的值也不壹样,到底如何来确定这些像素点的值呢?模板设置无疑
成为壹个难点。于是便投机取巧,将本身分割得到的字符保存起来直接作为模板使用。这种
方法明显不具有科学性。图像识别中模板匹配法是将未知的东西和已知的东西来进行比较。
因此模板库中的字符应该是已知的,是预先设置好的是不可更改的,而不是在实验过程中来
得到。第二次便是用之上的画图工具来壹步壹步逼近实现模板设置。实验结果显示,这种方
法简单易行。
识别过程
字符识别中模板匹配方法是实现离散输入模式分类的有效途径之壹,其实质是度量输入和样
本之间的某种相似性,取相似性最大者为输入模式所属类别,它根据字符的直观形象抽取特
征,用相关匹配原理进行识别,即是将输入字符和标准字符在壹个分类器中进行匹配。车牌
字符相关匹配算法如下:
输入字符用输入函数 X 表示,标准模板用函数 T 表示,它们的大小均为 26×14。将未知的
模式逐个和模板匹配,求出其相似度。
其中,M=26,N=14。Ti 指第 i 个模板。X×Ti 是指矩阵对应元素相乘。如果把 X 和 T 都归
壹化为”1”和”0”,则上式表示标准模板和待识图像上对应点均为”1”的数目和标准模板上”1”
点的数目之比。
如果 maxSi>λ则判定 X∈Ti,否则拒识,这里λ为拒识域值。本次实验中直接取相关最大值
为判定域值。
用 MATLAB 来实现字符的识别。其中有俩个很重要的函数能够直接调用:corr2 函数和 max
函数。
Corr2 函数直接用来计算图像拒阵 A 和 B 的相关系数 r。A 和 B 的大小及数据类型必须相同,
得到的结果 r 是双精度标量。其调用方法如下:
r=corr2(A,B)
因此本设计中的字符识别只需调用此函数,即将分割出来的字符和设置好的模板壹壹进行相
关运算,然后寻找出它们中的最大相关值。max 函数就是用来选择几个数值的大小值。其调
用方式如下:
[b,c]=max(a(:))
其中 b 返回的是比较后得到的最大值,c 是最大值所对应的元素位置。
同时仍自编了壹个识别函数 用来返回识别结果。程序代码如下:
functionc=result(H);
M1=imread('');
M2=imread('');
M3=imread('');
M4=imread('');
M5=imread('');
M6=imread('');
M1=double(M1);
M2=double(M2);
M3=double(M3);
M4=double(M4);
M5=double(M5);
M6=double(M6);
d=zeros(6);
d(1)=corr2(H,M1);
d(2)=corr2(H,M2);
d(3)=corr2(H,M3);
d(4)=corr2(H,M4);
d(5)=corr2(H,M5);
d(6)=corr2(H,M6);
[D,e]=max(d(:));
switche
case1
c='P';
case2
c='F';
case3
c='M';
case4
c=1;
case5
c=0;
case6
c=3;
otherwise
end
M1,M2,M3,M4,M5,M6 为标准模板对应的二维数组。函数在开始运行时,从主函数
里得到待识别的字符,此字符和模板进行相关运算,同时找出相关运算后的最大值及对应的
函数位置。然后对最大位置进行判别,返回所对应的字符给主程序。且在 MATLAB 运行窗
口显示出来。
编写 函数大大简化了计算量,每个字符在识别的时候直接调用此函数,避免了重
新编程浪费的时间及空间。这是本次车牌识别中的壹大亮点
运行结果,MATLAB 的运行窗口显示出的车牌号码为:P,F,M,1,0,3。完成了准确识别
车牌的目的。
6.总结:
设计过程说明
在汽车车牌识别的整个过程中,查找了很多资料,综合了各方面的信息。车牌实现的每壹步
都有许多的方法,各种方法都有其优劣,可是对于具体的图像处理,且不是每壹种理论在实
践中都能够实现,即使实现了也很难说哪壹种方法最合适,仍得在具体的实验中比较选择。
以车牌预处理为例,经过滤波和边界增强处理后提取出的车牌效果明显没有未处理的效果理
想。第二点在程序调试的过程中要耐心的检查每壹个错误。测试结果表明,本设计有以下几
条优点:
充分利用 MATLAB 中已有的函数库。整个程序设计简单易行
识别准确率高
6.2 设计工具说明:
车牌识别程序设计能够得以顺利完成。在很大程度上得利于 MATLAB 这套软件,MATLAB
功能强大,它包括数值计算和符号计算,且且计算结果和编程可视化。这为编程调试创造了
壹个便利的环境。作为图像处理最适用的工具之壹,其突出的特点是它包含壹个图像处理工
具包,这个工具包由壹系列支持图像处理操作的函数组成。所支持的图像处理操作有:图像的
几何操作、邻域和区域操作、图像变换、图像恢复和增强、线性滤波和滤波器设计、变换(DCT
变换等)、图像分析和统计、二值图像操作等。在图像的显示方面,MATLAB 提供了图像文
件读入函数 imread(),用来读取如:bmp、tif、jpg、pcx、tiff、jpeg、hdf、xwd 等格式
图像文件;图像写出函数 imwrite(),仍有图像显示函数 image()、imshow()等等。这些,
都使编程效率大为提高。
7.讨论
本设计已成功达到了车牌识别的目的,而且准确率也很高。可是在整个设计过程中,发现了
几个值得参考的算法,也试图用这种算法来实现车牌识别,但种种原因,而未采用。当下次
简单讨论壹下:
.含 8 个方向的模板的边缘提取算法
本设计在边缘提取之时,使用的是梯度算子。这种算法的优点是简单易行,可是因为它不包
含边缘的方向,因此对噪声不够敏感。目前,在图像处理方面使用得最多的是壹种可抗噪声
的 Sobel 算法。它定义了 8 个方向的模板。
通常物体的边缘是连续且光滑的,而噪声是随机的。在任壹边缘点附近沿边缘的走向总能找
到另壹边缘点,且这俩边缘点之间的灰度差及方向差都不可能很大。可是噪声则不同,壹般
情况下,沿任壹噪声点的方向(通过上述模板运算得到)不太可能找到和其灰度差及方向差都
很小的噪声点。正是利用这壹基本思想,本算法能将实际的边缘点和噪声点区分开来。
加权领域平均算法来进行滤波处理
6.2 加权领域平均算法来进行滤波处理
由实验我们能够见出,壹般的滤波器在对图像进行噪声滤除的同时对图像中的细节部分有不
同程度的破坏,都不能达到理想的效果。可是采用加权的邻域平均算法对图像进行噪声滤除,
不仅能够有效地平滑噪声,仍能够锐化模糊图像的边缘。加权的邻域平均算法的基本思想是:
在壹个邻域内,除了能够利用灰度均值外,灰度的上偏差和下偏差也能够提供某些局部信息。
算法的计算公式描述如下,用 f(x,y)表示原始图像,g(x,y)为平滑后点(x,y)的灰度值,
Vx,y 表示以点(x,y)为中心的邻域,该邻域包含 N 个象素,m(x,y)表示邻域 Vx,y 内的
灰度均值。NI 表示邻域内大于平均值的像素个数,Ng 表示小于平均值的像素个数,而 N0
表示等于平均值的像素个数。则修正的邻域平均法由下式给出:
m-Aıml;Nl>max{Ng,N0}
g(x,y)=m+Aımg;Ng>max{Nl,N0}(1)
m;else
(1)式(1)中,A 为修正系数,取值范围为 0~1,其大小反映 Vx,y 中的边缘状况。之上是我
认为在图像处理中比较有价值的俩点,有兴趣的可之上网查阅相关的资料。
【参考文献】
[1]霍宏涛.数字图像处理.机械工业出版社,
[2]陈桂明、张明照、戚红雨.应用 MATLAB 语言处理数字信号和数字图像。科学出版社,2000
[3]郎锐.数字图象处理学 VisualC++实现.北京希望电子出版社,
[4]刘露、强.汽车牌照自动识别技术初探,中国公路网,2003-09-26
[5]周妮娜、王敏、黄心汉、吕雪峰、万国红.车牌字符识别的预处理算法.计算机工程和应用,
2003(15)
[6]佘新平、朱立.壹种具有抗噪声干扰的图像边缘提取算法的研究,2001-6-4
[7]苑玮琦、伞晓钟.壹种汽车牌照多层次分割定位方法,-243
[8]许志影、李晋平.MATLAB 极其在图像处理中的应用.计算机和现代化,2004(4)
[9]董慧颖、曹仁帅 .汽车牌照自动识别系统中字符分割算法研究 .沈阳工业学院学报
2003(12)
[10]崔江、王友仁.车牌自动识别方法中的关键技术研究.计算机测量和控制,(4)
[11]王年、李婕、任彬、汪炳权 .多层次汽车车牌照定位分割方法 .安徽大学学报,
1999(6)
[12]马俊莉、莫玉龙、王明祥.壹种基于改进模板匹配的车牌字符识别方法.小型微型计算机
系统