廖 宇
(湖北民族学院 信息工程学院,湖北 恩施 445000)
车牌定位识别系统是在软、硬件的结构上,利用先进的图像处理、模式识别等技术,对采集到的汽车图像进行处理,进而得到相应的车牌图像,以完成车牌的自动识别功能[1],如图1所示,其主要的两个子系统是车牌的精确定位、分割系统,车牌字符的分割、识别系统.如能实时识别交通网上所有正在运行的汽车车牌并将其汇总,就可以为智能交通系统提供最详尽的信息.
车牌的准确定位是识别的关键,当利用摄像机等采集图像时,由于要受到角度、天气、光照等影响,采集到的图像信息往往很复杂,质量不高,为了精确的实现定位,就必须对图像进行预处理.汽车图像预处理包括:彩色图像的灰度化、二值化,其目的是为是减少原始图像中的复杂信息,使得车牌定位算法更为简单,速度更快.同进还要利用图像平滑去掉各种干扰,利用图像锐化使得图像中的细节变得更为清晰.总体处理流程如图2所示.
图2 图像预处理过程Fig.2 Image preprocessing
图3 迭代法Fig.3 Iteration
由于采集的各类车辆图像,来自的环境不同,所以它的背景往往是千姿百态的.尽管背景的变化是多样的,可是车牌却具有它自身的固有特征,在车牌区域里有呈水平排列的字符,而且这些字符与字符之间,字符和车牌底色之间都存在着灰度的变化,所以在车牌区域里就会存在着丰富的边缘特征,明显区别于图像的其它区域.所以可对图像进行边缘提取以突出车牌.
边缘检测的方法有很多种,大致分为经典算子、最优算子、多尺度方法及自适应平滑滤波方法[2-3].针对这么多的边缘检测法并不是每一个都适合于车牌识别系统之中,比如传统的Sobel算子和Prewitt算子都是通过差分运算对图像进行处理,对噪声具有很强的抑制能力,但是它们的计算量都较大,在应对采集的汽车图像时,由于图像的背景很复杂,所以这两种算法都不具有实时性,而且处理结果也容易出现一些伪边缘.为了达到即有效地抑制噪声,又能相应的减小计算量,以适应车牌识别的实际需求,本文采用的是一阶水平差分算子来对图像的灰度边缘进行检测,同时在阈值的处理上采用自适应迭代法.
一阶水平差分算子[4-5]的实质还是利用窗口来对灰度图像进行二值化处理,只不过这时的窗口主要是对车牌中的字符进行处理,所以窗口的大小被限定在形如[-1,0,1]、[1,0,-1]这样步长为2的差分窗口,对车牌中的字符从左到右进行扫描,同样首先要设定相应的阈值T,这个阈值的设定采用的是自适应动态法,它的大小随着图像的实际明暗、内容的不同发生变化.
(1)
而对应的最佳阈值的T是采用迭代法求取的,其求取步骤如下:在这里,选用迭代法求图像最佳分割阈值T0,代法是基于逼近的思想.
其中原始图像的灰度最大值为Zmax,灰度最小值为求Zmin,而阈值的初始值为T0=(Zmax+Zmin)/2.利用初始的阈值可将原始灰度图分割成两块,目标区ZO和背景区ZB.
(2)
再根据得到的新灰度值求出新的阈值Tk+1=(ZO+ZB)/2.通过对不同边缘检测法的对比,利用一阶水平差分算法对车牌进行边缘检测后,得到的二值化图像效果较好,不仅有效地抑制了原始图像中的噪声,而且能较好的保留原始图像中的边缘信息.
在实际应用中,需要的是车牌号码的图像和信息而不是整辆车的图像,可以利用图像剪切把车牌号码这一部分从原图像中剪切出来.本文提出优化投影法来对车牌进行分割,具体流程如下:
1)车牌内部具有7个水平排列的字符,这些字符的颜色与背景颜色存在灰度的变化,而且这种灰度的变化对二值图来说就是“1”、“0”的变化,车牌内部的这种跳变的次数是非常频繁的.所以可以利用这个特点从车下部开始向上进行水平行扫描,并将每行得到的灰度跳变次数进行统计记为K,并与预先设定的阈值T进行比较,若K≥T,则说明已进入车牌所在的区域,并把第一个满足要求的行定义为车牌的最低行.然后接着向上扫描,将最后满足要求的行定义为车牌的最高行.然后将这个最高行和最低行所在的位置进行比较,如果差值满足车牌本身的高度,则实现了车牌的上、下范围的定位.
2)虽说已经确定了车牌所在的上下边界确定的区域,下面要利用垂直投影法来进行车牌左右边界的确定,从而实现车牌的精确定位.这时对上面已得到的上下边界确定的车牌图片进行自左至右的垂直扫描,当然事先要设定相应的阈值,把扫描时遇到的投影变化最早出现的那一列作为车牌的左边界,继续向右扫描,然后再记录出现的最大投影变化的一列作为右边界,当然得到这两列之后还得要求出相应的差值,将这个差值与与车牌的实际宽度(155 mm)进行对比,如果这个差值大于或等于这个宽度,则可认为找到了车牌的左右边界,通过上述步骤便实现了车牌号码的剪切.
采集到的汽车图像经过这些调整和变化,不仅从复杂的背景中将汽车分离出来,而且将车牌从汽车上分离出来,而且对车牌上的字符进行了角度调整,归一化处理(大小、位置),最后得到的就是位于同一水平线上,大小统一的字符.这样前期的工作就都准备好了,下面要做的工作就是将这些字符通过特征提取分离出来进行识别,然后将识别的字符构成字符串,这样就完成了车牌的识别.当然特征提取的方法也有很多,在这里主要介绍15特征点提取法[6].具体过程如下:
1)首先将一个字符在其区域里平均分成8个等份,这时统计这8个等份中的黑色素的多少,作为该字符的8个特征.这里以字符“3”为例来介绍.如图4所示.
图4 特征点图 图5 竖直、水平、对角线6特征点图Fig.4 4 feature points graph Fig.5 Vertical, Horizontal, Diagonal 6 feature points graph
2)然后从上下方向、水平方向、对角线方向对该字符各作两条对称的线,统计这两条线经过的黑色像素点的个数,各作为2个特征,共6个特征点.如图5所示.
3)最后统计所有黑色像素点的个数,即第15个特征点.
这样对该字符就找到了共15个特征点,利用这些特征点就可以有效地识别出这个字符来.
在边缘检测中,传统的sobel算子和canny算子与一阶水平差分算子都对同一幅汽车图像进行了边缘检测,结果如图6、图7和图8所示:
图6 一阶水平差分算子边缘检测 图7 sobel算子边缘检测 图8 canny算子边缘检测Fig. .6 Level first order differential operator edge detection Fig. .7 Sobel operator edge detection Fig. .8 Canny operator edge detection
通过上面的实验结果可以看出,一阶水平差分算子对原始图像的处理比较理想,不仅有效地抑制了噪声,而且较好地保留原始图像中的边缘信息,sobel算子的处理结果也很好,但是这两种算法用时较长.而canny算子对图像进行处理后的效果就不理想,其原因是这种算法对噪声相当敏感,所以原始图像中的许多边缘信息都被当做噪声处理掉了.
优化投影法在对车牌进行分割时分成两步,先是利用水平投影将车牌所在区域整个分割下来,如图9所示,再利用垂直投影进行细分割,最终将车牌精确分割如图10所示.最后利用15特征点提取法进行字符识别,得到该车牌的字符输出,如图11所示.
图9 水平投影剪切 图10 垂直投影剪切 图11 车牌字符输出Fig.9 The sheared result of horizontal projection Fig.10 The sheared result of vertical projection Fig.11 License Plate Output
该文对100幅高速公路收费站入口处采集的车辆图像进行测试,定位准确率高于92%,字符和背景的对比度强,车牌识别准确率高于80%.
本文针对实际智能车牌识别系统中由于分割不准确而造成识别率低的问题,提出一种基于一阶水平差分算子的自适应边缘检测的分割方法,以便更好的将汽车图像从复杂的背景里分割出来,同时用优化投影法对车牌进行定位,很好的解决字符粘连对分割的干扰,同时消除了车牌图像中的噪声.在字符分割中利用改进15特征点提取法实现了车牌字符的识别.在AMD2,2GHz的电脑中实现车牌识别所需时间在2 s以内,具有较高的实用性,但该算法在利用边缘处的方向特性上还有所欠缺,需进一步完善.
[1] 牛欣,沈兰荪.基于特征的车辆牌照定位算法[J].交通与计机,2000,18(1):31-33.
[2] 刘直芳,游志胜,徐欣,等.基于遗传算法的车窗定位[J].计算机应用研究,2002(11):72-75.
[3] Roger Y Tsai.An Efficient and Accurate Camera Calibration Technique for 3-D Machine Vision[J].IEEE Journal of Robotics and Automation,1987,3(4):323-344.
[4] 童念念,段浇辉,王道宪,等.车辆自动盗控系统的捕捉算法研究[D].北京:北京大学,2001.
[5] 郭黎,基于改进SIFT的视频超分辨率重建快速配准算法研究[J].湖北民族学院学报:自然科学版,2010,28(2):177-180.
[6] Alhichri H S,Kamel M.Multi-resolution image registration using multi-class Hausdorff fraction[J].Pattem Recognition Letters,2002,23(3):279-286.