一种基于MSER及CNN的车牌文字定位新方法
2021-08-12顾恭
顾 恭
(北京工业大学计算机学院 北京 100124)
0 引 言
随着城市化进程的不断发展,高速的生活节奏也使得汽车数量在二十一世纪迎来飞速增长。对于车辆牌照智能化识别的准确率要求同样随之提升。在现有的车辆识别核心技术中通常包含两大模块:车牌定位;字符识别。车牌定位是该领域的核心技术,不仅是后续工作的重要基础,也是车牌能否被正确识别的关键保证。目前车牌定位的常用方法有:基于形态特征的提取定位法、基于色彩特征的区域定位法,以及基于车牌先验知识的角点定位法等。虽然单独使用上述算法在一定限制条件下可以保证不错的定位准确率,但在复杂无约束场景下,当车辆采集图像清晰度较低、角度偏斜、距离较远、光线灰暗或周围障碍物干扰性较强时均不能呈现良好的定位效果,从而对后续字符识别带来较大影响。
本文对车牌的先验知识进行了充分研究,提出了一种将相关子区域生长技术与字符识别技术相融合的新型车牌定位算法。该算法利用最大稳定极值区域提取并筛选疑似车牌字符的候选集,通过卷积神经网络进行识别,采用非极大值抑制法获得精确的字符位置,产生字符区域集合,最终采用连通域扩张法定位出完整且精确的车辆牌照位置。实验结果表明,该算法在复杂无约束场景中能够有效减免因图像采光差、图像模糊、角度倾斜等干扰因素带来的定位障碍,最终达到车牌的精准定位效果。
1 最大稳定极值区域算法原理
最大稳定极值区域(MSER)主要用于图像中的特征区域斑点检测,其实质是基于分水岭算法的一种改进形式和在图像处理方向上的扩展。
MSER的基本原理是在一幅灰度图像上进行不同阈值i的二值化处理,其中i∈[0,255]并且逐一递增。该算法类似于在坑洼的地面上不断地漫水,直到水面升至一定高度时能完全没过地面上的某一坑洼地带且在随后的水平线高度增长时该位置的状态(被水完全覆盖)基本稳定。从俯视图角度,地面会被分为陆地和水域两个不同的部分,而在二值化图像中,某些连通域在阈值不断增高时变化率很小,或几乎不存在变化,故该区域即是最大稳定极值区域之一。它的数学定义为:
(1)
式中:Qi表示在阈值i下的某一连通域面积;Δ为该图像灰度阈值下的细微变化量;q(i)代表在阈值i下连通域Qi的变化率,当q(i)成为局部最小值时,Qi为最大稳定极值区域。
在车牌定位当中,使用该算法可以在图像内提取车牌相应字符的稳定区域,且在光线不足、车辆主体在图像中的位置较远、背景障碍物较为复杂时仍然能够保证很好的字符区域提取效果,为之后的字符过滤和筛选提供了细节特征较为全面的数据(子图像)准备。需要注意的是,MSER算法对非连通区域的提取效果不佳,因为汉字构造不能保证笔画的连通性,所以在车牌首字符即省份汉字的提取过程当中,成功率较低;并且该算法在提取到正常车牌字符的同时,也会提取到大量在定位过程中不需要的背景稳定区域,简称为“杂质”,故需在接下来的流程中加以筛选。MSER提取结果如图1所示。
图1 图像内最大稳定极值区域示意图
从图1能够观察到许多大小不一的矩形标注框,每个框即是MSER检测出的稳定区域,但检测区域与图像实际内容的划分上也存在着一定的歧义和误差,并且重叠交错、尺寸不一,数量远超于需要的字符个数,故需对MSER算法检测出的稳定特征区域通过启发式搜索配合卷积神经网络加以严苛过滤及清洗。
2 车牌区域定位算法
2.1 车辆字符特征区域提取
基于我国车牌普遍规格的先验知识可以得到,每个字符的高宽比约为2,字符所占车牌整体长度的比值约为0.102,车牌轮廓为矩形。单排字符车牌规格图如图2所示。
图2 单排字符车牌规格及字符特征
对图2得到的实际数据取近似,即可得到过滤“非字符区域”启发式搜索的重要条件。在本文实验环节中,经过大量数据测试后取得的经验值是:长宽比处于1.5~2.5之间,黑白二值化后图像主体像素点占所有像素的比值小于75%,在邻近区域内存在多个长宽比均为1.5~2.5的稳定区域。对满足该条件的图像区域优先存储至候选列表中,将该候选列表称为字符候选集,送入训练好的车辆单字符卷积神经网络中识别,若满足之后的定位条件,则启发式搜索完毕,终止候选者过滤算法;反之,将上述启发式条件从次到主依次减少,进行后续筛选并重定义字符候选集,直至找出满足定位条件的相应区域或全部MSER稳定区域检索完毕(图像内无车牌信息)为止。
该方法对车牌字符的准确提取有一定帮助,但并非车牌定位的核心步骤,在实际应用中可以根据软硬件情况适当舍去启发式搜索的条件,减少算法计算量和复杂程度,提高执行效率。
2.2 特征区域图像处理
在获得字符候选集之后并不能认为该集合内的所有元素均为车牌字符,事实上因为MSER在高像素、复杂自然背景下提取出的“杂质”极多,若在此基础上进行字符连通域扩张算法定位车牌区域,会对结果产生很大的影响;又因为车辆图像采集时的距离、角度不同及光照分布不均匀等因素会对单独使用卷积神经网络进行车牌区域的整体检测和定位带来更大干扰,严重影响检测准确率。即使可以正确检测,其最终的定位精度也不尽如人意(包含车牌周围杂质较多)。基于以上两点问题,应在沿用字符图像进行连通域扩张的主要思路上对获得的稳定图像子区域进行过滤,故需要对该集合内的“非字符图像”进行二次清洗,即使用卷积神经网络进行字符识别,以保留精确的字符区域。本文选用两种不同的图像处理方式分别代入不同模型的卷积神经网络进行识别,以求最大限度地保留字符区域、过滤候选集中的非字符区域。完成此步骤需对图像进行两次处理,以满足接受不同图像参数的卷积神经网络模型。
在本文中,采用了灰度图像字符识别和黑白二值化图像字符识别两种方式对原图像进行筛选,受来自于不同数据整合后的训练集影响,用于识别字符灰度图像的CNN模型可接受图像参数规格为(30,15),由于该模型所接受的图像参数规格与正常车牌字符的高宽比基本相似,故直接将原图像区域在传入CNN模型之前调整为(30,15)即可,并在此基础上进行图像灰度化处理;用于识别字符黑白二值化图像的CNN模型可接受的图像参数规格为(20,20),因为实际场景获取到的车牌字符高宽比为2 ∶1,直接压缩至(20,20)的等比例图像会使字符的原有比例严重失衡,与训练集的正常字符特征产生较大偏差,所以需要将原图像进行黑白二值化处理和图像中心放置算法处理,再重调整为(20,20)格式。其中,图像中心放置算法可以有效避免车牌字符图像与训练集内字符图像特征差距过大带来的识别困难。
令w、h分别为车牌字符图像的宽、高,构造一个参数为(h,h)的空白图像,对于任意(i,j)位置的像素其调整后的坐标应为(i,newj),其中newj的转换规则如式(2)所示。
newj=int(h/2-(w/2-j))
(2)
利用式(2)的图像纵坐标更新策略可以在不改变图像清晰度的情况下将字符主体区域移动到新构造图像的中心位置,继而将新图像缩放至符合CNN的要求参数规格即可。中心放置算法的伪代码如算法1所示。
算法1图像中心放置算法
N=20
w,h = img.shape[:2]
if w > h then pass
else
//创建一个宽、高均为h的空白图像
img_tmp = new_graph(h,h)
for i←0 to h do
for j←0 to w do
new_j = int(h/2-(w/2-j))
img_tmp[i][new_j]=img[i][j]
end
end
img_new = resize(img_tmp, (N, N))
算法运行前后的车牌字符图像变化以及训练集内字符图像的特征情况如图3所示。
图3 三种图像的特征对比
图3从左到右分别展示的是:直接修改图像规格至训练集尺寸(20,20)后的图像、采用中心放置算法后修改图像规格至训练集尺寸的图像,以及训练集自身图像这三种图像的基本特征,明显可以看出经过中心放置算法后再更改图像规格与训练集图像特征更为相似,也符合真实场景下的车牌字符比例。
采用算法1处理后的黑白二值化图像可以更好地适应卷积神经网络的输入要求,其原因在于字符主体会较为集中分布在图像中心,避免因图像清晰度较低、字符整体过大充满图像导致比例失衡等复杂情况的影响,使字符特征与训练集内图像特征趋于相似,极大提高神经网络对字符的识别准确率。
2.3 卷积神经网络识别
2.3.1字符候选者的识别与筛选
由于MSER会提取出大量与字符无关的稳定区域,且这样的区域在经过一定程度的图像筛选和处理后仍然会对CNN的识别带来很大影响,情况之一如图4所示。
图4 容易造成字符误判的稳定区域
图4只展示了车辆图像的部分背景区域,从图中可以观察到,该标注出的矩形区域并非属于车辆本身,实则复杂背景中的一部分(建筑物窗户),但却与真正的车牌白色字符“L”极为相似,并且仍然符合启发式搜索的基本条件。此种情况虽出现概率很低,却仍然会对接下来的字符筛选工作带来干扰,影响后续定位及识别工作。
图像灰度化、黑白二值化这样类似的图像处理工作必不可少。它是CNN模型能够正确预测结果的重要基础,单一的图像特征提取并不能完全避免复杂场景下各类易致CNN误判的影响因素。故本文采用图像灰度处理及黑白二值化处理的双重特征采集识别算法对字符进行精准识别及定位,以避免单一图像处理方式所带来的识别精度不高等问题。
将经过2.2节提及的两种图像处理方式处理后的字符候选集合元素分别送入各自的CNN模型,并记录每个图像元素所在集合中的位置,识别完成后可以得到一幅图像在两种不同模型下的识别结果,对于识别结果相同且置信区间在某一范围内的图像可以认定为是字符弱种子,即车牌真实字符,结果保留在弱种子候选集中。算法步骤如下:
1) 设经MSER处理后的稳定区域集合,U={ui|i=1,2,…,nu}记录集合内元素的存储位置i。
2) 集合U内图像ui依次处理后的灰度图像集为G={gi|i=1,2,…,nu},size(gi)=[1,30,15,1],黑白二值化后图像集为B={bi|i=1,2,…,nu},size(bi)=[1,20,20,1],其中size(xi)的各参数含义为:[元素个数,图像高度,图像宽度,通道数]。
3) 将所有元素分别代入卷积神经网络模型识别,识别结果添入RESULT集中,灰度图识别结果集记为RESULT(G)={rgi|i=1,2,…,nr},二值图识别结果集为RESULT(B)={rbi|i=1,2,…,nr}其中应有rgi∈[0,1]、rbi∈[0,1],u=r。
4) 若同一元素位置下的不同CNN模型识别结果相同,且均在置信区间[0.95, 1]内,则认定该元素为车牌字符之一,将该元素添入弱种子集合SEED={si|i=1,2,…,ns}中,其中s≤u,至此车牌字符已基本确定,弱种子筛选工作结束。
算法运行后的结果如图5-图6所示。
图5 经卷积神经网络筛选后的弱种子集1
图6 经卷积神经网络筛选后的弱种子集2
图5、图6中的车牌内矩形所表示的区域即为处理后的字符弱种子元素集合,与图1相比,该识别算法已经可以过滤掉大部分的非字符稳定区域,为车牌区域的定位奠定了基础,但仍然会出现两种干扰情况,如图7-图8所示。
图7 复杂场景影响下CNN网络出现偏离区域的误判
图8 卷积神经网络模型对字符高敏感度带来的影响
从图7可以看到,左侧车辆挡风玻璃与外轮廓交界处经MSER提取、在黑白二值化或灰度处理后添入CNN神经网络识别,其结果与字符“7”高度拟合,故仍然有可能会被选入弱种子集合。在连通域扩张时,需要加以相应的约束条件。
图8为车牌内部因为MSER提取字符区域不完整,却不妨碍CNN进行正确识别时带来的影响。由于各个字符完整度出现差异,导致字符矩形区域的形心发生变化,从而影响滑动窗口对汉字的识别工作,诸如此类的不完整字符区域虽然确实属于车牌字符,但所包含区域并不完整,故仍需排除。
基于上述两种特殊情况的讨论,本文设计了一种由字符弱种子集合向强种子集合演变的筛选算法。依据车牌规格的先验知识和图像采集的普适性,认定在所有弱种子集合内的元素,两两图像长宽比近似相等,本文经大量数据测试后的经验值为长宽比精确到小数点后两位最佳;两图像的形心间距不应超过二者最短宽度的10倍,并且两图像各自上边界点、形心、下边界点所产生的对应线段与x轴夹角均小于阈值15°,若存在大于阈值15°且仍为车牌区域的子图像,则说明图像采集设备出现不自然倾斜或车牌并未放置于车身正确位置,可扩大阈值以保证特殊情况下的定位准确性。对满足以上条件的字符图像保留,并添入车牌强种子集合。该算法流程如图9所示。
图9 字符强种子集生成算法流程
采用字符弱种子集合向字符强种子集合演变的筛选算法在之后的滑动窗口卷积神经网络定位车牌始末端算法中有较好的表现。
2.3.2基于滑动窗口的卷积神经网络定位车牌首末字符
选取字符强种子集合内的两个元素a=[x1,y1,w1,h1]、b=[x2,y2,w2,h2],其中a在图像内左上角的起始坐标为A(x1,y1)、宽度w1、高度h1;b在图像内左上角的起始坐标为B(x2,y2)、宽度w2、高度h2,分别计算其形心Ac(xac,yac)、Bc(xbc,ybc),其中:
(3)
(4)
本文采用OpenCV作为图像的基本处理工具,以图像左上方第一个像素点作为原点坐标,全部像素均处于第一象限。需要注意的是,在不同的处理工具中由于原点坐标的位置变化,其形心Ac(xac,yac)、Bc(xbc,ybc)的计算方法与式(3)、式(4)略有出入,但原理相同。
每一次窗口滑动后均截取窗口内部的图像区域,保留在起始字符候选集中。在n次窗口滑动全部结束后,将候选集送至卷积神经网络模型中进行汉字识别,在这里为了准确获取省份的汉字位置,同样采用双特征提取的卷积神经网络识别方法,对经过灰度和黑白二值化处理的图像分别传至不同的CNN模型中,将获得的预测结果集进行对比,取两预测集合中对同一幅图像预测结果相同且落于置信区间[0.95,1]内的首个图像位置作为车牌的起始区域。
在本文研究当中对图像末端位置的确定设计了两种算法:1) 根据不同车牌类型的先验条件,使首字符宽度沿直线l(y=kx+b)扩大对应的倍数,融合进所有的字符区域,形成完整的车牌区域,达到车牌定位目的;2) 通过对弱种子集合内的全部元素进行遍历,以识别出的车牌首字符为起始点,沿直线l(y=kx+b)进行搜索,当存在某一元素,其矩形内部像素点位于直线上,与其余元素交集皆为空集,则认为该弱种子元素是牌照内某一字符,当字符数量在遍历过程中不断累加至车牌规定数量时,停止遍历,融合所有字符区域,车牌定位工作完成。
两种方式经过大量数据测试,均可以较为完整地定位车牌区域。算法1)提取后的车牌完整性更优,但受到不同图像采集分辨率的影响,存在尾部涵盖少许杂质的可能,需要后期字符分割和识别过程中稍作判断并去除;算法2)同样会因角度倾斜、图像分辨率低等情况影响,使两弱种子字符的矩形区域有交集或某一字符未呈现稳定状态而在MSER的提取过程中缺失,影响搜索时的融合计数过程。在图像采集状态一致且清晰的情况下,类似问题可以得到极大的避免。
图10-图18为多场景、不同图像规格下,使用第一种算法确定尾部后,车牌定位的结果。
图10 雨雾天、清晰度低时车牌定位结果图
图11 光线暗、能见度差时车牌定位结果图
图12 环境暗、灯光过曝时车牌定位结果图
图13 自然光过曝时车牌定位结果图
图14 光线差且分布不均时车牌定位结果图
图15 距离远、清晰度低时车牌定位结果图
图16 距离近、清晰度低时车牌定位结果图
图17 距离远、清晰度高时车牌定位结果图
图18 距离近、清晰度高时车牌定位结果图
由图10-图18可以观察到,该算法在各类场景下均可以有效定位车牌区域,抗干扰能力较强,对设备要求较低。
3 数据测试与结果分析
实验环境:编程语言Python 3.6,对应的开发工具Pycharm2018.1.4,主计算机视觉库Python-OpenCv3.4.2,操作系统Windows 10,CPU为i7- 6700K的四核处理器,主频4 GHz,显卡GTX 1080Ti,内存32 GB,硬盘容量2 TB SSD。
本文的车牌定位算法核心在于准确找出车牌内部字符图像形心之间的连线l(y=kx+b),并在此基础上通过滑动窗口和卷积神经网络识别出车牌的首末端,最终完成车牌定位工作。为了检测弱种子字符集合向强种子字符集合演变算法对车牌定位的有效性,本文挑选出了100幅像素均在百万级以上且车牌主体较为明显的车辆图像进行数据测试,因为此类图像的车牌字符较为清晰,即使单幅字符图像所包含的字符区域不完整,也仍然有可能被高敏感度的CNN模型识别出正确结果,而弱种子字符集合向强种子字符集合演变算法解决的主要问题就是避免将该类图像区域划入完整字符集中,影响直线l的斜率及函数表达式,故该类图像数据在算法有效性测试中更具有代表性。将100幅车辆图像依次代入车牌定位系统当中,得到实验结果如图19所示。
图19 强弱种子演变算法对定位准确率的影响
由图19可以看出,在100幅清晰度较高、车辆主体较近的图像中,未加入弱种子集向强种子集演变算法的车牌定位系统中,成功并精确定位出车牌区域的图像共有72幅,其余图像的定位失败原因均是由过车牌字符形心的直线l偏离误差较大导致的;而加入该演变算法后可以将100幅实验图像的车牌区域全部精确定位出来,即在对于直线l的函数方程计算较为精确,进而有效矫正了后续滑动窗口的搜索路线,提升了定位准确率。部分定位失败与成功的结果数据如图20所示。
图20展示了弱种子集向强种子集演变算法对车牌定位效果的具体影响,位于左侧的图像是未加入该演变算法时车牌的定位结果,右侧是加入该演变算法后车牌的定位结果。其中图20(a)与图8采用的数据图像相同,正如图8所示的问题,由于字符种子没有经过演变算法的筛选,导致不完整的字符被卷积神经网络误识别为有效的完整字符,故过字符形心的直线l产生偏离,最终车牌字符的部分区域没有被涵盖进定位结果中;而左侧图像更是因为直线l的过度偏离,使得滑动窗口没有扫描到正确的汉字字符位置,最终采用应急情况,向左多包含一个字符继而向右扩展直至车牌理论长度为止。这种卷积神经网络误判的情况在车辆图像具有高清晰度时难以避免,但使用弱种子集向强种子集的演变算法可以很好地解决该类问题,最终定位结果如右侧图像所示。
(a)
解决上述问题后,应对真正复杂场景下的车牌定位准确率进行算法测试和对比。为了模拟真实情况,本文挑选出了图片规格由低到高的五种不同图像,主要涵盖了低像素、低质量的图像采集设备、百万像素的日常交通监控设备和千万像素以上的手机或专用相机图像采集设备,并在相同图片数量下,均采取了100次的迭代,每次对50幅该规格下的不同图像进行车牌定位,求得定位算法运行时间的平均值,实验规则与数据如表1所示。
表1 数据数据及参数
将表1中的实验数据分别代入四种不同的车牌定位算法,获得的平均运行时间如图21所示。
图21 四种算法对多规格车辆图像的车牌定位耗时
从图21可以看出,基于轮廓和色彩的三种经典定位算法在运行时间上随着图像规格的扩大而上升得较为明显。本文中设计的新型定位算法在图像规格扩大时所受影响较小,虽然在图像质量较低时该算法运行时间高于其余算法,但在图像规格不断增大时,其运行时间变化幅度较小且具有更快速的定位功能。
图22展示了不同输入数据规格与车牌定位成功率的关系,输入数据同样使用表1中五种不同规格图像类型的内容。可以看出,在图像规格较小、清晰度偏低时,本文算法仍能够保持较为平稳的定位准确率,相较于三种经典车牌定位算法,本文算法的定位准确率提高了约62%。
图22 四种算法对多规格车辆图像的车牌定位准确率
在自然场景下的车牌定位准确率方面,本文还采取了两种不同的图像标准进行检测。如表2所示,1 000幅百万像素级以上的车辆图像被分为标准图和复杂图。其中:标准图的主要特点为图像采集方向与车身正面夹角较小,车辆主体近且突出,四周光线均匀且饱满,车牌所占图像面积较大,周围环境的近似形态和临近色彩干扰极小;复杂图的主要特点是图像采集方向与车身正面夹角稍大,车辆主体在图像中所占比重较低,光线混杂不均甚至过暗、过曝严重,车牌面积不固定或较小,周围干扰因素较强。将两种类型的图像分别传至四种定位算法进行车牌定位,所得定位准确率如表2所示。
表2 不同场景下四种算法的车牌定位准确率
经数据结果的研究对比可知,在车牌提取环境较好的标准图中,四种算法均有一定的定位效果,但因为经典算法较为依赖图像形态学的处理结果,在复杂背景下受到各类周身环境因素的干扰,无法准确捕捉车牌形态和色彩数据,故三种算法的定位准确率均有着较大程度的下降。本文算法由于不受车牌形态影响,专注于对稳定字符区域的提取和识别,使其在定位准确率上有着明显的优势且表现稳定,对复杂场景的车牌定位给予有力的技术支撑。
4 结 语
本文采用最大稳定极值区域和启发式搜索筛选出疑似车牌字符的多个候选区域,再使用两组预先训练好的不同卷积神经网络分别对候选区域的灰度图和黑白二值化图像加以识别,继而将准确定位出的字符区域采用滑动窗口技术搜寻车牌始末位置,最终实现完整的车牌定位算法。数据测试表明,该算法能够在复杂无约束场景下较好的对车辆牌照进行定位,相较于传统算法,本文算法可以有效提高定位准确率,避免各类现实场景带来的干扰,延展车牌定位技术的适用范围。且因提前检测出车牌首字符,又用字符连通下产生的形心直线方程对车牌上下两端进行有效裁剪,故定位后产生的杂质或噪点较少,为之后的字符分割及识别提供坚实基础和有效保证。