汽车牌照定位与识别系统设计

2023-03-07 10:01杨润玲卫旭东樊庆扬
电视技术 2023年1期
关键词:字符识别车牌字符

杨润玲,卫旭东,樊庆扬

(西安建筑科技大学 信息与控制工程学院,陕西 西安 710055)

0 引 言

作为智能交通系统的重要组成部分,汽车牌照识别系统是智能交通领域的一个重要应用,融合了计算机、图像处理等多种技术。车牌号码是区分车辆的唯一标志,汽车牌照识别系统可以在不影响车辆正常行驶的情况下,通过图像采集装置和一系列相关处理技术来获取车牌图像,并对车牌中的每个字符进行识别,从而获得车牌号码。车牌自动识别系统不仅在车辆管理方面扮演着关键的角色,同时也是智能交通的基石。如果没有性能良好的车牌识别系统,必定会严重限制智慧交通的发展,甚至影响人们的生活。

车牌自动识别系统主要分为三个模块,分别为车牌定位、字符分割和字符识别。文献[1-3]采用了颜色定位法,但是当车身颜色与车牌颜色相近时无法准确定位车牌区域;文献[4]先在灰度域上粗定位,再在HSV空间进行精定位车牌图像,但对拍摄距离过远的汽车图像车牌区域的准确提取带来挑战;文献[5]的方法虽然能对蓝牌、黄牌和绿牌车辆进行定位,但是当车牌区域褪色严重和车牌周边有文字干扰时效果变差;文献[6]采用Haar级联分类器实现车牌轮廓的定位,再结合CNN神经网络的训练,对车牌倾斜、光照不均匀及噪声污染下的情形识别准确率较高,但是都是车牌区域拍摄距离很近的条件下实现的;文献[7]对特定场景下的牌照识别率很高,对某些复杂背景下的车牌也有一定的识别率;文献[8-9]采用机器学习模型对字符图像进行识别,当字符形状相近时,文献[9]中模板匹配法的字符识别率仅有70%,而文献[8]中采用机器学习模型的字符正确识别率可达98%,但只对蓝牌小轿车适用,且只能解决水平倾斜的车牌识别。

本文从车牌定位、字符分割及字符识别三个模块出发,分别进行详细设计,提出了颜色定位、边缘检测和支撑向量机(Support Vector Machine,SVM)相结合的方法实现车牌区域的准确定位;采用字符轮廓寻找法及人工神经网络(Artificial Neural Network,ANN)法实现字符分割及字符识别,达到对蓝底白字以及黄底黑字车牌的识别目标,最后基于C++平台设计了汽车牌照的自动定位和识别系统。整体来看,无论是三个模块还是系统总体,识别率都取得了很好的效果。

1 车牌定位

由蓝底车牌或黄底车牌背景颜色的特征可知,一般情况下,车牌区域中黄色或蓝色背景颜色的像素点多集中分布在一个矩形区域,而非车牌区域的黄色或蓝色像素点常常分布不规则。由此,可以明显区分车牌区域和非车牌区域。而当车身颜色与车牌颜色相同时,只靠颜色定位车牌区域就会失效。车牌区域的背景颜色固定为蓝色或者黄色,并且车牌区域具有明显的垂直和水平边缘。由此,本文提出一种基于颜色特征、边缘检测和SVM相结合的车牌定位算法。先将定位出的候选车牌区域通过车牌长宽比例进行筛选,再进行必要的倾斜校正,最后通过训练好的SVM模型获得真正的车牌区域。车牌定位流程如图1所示。

图1 车牌定位流程图

1.1 颜色定位

原始车辆图像通常在RGB颜色空间获得,首先需将其转换到HSV空间去表达。其中,H对应色调,取值范围为0~360,红色R、绿色G和蓝色B的值分别为0,120和240;S对应饱和度,取值范围为0.0~1.0,值越大,颜色越饱和;V对应亮度,取值范围为0.0~1.0,值越大,色彩越明亮[10]。因此,当S和V的值在一定范围内,通过遍历汽车图像中每个像素点H的值即可确定每个像素点代表的颜色。

