APP下载

基于OpenCV的车牌定位方法

2013-09-11谭同德王三刚

计算机工程与设计 2013年8期
关键词:二值车牌灰度

谭同德,王三刚

(郑州大学 信息工程学院,河南 郑州450001)

0 引 言

目前车牌定位的方法很多,很多在复杂背景下不能快速、精确的定位出车牌区域。直接基于车牌彩色信息的定位方法[1],主要受不同背景的色彩差异以及不同光照条件下的差异影响很大,鲁棒性和定位的精确度不高。基于数学形态学进行的车牌定位[2],数学形态学确定的车牌备选区域一般较多,尤其在复杂背景下无法精确定位,同时其时间复杂度很高。神经网络的方法[3],首先是对图片的像素用事先定义好的分类器来进行分类,再和训练样本库进行比对,从而得到车牌的备选区域,然后不断增加边缘特征和纹理特征来训练神经网络,提高识别效率。Hough变换的方法[4]必须要求车牌区域有明显的矩形边框,如果车牌边缘有污垢和损坏就不行了,同时这种方法计算复杂度高。还有这几种算法相互结合而衍生出其他定位算法,但由于车辆通常所处的环境比较复杂,这些算法定位成功率受环境因素的影响并不高。

本文提出了一种车牌定位的新方法,利用不同二值化方法得到两幅不同特点的二值图像,基于他们的特点,分步进行行定位和列定位车牌。

1 两种二值化图像的特点

在行定位时使用HSV颜色空间下得到的二值图像,根据车牌的纹理特征,从而得到车牌备选区域的行坐标;而列定位就根据之前得到的车牌备选区域的行坐标,在OSTU法 (即最大类间方差法)得到的二值图像上水平切割出车牌备选区域,根据车牌的纹理特征,再定位出车牌左右坐标,最后筛选出正确的车牌区域。

采用两种不同的二值化方法对图像进行二值化预处理:一种二值化方法[5,6]是把原彩色图像转换到HSV颜色空间下,通过不同颜色车牌所对应的H、S、V值的区间不同进行二值化,之后再进行形态学的除噪处理,这种方法得到的二值图像的特点是车牌的干扰区域很少且车牌上下边界明显 (如图1左下),但有时车牌的左右边界会与周围区域存在连带 (如图1右下);另一种二值化方法是先将原图像进行灰度化,再调用开源计算机视觉库 (open source computer vision library,OpenCV)库函数 (使用 OTSU法)进行二值化,这种方法的特点是得到的二值图像干扰区域很多,但车牌区域明显且不与周边连带 (见图2)。

2 预处理

车辆往往所处的环境比较复杂,会受到光照、车牌本身、采集图像本身等因素的影响,干扰车牌区域的提取。所以必须要先进行预处理,以减少周围环境的影响,提高车牌的质量。

2.1 灰度化

在预处理阶段,首先将彩色图像进行灰度化,数字图像分彩色图像和灰度图像两种,在RGB颜色空间中,灰度化通常有3种方法[7]:①最大值法:R=G=B=max(R,G,B);②平均值法:③加权值法:R=G=B=0.30R+0.59G+0.11B。

因为人眼对不同颜色敏感度不一样,因此权值法中的权值可以得到最合适的灰度图像。在本文中用的是OpenCV 提供的库函数[8]:void cvCvtColor (const CvArr*src,CvArr*dst,int code)。其中参数中的src表示要处理的图像,处理后的图像保存到dst,code表示色彩空间转换的模型,这里code的值是CV_BGR2GRAY。该函数采用的方法也是加权值法。

2.2 二值化

本文采用两种二值化方法,统一二值化后的车牌区域为白底黑字,分别把得到两个二值化后的图像保存起来,在后面进行的定位过程中,分别用于行定位和列定位。

(1)转换到HSV空间进行二值化

一般我们采集到的图像都是RGB模型的,为了使二值化后的图像干扰区域尽可能少,把RGB模型转换到HSV模型。HSV模型中,H是色彩的基本属性,就是平常所说的颜色名称;S是指色彩的纯度,值越高色彩越纯,值越低则逐渐变灰;V是指亮度。HSV颜色空间模型较适合人的视觉系统。

设 (r,g,b)分别是一个颜色的红、绿、蓝坐标,它们的值是在0到1之间的实数,max等于r,g和b中的最大值,min等于这些值中的最小者。从RGB到HSV的转换公式[9]如下

(1)把源图像转换到HSV颜色空间下。调用OpenCV库中的cvCvtColor函数 (前面灰度化中介绍过),这里code的值是CV_BGR2HSV。这个地方要注意的是,用cvCvt-Color函数转换得到的HSV图像中,H值的范围是0~180,S值的范围是0~255,V值的范围是0~255。

(2)将HSV图像分割成H、S、V这3个单通道图像。这里用OpenCV库中的分割通道函数cvSplit,分割后得到的单通道图像保存起来。

