APP下载

模板匹配联合特征法在车牌字符识别中的应用

2022-03-05刘丽丽

工程建设与设计 2022年2期
关键词:字符识别车牌数目

刘丽丽

(长治学院计算机系,山西 长治 046011)

1 引言

车牌自动识别技术研究是当前国内外智能交通系统的研究热点,在无人值守停车场、交通监控、高速收费及车辆追踪等领域具有重要的应用价值。和目前普遍采用的ETC 技术相比,车牌自动识别系统不需要车主增加任何设备即可完成车牌信息的采集,方便了客户,节约了成本。

车牌自动识别系统的研究一般分为车牌定位、字符分割、字符识别3 个模块。其中,对字符识别的研究在国内外获得了广泛的发展。目前,普遍流行的研究方法有模板匹配、特征法、神经网络、支撑向量机等。

模板匹配算法是待识别字符的数据信息和模板库中所有字符的数据信息依次进行比较,重合数目最高者即为识别值。模板匹配适合固定尺寸、无倾斜、没旋转的字符数据[1,2]。

特征法也是一种快速简单的算法。谭教授和张向东等人利用识别字符的图形特性,根据水平遍历和垂直遍历的数据构建特征函数,通过不同的函数值来识别字符[3,4]。Yan 等人利用字符的投影特征、周边距离特征、不同位置的密度特征进行识别[5]。文献[6]则是根据字母和数字中孔的数目,先进行分类,然后通过1 个2 层的神经网络模型来进行识别。他们的方法不受识别字符旋转、大小变换等的影响。特征法的特点是算法编程简单,识别时间短,不需要神经网络算法中的训练和学习过程。

神经网络是车牌字符识别系统中被普遍研究的一种方法,常用的有BP 神经网络[7,8]、非标准前馈神经网络[9]、自组织神经网络、概率神经网络[10,11]等。这些文献的研究结果表明,其在定位分割准确的情形下,都达到了95%以上的识别率。神经网络算法识别率高,但其识别时间长,在一些强实时系统中可能无法应用。此外,Hausdorff 距离法也被用在了车牌字符识别系统中,识别率达到了97.2%,但识别范围只限于韩国车牌[12]。支撑向量机方法作为有监督的机器学习中的一种,也在车牌字符识别中被广泛应用[13]。

模板匹配和特征法识别速度快,但识别率较低。神经网络及机器学习法识别率高,然而时间开销大。对识别结果进行分析发现,对于不存在相似字符的车牌字符,上述识别方法的准确率都近似99%。影响识别率的因素主要在于对相近字符的识别。基于此,本文提出了模板匹配联合特征的二次识别算法。算法的核心思想是对于多数不易混淆的字符采用一次模板匹配算法;对于有相似字符,识别时比较容易出错的字符除进行一次模板匹配算法识别外,再进行二次特征识别。算法的目的是提高识别率,缩短识别时间,简化算法程序设计,以使车牌自动识别系统可以更好地应用于嵌入式实时智能交通系统。

2 算法设计

2.1 中国内地车牌字符及其特征

中国境内的车牌字符包含如下几类:

1)数字:0~9;

2)字母:A~Z,不包含字母“I”和“O”;

3)汉字:北、边、藏、川、鄂、甘、赣、贵、桂、黑、沪、吉、冀、津、晋、京、空、辽、鲁、蒙、闽、宁、青、琼、陕、苏、皖、湘、消、新、渝、豫、粤、云、浙、警、赛。

车牌范例格式如图1 所示。

图1 中国内地车牌字符序列

对中国境内车牌字符序列进行分析,可知其排列有以下3 种类型:

1)普通车牌:车牌字符数目是7 个,首字符是汉字、次字符是字母、第3~6 位字符是字母或数字、最后一位字符是字母、数字、或汉字“警”;

2)军牌车:车牌字符数目是7 个,前2 位字符是字母,后5位字符是数字;

3)武警车牌:字符数目是9 个,前2 位字符是“WJ”,第3位和第4 位字符是数字,第5 位字符是武警牌照中涉及的汉字消、边、通、森、金、警、电,第6~9 位字符是数字。