分别设置蓝色像素和黄色像素在H,S和V三分量的阈值,即可获得汽车图像的二值化图像。具体方法是,当一个像素的H,S和V值在蓝色像素或者黄色像素的阈值范围内,就标记为白色像素,否则标记为黑色像素。经过大量实验,得出如表1所示的HSV颜色空间阈值表。对二值化后车辆图像进行闭操作,再进行形态学操作,去除一些干扰和弥补一些细小的间隙,求取构成轮廓的所有点的集合,得到轮廓的最小外接矩形,即可截取候选车牌区域。最后对候选车牌区域通过长宽比例进行筛选。图2为颜色定位效果图。

图2 颜色定位效果

表1 HSV颜色空间的阈值

1.2 高斯模糊与边缘检测定位

车牌区域形状是一个矩形,因此除了颜色特征外还具有水平和垂直边缘。利用车牌的这一形状特征,可以通过边缘检测的方法得到车牌区域的轮廓,从而有效解决依靠颜色特征无法定位车牌的问题。原始车辆图像往往包含一些其他垂直或水平边缘的对象,会对边缘检测的结果产生直接影响。因此,可以加入一个模糊处理来减少干扰。模糊半径的大小往往对处理的结果产生较大的影响,经过大量的实验,本文最终选择高斯模糊处理的半径为5,处理后可以有效减少候选车牌区域的数量,从而降低车牌定位的处理时间和判断出错的概率。

对原始车辆图像进行高斯模糊处理之后,再进行边缘检测。由于车牌区域存在垂直边缘和水平边缘,因此只需要对灰度化后的车辆图像进行垂直方向和水平方向的求导就可以得到车牌的轮廓。然而在实验过程中发现,尽管这样可以生成更为精准的轮廓,但是大多数车辆存在太多水平边缘,如一些标志和排气管等,会使形态学闭操作之后得不到一个准确的车牌位置。故利用Sobel算子仅仅进行水平方向的求导,即寻找有效的垂直边缘,再进行二值化和形态学闭操作。进行二值化时,需考虑光照的变化。由于车牌处于不同亮度下所使用的二值化阈值可能存在很大差异,故本文采用大津自适应阈值法[11],其中阈值选取的方法为:用阈值t将图像分为背景和目标两个部分,将t从0至255遍历一次,当t使背景与目标类间方差最大时,用此时的t值作为图像二值化的阈值T。对车辆图像进行二值化后,再进行形态学闭操作、截取车牌候选区域、通过车牌的长宽比进行筛选等。这些处理与2.1节颜色定位中的相应步骤相同。图3为使用高斯模糊与边缘检测相结合的方法定位车牌区域的流程。对蓝色车身蓝色车牌图像进行边缘检测定位车牌区域的效果如图4所示。

图3 高斯模糊与边缘检测流程图

图4 高斯模糊与边缘检测定位效果

1.3 倾斜校正

当图像采集器与汽车车牌之间有一定程度的倾斜,而不是垂直正投影拍摄时,车牌图像就会变形,车牌字符甚至产生畸变。对于具有水平倾斜的车牌区域,利用Hough或者Radon变换,反向旋转相同的角度即可完成车牌区域倾斜校正。然而对于畸变的车牌区域,必须利用透视变换将其校正为矩形[12],利于后续的车牌字符分割和识别。

透视变换利用投影中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(原图像平面)绕迹线旋转某一角度,破坏原有的投影光线束,仍能保持承影面上几何图形不变。投影到新图像平面的变换,如图5所示。

图5 透视变换

透视变换如式(1)所示:

图6 倾斜校正流程图

图7 透视变换效果

1.4 车牌判断

上述方法在车牌定位的过程中,会产生多个候选车牌区域。因此,需要从倾斜校正后的候选车牌区域中判断出真正的车牌。本文采用二分类的SVM模型来实现。提取车牌的垂直投影和水平投影作为车牌特征向量,在对二分类SVM模型进行训练时,采用1 400张车牌图像、2 100张非车牌图像。

为了使字符与背景的区别更明显,需要将车牌进行二值化。二值化后,车牌背景是黑色的,字符是白色的。如图8所示,每个字符的位置和字符之间的间距是固定的,且车牌区域具有一定的特征,而非车牌区域二值化后往往是无规则的,如图9所示。

图8 蓝色车牌二值化效果

图9 非车牌区域二值化效果