(3)将H、S、V图像分别转换成二值图像。假设分割后的单通道图像用h、s、v分别表示H通道、S通道、V通道。二值化中阈值的选定就按不同车牌颜色对应的h、s、v值的范围,如蓝色车牌的H值范围:94~115,S值范围:90~255,V值范围:36~255。使用OpenCV库里的cvInrangeS函数进行二值化,例如,cvInrangeS(h,w0,w1,h),h是h值的单通道图像,w0和w1表示单通道的阈值,w0和w1是0到180的整数,h的像素值若在w0~w1之间,则对应的h这一点的像素值变为255,反之变为0。最后把得到的二值图像替换原来的图像h,同样对s、v也是一样的。

(4)把上一步得到的h、s、v二值图像按照条件进行与操作。不同颜色车牌所需的条件不一样,如蓝色车牌需要对H、S、V这3个条件进行限定,所以就要对之前在蓝牌阈值范围内得到的H、S、V二值图像进行与运算,这里使用OpenCV库中的cvAnd()函数,与操作的结果就是HSV颜色空间下的二值图像。

(5)最后进行数学形态学除噪。先用函数cvErode进行腐蚀处理,这里所用的腐蚀结构元素为1×1;再用cvDilate函数进行膨胀处理,膨胀结构元素为2×1。这样就能很好的消除一些孤立点。

最后的效果如图1所示。

(2)转换成灰度图像进行二值化[10]

先用前面介绍的灰度化方法将原图像进行灰度化,然后再用OpenCV库里的cvThreshold函数进行二值化。该函数的典型应用是对灰度图像进行阈值操作得到二值图像,cvThreshold参数里的阈值类型选CV_THRESH_OTSU,也就是用cvThreshold函数实现OSTU算法。

OSTU算法也称最大类间方差法,被认为是图像分割中阈值选取的最佳算法,OSTU算法的定义与优点请参见文献 [10]。

所以,用这种方法得到的二值化车牌图像的车牌区域很好的显现出来,且与边界无连带,比HSV空间下二值化的车牌图像更适合找寻左右边界。效果如图2所示:

3 车牌定位算法

本文车牌分两步定位,第一步行定位,第二步列定位。

3.1 行定位

行定位时,采用在HSV空间下进行二值化得到的二值图像。通过大量实验可知,这种方法得到的二值图像能够很好的排除外界干扰,图上的车牌区域很明显,特别是车牌的上下边界,所以很容易定位出车牌的上下边界。

行定位算法思想:根据车牌图像二值化后字符之间连续跳变的规律性,来按行进行判定,把符合条件的相邻行连在一起,并且这样的连续行大于某个阈值时,就把这样的区域作为车牌备选区域,记录下这个区域的开始行坐标和结束行坐标,一幅图像自上而下扫描一遍后,就能得到车牌备选区域集合。

行定位流程图见图3,图中的变量注释如下:

图3 行定位流程

Thresh_minH:车牌区域的最小行数;

num_H:用来记录备选区域的行数;

New:用来判断是否是新区域;

a[2][n]:用来存储满足条件的备选区域开始行和结束行。

判定每行是否满足条件的算法如下:

设width表示一幅图像的宽,height表示高,data[i*width+j]表示第i行j列的像素值,data值为0表示黑点、255为白点;begin表示车牌区域跳变计数是否开始,begin为1表示跳变计数开始,否则begin为0;num用来计跳变的次数;blackbreak用来记录两次跳变之间的距离;thresh表示字符之间的宽度阈值;hop_num表示字符连续跳变次数的阈值。当blackbreak值大于thresh时,如果num值大于等于hop_num,说明该行符合车牌条件,结束这一行,否则就把begin、num、blackbreak都置为0转到下一行。

实验效果如图4所示,白线为车牌的备选区域。

图4 车牌备选区域

3.2 列定位

列定位在用最大类间方差法 (OSTU)得到的二值图像上进行处理。

根据前面行定位得到的车牌备选区域的行坐标,在OSTU二值图像上处理每个备选区域,找出车牌,定位出左右边界。

首先对该区域进行垂直投影,就是计算出每一列的黑色像素点的个数,存放到一维数组a[width]中,根据车牌的纹理特征,车牌每两个字符之间的投影值为0,现实中所取的备选区域上下边界会有一些干扰,导致两字符间的分割处的投影值不一定为0。大量实验证明:如果设该区域的高为H,投影值小于0.2*H的地方可视为字符之间的空白区域,效果非常好。

左边界定位算法:从左到右定位出车牌的左边界,用begin标记左边界,thre表示字符或两字符间隔的阈值,num记录跳变次数,设变量j,j的变化区间为 (0,width),a[j]值大于0.2*H可当作是字符的投影列,反之当作是分割处的投影;一旦字符或两字符间隔的阈值大于thre时,表明不属于车牌区域,这时就要判断num的值是否大于4(前面行定位有解释为何选4),若大于则表示左边界已找到,结束,反之令begin=0,左边界要重新选定,继续往后走;如果最后寻找失败的话,begin值为0。

右边界定位算法:从右向左定位出车牌的右边界,用end标识右边界,方法和定位左边界的一样,只是最后不成功的话,end的值等于width。

