张松兰
(芜湖职业技术学院 安徽省芜湖市 241006)
随着工业化进程的深入和人民生活水平的提高,人们对汽车等交通工具的需求日益增加。汽车已经成为人们日常出行的主要交通工具,随着车辆数量的增加,车辆的流动也不断增大,城市面临着交通拥挤及交通环境日趋恶化等交通问题[1],为了实现城市的可持续发展,城市交通管理现代化和高速公路智能化程度的提高势在必行,迫切地需要高科技技术来提高交通管理的力度和水平,因此智慧城市[2]的发展成为当今城市发展的潮流。
智慧城市利用先进的信息技术实现智慧化地管理城市,为人们创造和谐美好而便捷的生活。而车牌识别系统是智能城市的组成部分之一,采用数字图像处理、模式识别和计算机视觉技术,在不影响车辆行驶的条件下,准确而迅速地获得车辆的数字化信息,最终实现车辆的智能化管理。
车牌识别系统是一个由监控设备或摄像头采集汽车图像,经模式识别后判别出车牌上的字符为目的的计算机视觉系统。完整过程为:首先从采集到的车辆图像中自动定位到车牌图像,再由定位到的车牌图像完成车牌上各个字符的分割,最后运用模式识别技术准确地识别出车牌中的汉字、字母和数字字符,实现车辆的智能化监控和管理。因而车牌的识别过程[3-4]为:先将采集到的原始图像经预处理去除干扰后,再从整车图像中定位出车牌的图像,然后把定位出的车牌图像分割出单个字符,最后将分割出的各字符识别出来再合成一个完整的车牌号,其流程图如图1 所示。
车牌图像一般通过摄像机来采集,由于受外界环境和拍摄角度等影响,获取的图像会有光照、倾斜、阴影等多种干扰因素,这给车牌识别造成干扰,因而需要进行预处理,包括对图像灰度化、灰度拉伸,增强对比度、图像二值化、图像倾斜及滤波平滑处理以去除更多的干扰信息[4]。
车牌定位是从车辆复杂的完整图像中将车牌区域分辨出来,完成车牌区域的定位,这是车牌识别系统的第一步工作。在车牌定位中常见的定位算法有基于特征的算法如颜色特征和边缘特征,有基于数学形态学的算法,还有基于机器学习的算法如支持向量机、小波变换、遗传算法、聚类分析、神经网络及基于混合特征的车牌定位算法等。
图1:车牌识别系统流程图
此方法一般是根据车牌中字符和车牌底色的颜色中寻找车牌的周边区域,由于采集的车牌图像一般是RGB 图像,三个颜色分量均在0~255 之间,且三色间的相关性较强,在此空间进行颜色定位比较麻烦,因此常将RGB 空间通过模型变换成HSV 空间中[5-7]。H表示颜色的色调分量(hue),S 为颜色的饱和度(saturation)V 表示颜色的明亮度(value)再根据车牌底色与H、S、V 之间的关系,提取车辆的底色图像,过滤掉其他颜色的背景图像,从而可在车牌图像中大幅度缩小车牌的搜索区域。这种定位方法当车身或周侧环境颜色和车牌颜色相差较大时,检测定位准确度很高;但两者颜色相近或车牌颜色褪色时要实现准确定位比较难,同时这种基于颜色的定位方法还会受到光照影响,造成定位效果不佳[8]。
数学形态学(Mathematical Morphology)是用具有一定形状特征的矩阵元素去和车辆图像做膨胀、腐蚀及其组合运算[9-10],从而去除图像中的相应区域,它可在保持原有图像形状的基础上,提取出图像的目标区域,达到简化图像数据的作用。在车牌定位处理中首先将车辆的彩色图像转换成二值化图像,然后对二值化图像进行膨胀腐蚀等操作,实现区域图像的鲜明对比。通过形态学操作后能排除大部分复杂背景图像区域,有效提高了车牌定位速度。
边缘检测是图像处理和计算机视觉中获取图像特征的一种有效手段,利用图像中像素点的对比度来判别图像中的边界区域。一般用于图像某一局部区域内像素灰度有显著变化之处。我国现有车牌有蓝底白字、黄底黑字组合以及白底黑字组合等,这些汽车车牌区域中字符颜色和车牌底色均有比较大的差异,而我国汽车车牌首字符一般为汉字,其后为字母和数字的组合,字符边缘呈现规则的纹理特征,因而采用边缘检测方法来突出图像中的车牌区域实现车牌的定位。常用的边缘检测算子[11]有Roberts、Prewitte、Sobel、Canny 等。
Roberts 算子是一个2x2 局部差分算子,在垂直边缘方向的检测效果较好,但检测过程中会丢失一部分边缘,且未对图像进行平滑处理,对噪声敏感。Prewitte 算子是一阶微分算子,由算子与车辆图像进行卷积运算后,得到图像相邻像素点的灰度差极值,去掉图像的部分伪边缘,对图像边缘的噪声起到平滑滤波作用。Sobel算子[12]是一个两组3x3 矩阵,将两组矩阵与图像作卷积操作,计算出车辆图像纵横两个方向亮度的差分值,同时在像素位置做了加权运算,可起到平滑图像边界的作用,因此效果更好应用广泛。Canny 算法有水平、垂直和对角线四个方向的梯度算子,是一种多级检测算法,主要作用是去除噪声。图像边缘信息和噪声大多是高频信号,噪声容易被识别为伪边缘,因此在检测算法应该精确地找到图像中的尽可能多的边缘,尽可能的减少漏检和误检。
在采集车辆图像时受光照条件的影响,车牌图像边缘信息存在干扰信息较多时,传统的边缘检测算法不易实现车牌准确定位,同时边缘检测算法还受车牌污损、背景复杂等因素干扰,车牌很难被定位[13]。
遗传算法的理论基础是自然选择和遗传交叉变异理论[14],它是一个全局寻优的过程,通过选取相应选择算子和交叉算子和变异规则进行遗传和变异操作。在车牌定位时以统计车牌颜色像素点时要寻找的阈值为寻优目标,并设置迭代次数和终止条件来寻找车牌区域。利用遗传算法定位车牌的优点是:即使图像质量较差由于其全局寻优的能力可对目标区域有很好的增强效果;缺点是:遗传算法随着迭代次数的增多,会使车牌定位的速度变慢,导致实时性变差及效率不高。
支持向量机(Support Vector Machine,SVM)是一种有监督的机器学习方法[15-16]尤其在高维模式识别及图像模板库样本数据较小时具有突出的优势,通过选取合适的核函数实现低维空间向高维空间的映射。在车牌定位中将SVM 分类器的特征向量取为水平与垂直的直方图值,选择大量的训练样本进行训练,最后取部分样本进行测试实现车牌定位。
小波变换[17](wavelet transform,WT)的车牌定位方法是:在车牌图像的定位处理中将输入的原始图像信息进行小波分解,通过选择合适的参数对车牌图像进行伸缩平移多尺度变换作局部化分析,提取对象的特征可得到图像的任意细节,再送入分类器中完成车牌的定位,小波变换法对有噪声的车牌图像能很好地实现定位,缺点是实时性比较差。
人工神经网络(Artificial Neural Networks,简写为ANNs)[18-20]由输入层、隐层和输出层组成,前向网络由输入经隐含层传到输出,再由反向传播调整内部网络连接节点之间的权值,具有自动学习车牌图像特征的能力。在车牌图像定位时,先把大量不同的图像标注样本和对应的应识别结果输入到神经网络[21],网络通过前向网络和反向传播自动学习输入与输出的映射模型,完成训练学习过程,然后利用训练好的神经网络来识别采集到的车牌图像,从而定位到车牌区域。
该方法[22]主要是利用聚类分析并结合车牌的边缘信息来定位车牌,此方法具有一定的适应性和抗干扰能力,但是对于某些特殊的车牌定位效果不好,如定位双层车牌时易丢失信息。
实际获得的车牌图像都含有很多干扰信息,利用单一特征定位车牌会带来环境适应性差,因此提出了结合几种特征的优点多特征相融合的算法,如文献[23]中将车牌的颜色和字符的边缘特征结合;文献[24]结合形态学和车牌的边缘特征来定位车牌区域;文献[25]结合颜色与结构特征来定位车牌,先将车辆灰度图像转化为二值化图像,然后根据车牌的尺寸形状特征粗步筛选出可能的车牌区域,最后利用颜色特征来定位车牌。多种特征相结合的算法[26-27]定位过程相对复杂,但效果较好关键在于如何根据具体车牌的特点合理利用这些特征。
字符分割是将上一步定位后的车牌图像分割为一个个单字符图像的过程,是在二化图像的基础上,根据字符的结构特点或像素点的特征来分离出单个字符。车牌上的字符有汉字、字母和数字,针对各字符主要的方法有投影法、连通域法和静态边界等方法。
投影法[28-29]是字符分割的常用方法,实现方式比较简单。具体过程为;利用车牌上字符本身的特点,把二值化后的车牌字符图像进行水平和垂直两个方向上的投影,水平投影是从上向下扫描并统计字符区域中的黑色像素点,根据投影后的统计值得到切割字符高度方向的起点和终点;而垂直投影是从左到右扫描统计字符区域中的黑色像素点,由垂直投影得到的统计值得到宽度方向的起点和终点,定位出每个字符的上下和左右边界,将其分割最终得到车牌的字符,从而将车牌字符从车牌图像中分割出来。
每次扫描二值化图像的N 个像素点,统计出黑色像素点的个数来确定字符部分的连通域,数字和字母一般形成单连通域,而汉字相对比较复杂且是首字符,可能会形成多个连通域,因此一般扫描时根据我国车牌的特点从右到左切割寻找连通域的最小外围矩形得到字母和数字,最后剩下的多连通区域即为汉字。
该方法[30]在车牌定位十分精确的情况下,将车牌图像缩放至某个合适的大小,结合车牌的长宽比以及字符间距等特点,判断出各字符在二值化图像中所占据的位置,从最终将每个字符从车牌图像中分割出来,得到同样大小的图片。
字符识别是对分割出的每个字符图像分别送入分类器,采用模式识别方法后得到各个字符的类别,最终按从左到右的字符顺序组合在一起得到车辆牌照号码。字符识别中常见的方法有将字符与模板库相匹配的方法、统计字符特征的方法及机器学习方法,如支持向量机和神经网络的识别方法等。
基于模板匹配的方法[30-32]有基于特征提取的模板匹配法和基于灰度值匹配法。基于特征提取的模板匹配方法会涉及大量的几何形态学计算,计算过程较复杂不能满足车牌识别实时性的要求,故一般不使用此方法。基于灰度值的模板匹配法不需要提取特征,但首先要有标准化的模板库,识别时将待检测的字符做尺寸变换,缩放与模板库中字符的大小相一致,然后将该字符与模板库中相应字库的所有样本作相似比对,相似度可取距离函数、余弦相似度或统计方法等,最终的识别结果取相似值最大的那个样本字符。这种方法简单易行,可并行处理多个字符,但此算法只局限于与模板库同样大小、同种字体的字符,否则要做前期处理或识别精度不高,对于倾斜、笔划变粗变细或字符模糊均会导致识别下降,另外归一化字符会造成字符失真现象,在模板库数据大时,识别准确度会有所提高,但匹配和识别速度会变慢。
基于特征统计的识别方法[30]先要根据每个字符的特征建立特征向量,再由不同的结构和统计特征定义分类器。统计特征包括外部轮廓、内部结构和笔画变化特征等,由于汉字字母众多,需要对定义的大量特征进行降维处理,再输入到分类器中。识别时先从字符图像中提取字符的特征,经处理分析后得到进行分类标签。这种识别方法受车牌分割准确性及噪声影响;对汉字而言,由于其特性信息较多,计算量较大。
我国的车牌字符有汉字、数字和字母,依次对这些训练数据进行分类和标记后,将数据放入SVM 模型中进行训练得到训练模型,然后将待识别的字符送入训练模型中进行识别出结果。基于支持向量机的字符识别方法[33]具有很强的学习能力,即使在统计样本量较少的情况下,也可以获得很好的效果,但对字符平移和旋转敏感。
基于人工神经网络的算法[34]分为两种:有特征提取和无特征提取的人工神经网络,顾名思义有特征提取的神经网络首先要选择并提取字符特征,然后用所得到的特征来训练神经网络[35],此算法中字符特征的选取对识别结果的准确度至关重要,另外特征的提取会使识别过程变慢;无特征提取则是把待识别字符直接输入网络,由网络自动提取特征得到识别结果。基于神经网络的字符识别算法自学能力很强,但网络结构较复杂,网络模型不宜理解,训练时间长。
实际上汽车车牌的识别受到诸多因素的干扰,比如光照、倾斜度、车牌变形、各种情况造成车牌字符的旧损等都给车牌识别增加了难度。此种情形下,车牌识别准确率的提高仍是车牌研究的难点。目前车牌识别对象主要的是单个无遮挡的静止车牌图像[1],对于运动中的车牌识别仍有待进一步研究。