基于模板匹配方法的不均匀照度车牌图像识别
2018-07-30王昔鹏
凌 翔,赖 锟,王昔鹏
(合肥工业大学 汽车与交通工程学院,安徽 合肥 230009)
0 引 言
车辆牌照识别(License Plate Recognition,LPR)系统主要应用于智能交通系统,是智能交通领域的重要研究课题之一[1-2]。车牌定位、字符分割和字符识别是车牌识别系统的3项主要技术,而车牌识别更是其中的关键环节。目前,车牌识别技术主要有基于模板匹配的车牌识别方法[3- 5]、基于机器学习的车牌识别方法[6-8]以及基于上述方法的组合运用[9]等。
基于模板匹配的方法主要通过比较模板图像和实际图像的相似度来判定识别结果。在实际应用中,基于模板匹配的方法操作简单,且能够保证较高的识别率,应用非常广泛。然而,基于模板匹配的方法对噪声很敏感,其识别正确率随着光照强度、字符清晰度和字符大小的变化而波动,稳定性较差,当天气和环境较差或车牌污损严重时,车牌识别的准确率将严重下降。基于机器学习的车牌识别方法可细分为浅层学习(Shallow Learning)和深度学习(Deep Learning)。基于浅层学习的方法包括BP神经网络、支持向量机(SVM)等,此类方法需要通过预先训练大量样本数据,利用车牌字符的结构、纹理、边缘等特征提取出信息,而样本数据的构建和提取特征的方法直接影响到该方法的准确率。基于深度学习的识别方法包括CNN神经网络、限制玻尔兹曼机(RBM)等,此类方法需要构造多层网络对整幅图像进行深度学习训练,但需对大量参数进行训练,计算时间相对较长,无法满足智能交通系统实时、快速处理的要求。
在自然场景中,车牌识别系统全天候工作,导致车辆图像采集受光照、车速、天气情况(雾、雨、雪)影响,这些因素都在一定程度上增加了车牌准确识别的难度。为此,笔者在前人研究的基础上提出一种基于改进的顶帽重构和模板匹配方法的车牌识别算法:首先,采用改进的顶帽变换[10]和投影分割算法[11]将字符图像从复杂的车牌背景中提出来;然后,基于字符图像全局相似度,将字符图像与模板库进行匹配,识别车牌图像。
1 车牌图像预处理
实际获取的车牌图像,受到光照不均、车牌污损和车牌变形等因素的影响,不利于对车牌单个字符信息的提取,必须通过对其进行预处理消除图像噪声干扰,增强字符图像拓扑信息,提高车牌图像的信噪比。具体流程如图1。
图1 车牌预处理流程
Fig. 1 Pretreatment process for classifying license plate
1.1 图像二值化
为了进一步将车牌字符信息从复杂的车牌背景中提取出来,还需对图像进行灰度变换和二值化处理。直接对自然条件下拍摄的车牌图像进行灰度变换和二值化处理,往往达不到理想的效果。例如在晴天拍摄时,由于自然光照射角度的不同,使车牌图像发生部分区域反光或车牌边框阴影遮盖字符的现象。这类图片在二值化处理时可能会出现字符变形、粘连、细节模糊等情况,从而影响字符识别的准确率。如图2,输入灰度图像LA,使用最大类间差分法(OTSU)二值化处理后得到图像LB,图像LB中含有大量的噪声。
图2 二值化效果Fig. 2 Binary results
在实际操作过程中,OTSU属于基于全局阈值的二值化算法,对噪声敏感。而基于局域阀值的二值化算法易引入噪声,且耗时较长。笔者使用一种替代方法:首先使用顶帽重构补偿灰度图像不均匀的背景亮度,凸显图像上的文字,然后使用OTSU进行二值化处理。顶帽重构是一种基于数学形态学的变换方法,属于非线性滤波器。其能抑制噪声、提取特征和分割图像。顶帽变换如式(1):
Top_hat(A)=A-RA(AΘB)
(1)
式中:RA(AΘB)为图像A和结构元B的形态学开运算重构。形态学开运算的操作是先腐蚀再膨胀。开运算可去除图像中较小的亮点,但开运算中的膨胀过程会使字符形状变形。因此,可用重构代替膨胀来做开运算。结构元B形状和尺寸的选取直接影响顶帽重构处理的效果。若尺寸过大,达不到均匀背景灰度的效果。若尺寸过小,车牌字符可能会被识别为背景,使得有效信息被删除。
对不同情况,应使用不同结构元素进行灰度平滑。笔者依据我国车牌标准规范,通过对多幅车牌图像的试验,提出一种有效的结构元尺寸计算方法。根据粘连部分宽度最大值为2个字符间距,结构元B的宽度以第2个字符和第3个字符间的宽度为基准,结构元B的高度以字符高度的1/5为基准。已知:输入图像的宽度为W;车牌字符间隔宽度与原始图像之比为α;字符高度与车牌高度之比为β。α、β取值与车牌倾斜角度等有关。经过适当倾斜矫正后,α、β取值一般变化不大,可根据具体情况对多幅图像进行统计估算。由此,结构元B的尺寸可用式(2)计算:
(2)
式中:α=12/440=0.025;β=90/440=0.20。
利用结构元在输入图像LA中的具体操作步骤如下:
步骤1图像背景灰度值均匀化
为了使图像背景的灰度值均匀化,采用上述单位矩阵结构元对图像LA进行腐蚀,然后将其与原图像进行重构,得到图像LC。将原图像LA减去重构后的图像LC生成一幅背景灰度值较均匀的图像LD。
步骤2求灰度图像LD的灰度直方图
以灰度值Gray为阈值T将灰度直方图分成两组并计算两组的方差。当两组之间方差最大时,阈值T=Gray。将灰度图像LD以阈值T转化为二值图像,得到图像BW。
步骤3使用形态学开运算消除车牌图像BW内孤立的噪声点
通过对多幅车牌图像进行试验,噪声点面积最大值取标准字符数字1面积大小的一半,即车牌图像面积的1/200,处理后得到图像BW1。二值化过程如图3。
图3 顶帽重构和二值化处理过程Fig. 3 Top-hat reconstruction and binaryzation
1.2 字符分割
经过二值化处理后的车牌图像需进行分割,得到含有单个字符信息的图像。传统的投影分割法可能出现边框与字符粘连造成分割失效的情况。对车牌图像垂直投影,当两侧边框过宽或出现边框与字符粘连时,分割失败的几率更大。针对以上情况,笔者对传统投影分割法进行了改进,具体步骤如下:
步骤1沿水平方向分割车牌图像
首先将二值化后的车牌图像沿水平方向投影,因车牌边框的影响,投影直方图两侧可能有两个明显的波谷,从波谷处截去上下边框区域即可去除上下边框。为了尽可能获得更多有效区域,笔者通过从直方图中间向两边搜索的方式寻找波谷。
步骤2沿竖直方向分割车牌图像
因车牌字符之间有明显空隙,根据我国车牌标准规范,设计了一个车牌字符模板框,模板框有13个空格,具体如图4。
图4 车牌字符模板框Fig. 4 License plate character template box
图中:z1、z2、z3、z4、z5、z6、z7的空格为车牌字符位置,其他为车牌空隙位置;模板框高l为水平分割后车牌图像高度;z=0.5l;k=12l/90;t=34l/90。将字符模板框沿水平方向在车牌二值图像上移动,统计编号k1、k3、k4、k5、k6空格内的像素数Ki(i=1、3、4、5、6)。若Ki小于阈值Tk,则停止移动模板框,此时编号为z1、z2、z3、z4、z5、z6、z7的空格内字符即为分割出的车牌字符。阈值Tk可由试验统计获得。笔者取阈值Tk=100,分割后的车牌如图5。
图5 车牌分割后效果Fig. 5 Effect after license plate segmentation
步骤3背景修正
经过分割后的车牌字符一般会偏离图像中心位置,进而对字符匹配准确率产生影响。因此,需对字符图像背景进行修正,去除冗余背景,填充有效背景。修正过程如下:
1)标记图像中连通域的位置,找到连通域质心坐标(row,col)。
2)从中心出发,对字符边界进行搜索,以搜索图像左边界为例,对图像进行列求和得到函数f。
3)从质心横坐标col开始向左搜索,当函数f小于2时停止,记录下坐标left-side。
4)通过图像的4个边界将字符从不规则的背景边框截取出来,给图像添加一个边长为2个像素的边框。
5)使用双线性插值法将图像大小归一化。
笔者使用的模板图片大小为50×25,修正后的图片如图6。
图6 字符图像修正后的效果Fig. 6 Effect after character-image background correction
2 模板匹配
使用模板匹配法对分割后的字符图像进行识别。该方法是将待识别的字符与模板库中的字符进行比对,将相似度最高的模板字符确定为识别结果。该方法的本质是通过计量输入模式与样本之间的某种相似性,取样本中相似性最大者为输入模式所属类别。
常见的模板匹配方法通过比较字符与模板的前景像素相似度来识别字符图像。这类方法忽略了背景像素中隐含的字符拓扑信息,对相似字符识别率较差,当字符前景像素受到噪声干扰造成前景像素缺失时,可能造成两个字符匹配程度相同,如“0”和“D”,“C”和“G”等。针对以上情况,通过比较字符图像与模板图像前景和背景的相似度,使字符图像类间差异最大化,提出了全局相似度函数,如式(3):
(3)
式中:f为模板二值图像;g为字符图像;⊕为异或运算符;~为取反运算符。f与g大小一致,其值与M×N大小相等。
3 实验与分析
为测试预处理方法的有效性,随机拍摄获得车牌图像200幅。其中多数图像的拍摄地点为公园停车场、校园、路边等,拍摄的环境条件为晴天和夜晚等多种自然状况。为了获得背景照度不均的车牌图像,晴天拍摄时采取逆光拍摄的方法,夜晚拍摄时使用闪光灯辅助拍摄。涉及算法在MATLAB 2012b软件平台上编程实现。实验用计算机配置为win7系统、Intel(R)G3260 CPU、8G内存。使用笔者提出的算法和OTSU方法分别对200幅车牌图像进行对比测试,预处理后的二值化图像字符完整且不含有大面积噪声的为处理成功。测试结果如表1。
表1 预处理测试结果Table 1 Pretreatment test results
部分测试效果对比如图7,传统的全局阈值二值化算法在处理背景照度不均的车牌图像时会引入大量噪声,而笔者提出的方法可以有效消除由背景照度不均引起的噪声,并有效提取车牌字符信息。
图7 预处理效果比较Fig. 7 Comparison of pretreatment effect
使用模板匹配方法识别车牌过程中,当二值化效果不理想时,图像内的字符会产生变形,极大增加字符识别难度。为了测试笔者提出的模板匹配函数的有效性,设计一个变形字符样本集合,模拟二值化过程中由于车牌背景照度不均使字符图像产生的变形的情况,将车牌字符二值化后产生的变形分类,并量化了变形规律。在车牌识别系统中,汉字的识别具有一定的特殊性,与数字和字母的识别过程是区分开的。笔者针对34个数字和字母的字符图像采取添加倾斜角度、模糊字符图像和添加噪声的手段,生成了3 200幅二值化变形字符图像,并将这些图像组成测试样本集合。部分变形字符图像如图8。
图8 样本图像Fig. 8 Sample image
对样本图片进行测试,设计了3组对比实验:第1组使用全局重合度函数;第2组使用传统匹配函数[5];第3组使用重合度的最小标准差函数[4]。具体测试结果如表2。
表2 样本测试结果Table 2 Sample test results
全局重合度函数的识别率为77.86%,高于其他两组实验。实验证明,笔者提出的基于全局重合度的匹配函数有效提高了字符信息的利用效率,从而提升了字符识别的效率。
4 结 语
车牌字符识别是车牌识别系统中公认的技术难题之一。笔者针对车牌识别过程二值化、字符分割和字符匹配问题进行研究,基于MATLAB平台设计了车牌识别算法。首先通过对灰度车牌使用顶帽重构来均衡灰度图像背景光照,然后使用最大类间差分法求取阈值对图像进行二值化。通过对200幅实景拍摄的图像进行验证,笔者提出的预处理方法取得了较好的二值化效果。在此基础上,改进了车牌字符分割方法和模板匹配的重合度函数,并与传统的匹配函数进行比较。测试结果表明,笔者提出的全局重合度函数取得了较好的识别效果。