接下来判断该区域是否为车牌区域,根据车牌的几何特征,我国单行牌照的标准外轮廓尺寸为440mm×140mm,依据其宽高比筛选出车牌区域,大量实验测得宽高比的值设定为2.4~4最合适,设 WToH表示宽高比,WToH= (end-begin)/H。

列定位流程图如图5所示。

图5 列定位流程

最后定位出的车牌区域如图6所示。

图6 实验结果

4 实验结果分析

本实验是在VS2005下进行的,用C++和OpenCV实现本文提出的算法,选取了200张图片进行实验,这200张图片有来自关卡拍摄的、有用数码相机拍摄的,全都取自不同的光照条件和背景,车的颜色也各种各样。能够准确定位出192张,定位效果如图7所示,右边的图像为定位成功的,车牌区域用白色粗线框出,定位准确率达到96%,不能准确定位的那8张有掉色太严重的,有被雪、灰尘或光盘之类的遮盖住的,如图8所示,这些情况都不能使车牌准确被定位。

5 结束语

不管采用哪种车牌定位算法,最后的定位都是在二值图上进行的,所谓定位方法的不同也就是得到二值图中间的处理过程不一样。本文提出的分步车牌定位算法是利用HSV二值法和OSTU二值法得到的二值图像优点不同,最后再利用数学形态学进行消噪,从而提高车牌定位的准确度。该方法具有很强的抗干扰能力,对于车牌本身有些许污损的也能准确定位出来。

[1]NIE Hongyin,ZHOU Weidong,LIU Hui.Approach for vechicle license plate locating using multi-color models and integrated characteristics [J].Computer Engineering and Application,2010,46 (12):221-223 (in Chinese).[聂洪印,周卫东,刘辉.多颜色模型和综合特征下的车牌定位新方法[J].计算机工程与应用,2010,46(12):221-223.]

[2]XUE Bing,WANG Binbin,LIU Ronghui.License plate location algorithm based on mathematical morphology and plate features[J].Computer Measurement & Control,2011,19(10):2468-2471 (in Chinese).[薛冰,王斌斌,刘荣辉.基于数学形态学及车牌综合特征的车牌定位算法 [J].计算机测量与控制,2011,19 (10):2468-2471.]

[3]Caner H,Gecim H S,Alkar A Z.Efficient embedded neuralnetwork-based license plate recognition system [J].IEEE Transactions on Vehicular Technology,2008,57 (5):2675-2683.

[4]LIN Jun,YANG Feng,LIN Kai.A new method of license plate recognition by Hough transformation and prior knowledge[J].Microcomputer & ITS Applications,2009,28 (17):23-25 (in Chinese). [林俊,杨峰,林凯.一种利用 Hough变换和先验知识的车牌识别新方法 [J].微型机与应用,2009,28 (17):23-25.]

[5]TAN Siting,HU Zhikun.An effective integration method for license plate location based on HSV color space [J].Computers and Applied Chemistry,2011,28 (7):903-906 (in Chinese).[谭司庭,胡志坤.基于HSV色空间的车牌定位综合方法 [J].计算机与应用化学,2011,28 (7):903-906.]

[6]WANG Mei,FANG Peiyu,WANG Guohong.New location method of vehicle license plate based on vertical edge detection of HSV component [J].Computer Engineering and Applications,2007,43 (12):177-179 (in Chinese). [王枚,房培玉,王国宏.基于彩色分量垂直边缘检测的车牌定位新方法[J].计算机工程与应用,2007,43 (12):177-179.]

[7]LIU Haibo,SHEN Jing,GUO Song.Digital image processing using visual C+ + [M].Beijing:China Machine Press,2010:527-528 (in Chinese). [刘海波,沈晶,郭耸.Visual C++数字图像处理技术详解 [M].北京:机械工业出版社,2010:527-528.]

[8]ZUO Fei,WAN Pusen,LIU Hang.Digital image processing:Theory and practice,based on the Visual C++ development[M].Beijing:Publishing House of Electronics Industry,2011:528-571 (in Chinese).[左飞,万普森,刘航.数字图像处理原理与实践:基于Visual C++开发 [M].北京:电子工业出版社,2011:528-571.]

[9]Wikipedia [DB/OL]. [2012-10-12].http://en.wikipedia.org/wiki/HSL_and_HSV.

[10]FENG Huina,BAI Yanping,HU Hongping.A vehicle plate location method based on color and gray level jump [J].Journal of Test and Measurement Technology,2009,23 (6):545-549(in Chinese).[冯慧娜,白艳萍,胡红萍.一种基于颜色和灰度跳变的车牌定位方法 [J].测试技术学报,2009,23 (6):545-549.]

猜你喜欢

二值车牌灰度
采用改进导重法的拓扑结构灰度单元过滤技术
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
数字图像处理技术在车牌识别系统中的应用
面向网络边缘应用的新一代神经网络
基于二值图像数字水印算法研究
基于稀疏表示的二值图像超分辨率重建算法
第一张车牌
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于曲率局部二值模式的深度图像手势特征提取
基于MATLAB 的车牌识别系统研究