通过SVM模型判断真正的车牌区域,需要先提取车牌的特征。车牌区域的水平特征和垂直特征反映了车牌区域字符位置与间距的特征。本文将候选车牌区域大小设定为36×136。遍历每一列的像素点,统计每一列白色像素点的个数,从而得到候选车牌垂直特征,为136×1的列向量。同样,遍历每一行的像素点,统计每一行白色像素点的个数,得到候选车牌区域的水平特征,为36×1的列向量。候选车牌的垂直特征和水平特征共同组成了候选车牌的特征向量,为172×1(其中172=136+36)的列向量。最后将所有候选车牌区域的特征向量依次输入到训练好的SVM模型进行判断,获得真正的车牌区域。训练得到的模型正确识别率为98%。车牌区域判断效果如图10所示,从三张候选车牌中识别出了真正的车牌。

图10 车牌区域判断

2 字符分割

本文采用字符轮廓寻找的方式进行字符分割,算法流程如图11所示。由于蓝色车牌中的背景颜色深,字符颜色浅,而黄色车牌则是字符颜色深,背景颜色浅,因此,针对蓝色车牌和黄色车牌,分别采用正二值化方法和反二值化方法。对车牌颜色的判断,是通过比较蓝色像素点和黄色像素点分别占据车牌区域总像素点的比例来实现的。具体过程为,先将车牌区域转换为HSV颜色空间,再遍历所有像素点,根据表1中蓝色像素和黄色像素的阈值,统计出蓝色像素点个数和黄色像素点个数分别占车牌总区域像素点的百分比。若前者百分比大于后者百分比则为蓝色车牌,反之则为黄色车牌。

图11 字符分割流程图

在进行二值化的过程中,如果对车牌区域采用全局自适应二值化,由于车牌区域往往存在阴影和光照不均匀的影响,会使二值化后的字符轮廓缺失或者字符与字符之间出现粘连的现象。故本文采用局部自适应二值化的方法,将车牌区域分为16个小区域,每个区域进行自适应二值化以减小光线等因素的影响。图12是对车牌区域进行局部自适应二值化的效果。

图12 局部自适应二值化效果

对车牌区域进行二值化后,为了去除铆钉的干扰,需要遍历每一行像素点跳变的次数。当次数小于9时判定为铆钉,然后将此行所有像素设置为黑色像素。

本文研究的车辆牌照有7个字符,首字符X1为汉字字符。其中,一部分汉字字符带有偏旁部首,如“浙”“豫”“鄂”等。对此,在进行字符轮廓查找时,通常会使偏旁部首分离,形成两个连通区域。故本文采用通过查找第二个字符X2轮廓位置,再向前去定位汉字字符X1轮廓位置的方法。经过大量实验发现,在车牌定位正确的前提下,X2轮廓的中心位置在车牌宽度的1/7~2/7,并且X1字符的轮廓中心位置通常在X2轮廓中心向左1.15倍的X2轮廓宽度处。再取X2轮廓后的连续五个,截取得到X3,X4,X5,X6和X7的字符轮廓。接着对轮廓求最小外接矩形,然后截取图块,达到字符分割的目的。对图12(c)和图12(d)进行字符分割的效果分别如图13(a)和图13(b)所示。对含有偏旁部首的汉字字符车牌图像,字符分割效果如图13(c)所示。

图13 字符分割效果

3 字符识别

我国蓝底白字和黄底黑字单行的车牌号码由7个字符组成。根据所用字符集的特点可知,车牌字符集共包括65个字符,其中汉字字符有31个,英文字符有24个,阿拉伯数字字符有10个。实际场景拍摄的汽车图像车牌区域较小,经过分割后字符图像尺寸更小,常常会使一些重要的字符信息丢失。这些难题给字符的准确识别带来挑战。字符识别的主要方法有模板匹配法、ANN法和字符特征法等。本文采用ANN方法。

由于字符图像数据占据空间大,冗余信息多,且存在噪声,若直接进行识别,计算量大,费时费力。故对字符进行特征提取,对字符图像进行某种变化,得到反映字符本质的特征向量,使字符特征具有独立性、不相关性和可靠性。

本文对分割好的字符尺寸进行标准化,中文字符、英文字符和数字字符的尺寸分别为20×20,10×10和10×10。进行字符特征提取时,水平特征和垂直特征的提取与车牌特征的提取过程相同。