车牌字符中的相近字符有如下7 类:(1)0、D、Q;(2)2、Z;(3)4、A;(4)5、S;(5)8、B;(6)M、W;(7)6、G。如图2 所示。军牌车的数字“6”和普通车牌的数字“6”区别较大,故都包含到了字符库中。本类字符的图形如图2 所示。

图2 特征识别字符库中的字符图形

2.2 模板匹配联合特征的字符识别算法设计

模板匹配联合特征的车牌字符识别算法设计思想是首先把车牌中的所有字符分为2 类:一类字符结构独特,无相似字符,包含汉字及2.1 所述的7 类字符之外的字符,对该类字符仅应用模板匹配算法便得到识别结果;另一类是2.1 所述的7 类字符,对该类字符先应用模板匹配算法进行初次识别,获取字符分类后再进行二次特征识别,最终获得识别结果。

模板匹配算法思想简单,把待识别字符的数据和字符库文件中的所有字符数据依次进行比较,重合数目最高且大于识别界值者即为识别结果。模板匹配算法可以匹配字符的所有数据信息,也可以匹配其直方图,或者二者都匹配。本模板匹配算法匹配的是所有数据。

需要进行二次特征识别的,对相似字符进行二次特征识别时,对于2.1 中的分类(1)至分类(6)采用四边界投影法。算法思想是首先通过遍历获取待识别字符的上下左右四边界投影数据,然后依次计算和本分类中的所有字符的边界数据的标准差和,最小的标准差和对应的字符即为识别结果。为了突出差异性,可通过不同的权值进行调整。在差异处的重点数据前面用较大的权值,普通相似数据前面用较小的权值对标准差值进行修正。公式如下:

式中,n 为识别字符四边界数据的个数;i 为识别字符的数据序号;xi为识别字符的数据;k 为模板中需要匹配的字符数目,为本类相似字符集的数目;ε[k,i]为模板中匹配字符的四边界数据;ωi为权值。

分类(7)中字符“6”和“G”的区别主要在于图形中是否存在闭合圆。算法设计时只需从右下角向上向左(图片内存数据是上下翻转的,编程时需要从右上角向下向左)搜索,存在断裂则认为是字符“G”,否则是字符“6”。

2.3 算法实现

2.3.1 标准字符库及配置文件的建立

在进行车牌字符识别之前,需要建立标准的字符库及一次识别的配置文件和二次识别的配置文件。

标准字符库的建立需要从标准车牌中获取独立的车牌字符图像,进行去噪、缩放及二值化处理,生成高度宽度一致白底黑字的8 位BMP 图像文件。为了提高一次识别时的准确率,同一字符可以有多个字符库文件,包含不倾斜、向左小角度倾斜、向右小角度倾斜3 种类型。

对标准字符库中的所有BMP 字符文件数据进行提取,生成一次识别时所需的二进制配置文件,其内容及顺序为:首先,是数字、字母、汉字的数目。为方便数据定位,字母位置的数目可以写入数字字母的和,汉字的数目可以写入所有字符的和。其次,依次写入字库中所有字符的ASCII 码及序号,数字字母占一个字节,汉字占2 个字节。最后,对字符库中的字符文件数据依次读取,并舍弃文件头,数据信息以压缩的形式存储。

二次识别的配置文件是对标准字符库中的相似字符(不包含字符“6”和“G”)的四边界数据进行提取,同样以二进制格式存储其数据。配置文件b.bin 中的内容分为3 部分:第一部分内容依次是分类序号(1 个字节)、本分类相似字符数目(1个字节)、相似字符的ASCII 码(各占1 个字节)、四边界投影数据起始地址(2 个字节)、四边界投影数据权值起始地址(2 个字节)、结束标志“FFFF”(分类一是“FF”),每个分类占用10 个字节,共60 个字节;第二部分内容依次是相似字符的四边界数据,和第一部分字符顺序保持一致;第三部分内容依次是相似字符四边界数据的权值,和第一部分字符顺序保持一致。

2.3.2 识别算法的实现

车牌字符识别之前首先对车牌原始图像进行预处理及实现车牌定位和字符分割处理。从外部设备传输给车牌识别系统的车牌原始图像一般是JPEG 或别的格式,在车牌图像预处理阶段转换成非压缩的BMP 图像,再进行灰度变换及二值化,然后实现车牌定位及字符分割。为了和字符库文件中的数据格式相匹配,分割后的字符需要进行归一化处理及数据压缩。把压缩后的字符数据和配置文件中的数据进行比较,重合数目最高且大于识别界值者(本文中标记为Tlimt)即为识别值。

