基于多阈值与区域生长的车牌定位算法
2017-03-13华南师范大学物理与电信工程学院王晓磊
华南师范大学物理与电信工程学院 王晓磊
基于多阈值与区域生长的车牌定位算法
华南师范大学物理与电信工程学院 王晓磊
车牌定位就是在图像中把车牌所在区域标记或分割出来,是车牌识别的主要解决问题之一。本课题对基于颜色定位和阈值处理的研究,本文提出了方法采用自动调节阈值的方法,选取合理利用阈值,得到二值图,然后检测字符水平边缘变化率剔除背景无关的行图像,然后根据颜色、形状和字符分布建立简便颜色模型利用区域生长算法进一步精确定位,进而实现定位。
车牌定位;二值化;阈值;区域生长
1.引言
在我国汽车车牌种类可分为黑牌、蓝牌、黄牌和白牌。其中蓝牌车牌有以下基本特征:
(1)固定长宽比,其长宽比为3.114:1;
(2)字符大小一致,间隔分布均匀;
(3)内容格式相同;从左至右第一个字符为省(直辖市)简称,第二个是表明所属省市顺序的字母,后五位由数字和字母组成,如果忽略中间分割点,第二个字母与后面部分距离稍大;
(4)从车牌位置来讲,车牌大都安装在车辆中下部。并且分别位于车辆前后两个方位。此外车牌还有一个显著特征:字符与背景颜色对比十分明显,在正常情况下,无论彩色图还是灰度图特征也十分明显。
根据以上特征,学者提出了不同的算法,例如,文献[1]张浩鹏,王宗义在基于灰度方差和边缘密度的车牌定位算法一文利用车牌灰度特征和边缘密度实现车牌定位,文献[2]罗金凯在基于颜色划分的车牌识别研究一文中介绍并改进了基于颜色的定位算法,文献[3]刘智勇,刘迎建的车牌识别(LPR)中的图像提取及分割提出一种变换函数突出牌照固有特征从而进行车牌提取,在文献[4]图像识别与项目实践:VC++、MATALAB技术实现中的汽车牌照识别系统中,介绍了一种定位方法,步骤是:汽车图像二值化、去噪、横向与纵向扫面定位。其中二值化算法是从灰度化图像中粗略选取车牌容易出现的区域,求出指定区域内所有像素点的总和,然后求出平均值T,然后以此作为阈值,将灰度图二值化。本方法简便、快速,对于背景简单的汽车图像效果很好,但是粗略估算选取的阈值在复杂背景下车牌区域有可能未被选中效果不理想。
本文为了解决以上问题,提出新的解决方案。本方案将二值图像素变化率检测与车牌颜色检测结合,采用自适应阈值处理,避免阈值处理这一难题,检测字符边缘水平变化率,排除不可能的区域,再利用车牌形状、颜色和字符等特征进一步缩小范围,选出最符合车牌特征的区域,最后根据车牌长宽比验证去除不含车牌的区域。
2.过程原理
本方案采取8bit的RGB图像作为源图像,检测对象是常见的蓝白7字符车牌。整个过程大致包含预处理、二值化处理、二次定位三个步骤。预处理是将彩色图转化为灰度图;二值化是将第一步的灰度图采用多阈值方法二值化得到二值图;二次定位分两步,第一次定位根据字符特征水平灰度值变化率找出车牌所在行,第二次根据其颜色特征排除多余列和长宽比验证,进而定位出车牌。
图1 车牌定位原理图
预处理有两部分:增加对比度和灰度转化。由于天气和环境影响采集的图像对比度较小,增加对比度可以很好增加车牌与背景的差值,有利于阈值处理。
接下来需要将彩色图转化为灰度图像,RGB与灰度图转化采用经典公式:
其中,Gray 是转化后灰度图的值,R、G和B分别是对应红、绿和蓝3个通道对应的值。
2.1 二值化处理
二值化处理就是将源图像根据某种映射关系将像素值转化为比较简单的形式。显然,对于车牌定位,最理想的情况是将字符与车牌背景完全分离,这样字符特征可以完整保留,这种二值化有很大优势:在8位灰度图中,每个像素点值取值范围[0,255],而在二值图中只有两种,大大滤除无关部分,使图像结构大大简化,处理会更加简单。在二值化过程中,选取合适的映射法则无疑是很重要的,通常处理方式是选取某个特定的阈值,以此阈值为界将像素值分为黑和白两种,得到二值图。在车牌的灰度图(图2 左)中可以看出,的确存在这样的某些“阈值”可以完美地将字符和车牌分离,但是对于复杂背景下(图2 右),或者车牌区域占整幅图的比例较小情况下,导致车牌特征被掩盖。这时候选取阈值很困难的,为了克服这种问题,采取多阈值的方式。选取灰度图像中央3/5区域,求其灰度平均值,作为阈值处理的初始值T0,采用中间3/5区域而不采取整个图像的原因有两点:(1)减少计算量;(2)车周围往往有很多无关物体。例如:天空、马路和人等,这样减少周围物体的干扰。由于实际环境光线、干扰物和相机的影响,此初始值并不一定是最佳值。设定一个偏移量T,使阈值在此平均值的一定范围(T0-T,T0+T)内变化,步长为5,直到找到比较合适分割值,t=T0-T+5*n(n 图2 左图是车牌局部及直方图,右图是整体图及其直方图 2.2 车牌定位 首先根据车牌字符边缘特征一次定位。车牌字符与背景明显差别,每一笔画在水平方向至少出现两次突变,7个字符至少出现14次,对每一次得到阈值图逐行扫描,保留超过14次灰度变化的行,相邻的行合并,设定车牌竖直高h,满足9pixels 对上一步得到的每一个区域映射到RGB原图中,找到相同位置的图像。此时图像在上一步行扫描后,排除了无关行图像,这一步只需检测无关的列图像即可,这是第二次定位。为此,采用车牌颜色特征模型并进行区域生长的方法[5]。根据颜色模型和比例甄别和确定边界。 在RGB色彩模型中,设蓝色分量值VB,绿色分量VG,红色分量VR。纯的白色或灰色是由等量的VB、VG和 VR组成;三者均值越小,饱和度越低,等于0时为黑色,等于255时为白色。纯的蓝色是由VB组成,值越大,饱和度越高,实际车牌图像中,由于车牌磨损或环境的影响,会有少量的VG和 VR分量,而且本文假设VG和 VR分量相差不大。 从图像中选取可靠的特征点,确定蓝色和白色两种关系模型:对于蓝色,同一车牌的B分量的分布有一定的规律,B分量值满足Bmin 最后根据长宽比验证是否满足要求,排除“假车牌”区域,准确定位出车牌所在区域。 综合以上算法思路,使用Microsoft Visual Studio开发工具,采用了跨平台计算机视觉库OpenCV实现。简略流程图如下:将读取的源图像imgsrc转化为灰度图imggray。按照上一节方法得到初始阈值T0,根据RGB的灰度转化公式以及车牌颜色特点,可知,转化灰度值时,蓝色分量权重最小,绿色和红色分量权重大于绿色权重的2倍,就使得车牌背景灰度值较低,字符较亮,选取阈值偏移量T=30,然后根据阈值得出二值图binary-img_n.经过定位排除多余部分得到imgroi,最后一步根据车牌长宽是否与3:1接近以此排除非车牌区域,分割出真正车牌。 图3 定位程序流程示意图 为了验证算法,本文测试图像源于网上随机选取和多种环境下现场拍摄。如图4所示,是一幅含有“浙F79W39”的蓝色车牌的图像,经过定位准确分割出所在区域。通过对余图像测试,本算法平均耗时低于300ms,能够满足定位需要,证明了算法可行性。 图4 左图是源RGB彩色图像,右图是经过增加对比度后的图 图5 左图是转化后的8位灰度图,右图是在多阈值转化的二值图中的一幅 图6 左图是经过一次定位后映射到彩色图中的部分,右图是经过区域生长得到车牌区域 本文采取了独特的多阈值处理并建立车牌特征模型进行区域生长的处理的方式。充分利用车牌特征,保证较高准确率同时提高了抗干扰和效率。克服2个问题: (1)二值化过程中阈值选择的难题,由于图像的多样性,单一阈值很难应用与不同条件下的情况; (2)如果直接对整幅图利用颜色模型,彩色RGB是3通道,直接计算,数据量很大,本文利用前期阈值排除了大部分区域,建立的模型简单,降低处理难度。通过实验测试,得到比较好的效果,证明了算法可行性。 [1]张浩鹏,王宗义.基于灰度方差和边缘密度的车牌定位算法[J].仪器仪表学报,2001,32(5). [2]罗金凯.基于颜色划分的车牌识别研究[D].湖南:中南林业科技大学,2012. [3]刘智勇,刘迎建.车牌识别(LPR)中的图像提取及分割[J].中文信息学报,2000,14(4). [4]杨淑莹.图像识别与项目实践:VC++、MATALAB技术实现[M].北京:电子工业出版社,2014. [5]杨帆,王志陶,张华编著.精通图像处理经典算法 MATLAB版[M].北京:北京航空航天大学出版社,2014. 王晓磊(1992—),男,河南安阳人,华南师范大学物理与电信工程学院硕士研究生,研究方向:智能仪器,图像处理。3.程序设计与验证
4.本文总结