考虑到中文字符只出现在车牌首字符的位置,且与英文字符和数字字符相比笔画繁多、结构复杂,本文按照中文字符和非中文字符两种情况进行识别。首先对中文字符和非中文字符两种模型进行训练。采用的ANN共三层,分别为输入层、隐含层和输出层。其中,ANN的激活函数采用非线性转移函数。首先,将31种代表31个省份或直辖市的中文字符代号的1 500个样本进行特征提取,输入到设置好的ANN中得到中文字符模型;其次,将34种字符(代表24个大写英文字母和10个阿拉伯数字)每种字符1 500个样本进行特征提取后输入到设置好的ANN得到非中文字符模型;最后,将字符图像提取出的特征向量输入到训练好的字符模型中,得到字符图像对应每个字符的置信度,取最大置信度所对应的字符为待识别的字符。

4 系统实现

本文在Visual Stduio 2019集成开发环境中,基于开源计算机视觉库OpenCV 3.4.2版本,利用C++语言编程,在QT软件上实现汽车牌照定位与识别系统可交互界面的设计。为了验证系统的性能,使用笔者手机在西安街头和兵马俑停车场拍摄的200张各个场景下几乎全国所有省份的原始车辆图像作为实验测试数据库。拍照距离范围为0.5~10 m且拍摄角度各异,包括白天不同光照下的车辆图像以及夜间的车辆图像。测试平台为PC机,操作系统为Windows10,CPU为Inter i5-7300,内存为8 GB。

本系统具有以下几个功能:打开图片,车牌定位,字符分割以及字符识别。汽车牌照定位与识别系统的界面设计如图14所示。最后一个字符识别功能,可显示汽车牌照的颜色及7个字符。

图14 系统GUI界面

车牌定位、字符分割、字符识别和系统总体识别的实验结果分别如表2、表3、表4和表5所示。其中,表4中的1 372,是指正确分割出字符图像的字符总数,因为每个车牌有7个字符,即196×7=1 372。

表2 车牌定位的结果

表3 字符分割的结果

表4 字符识别的结果

表5 系统总体识别的结果

由表2车牌定位的实验结果可以看出,本文提出的颜色定位、边缘检测和SVM相结合的方法对车牌区域的定位效果非常好,只有极少数车牌由于受到阴影的干扰导致车牌区域截取不完整。由表3字符分割的结果可以看出,本文采用查找字符轮廓的方法分割字符图像,效果很好。由表4字符识别的结果可以看出,本文采用的ANN方法对于字符识别的准确度非常高。对于少量字符未能识别出来,主要原因是受车牌区域阴影的影响,使字符二值化后的字符轮廓粘连在一起。由表5系统总体识别结果可知,本文设计的汽车牌照定位与识别系统的正确识别率达到92.0%。

5 结 语

本文设计的汽车图像的车牌定位、字符分割和字符识别系统,可以很好地对蓝色车牌和黄色车牌进行识别。尤其是本文的测试数据集真实、全面,且拍摄角度、拍摄距离和拍摄时间具有明显差异,所提系统仍取得了很好的效果,因此本文设计的系统普适性很高,通用于蓝牌小轿车和黄牌单行字符的大轿车。系统仍然存在待完善的方面。例如,在车牌定位方面,当车牌区域存在不均匀光照和部分阴影时,会使得车牌区域定位不完整,造成字符断裂,导致最后字符识别失败。因此,在对原始车辆图像尤其车牌区域进行去阴影方面,仍需进一步研究和探讨。在字符识别环节,当字符图像比较模糊时,系统识别效果比较差。对此,可以增加一些模糊字符作为字符识别模型训练样本,以提高其识别效果。本文算法通用于蓝底和黄底车牌这两大类,在对系统进行完善之后,有望应用在更多车辆领域,如黄底黑字双行车牌、绿色车牌、白色车牌等特殊车牌识别。

猜你喜欢
字符识别车牌字符
字符代表几
一种USB接口字符液晶控制器设计
数字图像处理技术在车牌识别系统中的应用
HBM电子称与西门子S7-200系列PLC自由口通讯
消失的殖民村庄和神秘字符
一种改进深度学习网络结构的英文字符识别
第一张车牌
基于MATLAB 的车牌识别系统研究
仪表字符识别中的图像处理算法研究
基于CUDA和深度置信网络的手写字符识别