在车牌字符识别算法设计中,根据2.1 中对中国境内车牌字符序列特征的描述,采用了3 种识别路径:普通车牌、军牌车、武警车。首字符的识别尤其重要,决定着后续车牌字符的识别路径。如果首字符和模板中字符重合的数目小于或等于Tlimt,则认为首字符是干扰字符,存在分割错误的情形,丢弃首字符,修正第2 个分割字符为首字符。

在普通车牌字符的识别流程中,次字符识别区为字母,第3~6 位字符识别区为字母数字区、最后一位字符识别区是字母数字或汉字“警”。除首字符之外无法识别出的字符认为定位分割错误,放弃识别。识别的重点是对相似字符采取二次识别,次字符的识别区域为字母。军牌车和武警车的识别流程类似,只是字符的数目及识别序列有所不同。

一次识别的结果如属于图2 所示的相似字符集,则进行二次辨识。首先,根据初次识别结果确定识别分类,如一次识别结果是字符“6”或“G”,判断是否还有封闭圆,算法如2.2 所示。否则如是其他相似字符,则根据初次识别结果确定识别分类并提取待识别字符的四边界投影数据xi;然后根据识别分类从b.bin 中依次提取本分类所有字符的四边界数据ε[k,i]及权值ωi;最后对xi、ε[k,i]、ωi应用公式一即可得识别结果。

3 系统测试

本系统对4 000 幅JPEG 图片进行了测试。JPEG 素材图片分辨率为1 600×1 200,每个像素为24 bits,大部分来自高速路口收费站的拍摄,少部分来自停车场,以蓝牌为主,包含了黄牌、黑牌、白牌多种牌照。图片中,白天拍摄的图片为3 000 张,晚上拍摄的图片为1 000 张,以晴好天气为主,包含少部分的雨雪暴晒及晚上开车灯的环境。测试时所用的软硬件环境为:

CPU:Intel(R)Core(TM)i5-4460;

主频:3.20 GHz;

内存:8G;

操作系统:Windows 7;

程序设计语言:Visual C++6.0。

在车牌字符识别算法设计过程中,首先,对原始jpeg 类型车牌图片进行解压缩,转换成BMP 类型图片;其次,进行车牌预处理,实现车牌BMP 图片的二值化;然后,进行车牌定位及字符分割;最后,进行车牌字符识别。车牌部分原始图片如图3所示,关键步骤中的车牌定位、车牌数据提取及车牌字符分割分别如图4、图5 和图6 所示。图7 展示了识别结果。

图3 部分原始图片

图4 精确定位

图5 车牌位置数据提取

图6 字符分割

图7 识别结果

在车牌定位准确,字符分割无误的条件下,本字符识别算法的准确率达到了99%,错误率主要在于汉字的识别;不包含车牌预处理和车牌定位,车牌字符平均识别时间为50 ms。

4 结语

在车牌字符识别算法研究中,针对当前国内外单一的算法运用,首次提出了模板匹配联合特征多种算法相结合的综合应用方法,有效解决了相似字符识别容易出错的问题,显著提高了车牌字符的识别率和识别速度。此外,本算法设计简单,执行时间快,占用存储空间小,应用范围广,不仅适合公安系统中的车辆追踪等PC 机领域,也适合无人值守停车收费系统,同时,还适合实时性要求较高的高速路收费系统、电子警察抓拍等嵌入式系统领域。汉字由于结构复杂,前期的二值化及归一化运算都对字符形态有较大的影响,导致后期识别难度大,是影响车牌字符识别率的另一个因素,也是车牌字符识别领域进一步研究的重点。

猜你喜欢

字符识别车牌数目
移火柴
数字图像处理技术在车牌识别系统中的应用
第一张车牌
基于MATLAB 的车牌识别系统研究
融合字符及字符排列特征的铭牌识别方法
一种基于OpenCV的车牌识别方法
基于MATLAB的图片中字符的分割与识别
牧场里的马
“他的车牌是……”
探索法在数学趣题中的应用