赞
踩
基于数字图像处理和机器学习,包含车牌定位、字符分割和判断、字符识别,开源了项目整理后训练SVM,ANN和CNN数据集
项目语言:C++11 项目平台:MicrosoftVisual Studio 2015 计算机视觉库:Opencv 3.2+opencv-contrib V3.1 cmake3.8.1 源码编译 SVM: Libsvm ANN: Opencv CNN: Caffe ## 详细说明: 该项目以数字图像处理和机器学习为基础,以1485张图片组成的原始数据集为出发点,研究了如何从原始图片集中得到用于分类器训练的数据集;针对车牌区域特点和输入图片的全局特点,提出了四种不同的可能的车牌区域提取方法,经过校正后得到车牌区域候选人;参考自然场景下的文本检测方法和车牌中的字符分布特点,对车牌候选区域提取改进的最大稳定极值区域,通过使用非极大值抑制和区域校正得到字符候选人,通过字符判断分类器和字符搜索,实现非车牌区域的滤除和车牌区域7个字符的提取,其中字符判断使用基于20个描述性特征的支持向量机实现;通过使用金字塔梯度方向直方图特征得到了用于数字和字母识别的三层BP神经网络模型,定义了10层的卷积神经网络模型MyLeNet实现汉字的识别;搭建和编写了一个完整的工程项目,该项目整合了研究过程中的所有方法的程序实现,可以对数据集进行操作也可实现单张图片的自动识别,充分体现了“端到端”和“数据驱动”的思想。
车牌识别(Vehicle License Plate Recognition,VLPR) 是从一张或一系列数字图片中自动定位车牌区域并提取车牌信息的图像识别技术。车牌识别以数字图像处理、模式识别、计算机视觉等技术为基础,是现代智能交通系统的重要组成部分,广泛应用于日常生活中,如停车场收费管理,车辆出入管理,自动放行,交通流量控制指标测量,车辆定位,汽车防盗,高速公路超速自动化监管、闯红灯电子警察、公路收费站等。
据公安部交管局统计,截至 2016 年底,全国机动车保有量达 2.9 亿辆,其中汽车 1.94 亿辆,2016 年新注册登记的汽车达 2752 万辆,保有量增加了 2212 万辆。全国有 49 个城市的汽车保有量超过百万辆,18 个城市超过 200 万辆,6 个城市超过 300 万辆。面对迅猛增长的汽车保有量和高密度的城市汽车保有率,车牌识别对于维护交通安全和城市治安,防止交通堵塞,实现交通自动化管理有着重要的现实意义。
生活中应用的自动车牌检测系统往往包括车辆检测、图像采集、车牌识别三个部分,其硬件基础包括触发设备(如地感线圈、红外线)、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机(如计算机)等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。它的基本原理为,车辆检测部分检测到车辆到达后触发图像采集单元,采集当前的视频图像。车牌识别单元对图像进行处理,定位牌照位置,再将牌照中的字符进行分割和识别,组成号牌信息输出。
这种方法使得车牌区域在图像中的位置和大小较为固定,车牌往往不存在倾斜和形变的情况,并且图片中没有太多干扰物体,图像大小和清晰度以及成像系统的参数特性都是已知的,这些先验知识大大降低了数字图像处理的难度,但却增加了系统对硬件的要求。近十年来,人们通过移动设备获取了大量的图片信息,这些信息公布在网络社交中,蕴含了大量潜在价值,但由于生活场景比生产场景包含更为丰富信息,需要识别的对象呈现形式更为自由,导致传统的图像处理方法效果不佳。这两个问题都迫使我们寻找更为智能的车牌识别方法。
2006 年,Geoffrey Hinton 和他的学生发表了深度学习的里程碑式的文章[1],自此沉寂多年的神经网络复兴,人工智能取得了突破性进展。近些年来阿里巴巴、百度、腾讯、华为都在进行这方面的研究,江苏卫视《最强大脑》的人机对战也引起了广泛地关注,2017 年的政府工作报告也提到了人工智能。不可否认,人工智能确实取得了很快发展,它将引领经济社会发展。
车牌识别作为人工智能中一个细小的分支,一方面,它既涉及许多新兴学科的基础知识,也可以验证多种理论方法的应用效果,而且由于车牌种类相对单一,特征比较明显,数据获取也很方便,是入门机器学习的良好素材。另一方面,车牌识别还有很大的提升空间,面对复杂的成像环境,多样的光照条件和不同的成像距离,以及一定的失真、遮挡、污损,如何提高车牌识别的准确率仍然是个问题。
现如今很多场合下的车辆身份识别采用的是 IC 卡识别技术或者条形码识别技术,这种技术比基于图像识别的技术可靠性好,准确度高,但无法核对车辆与 IC 卡是否相符,需要司机停车刷卡,而基于图像的方法可以对运动中的车辆实现非接触性信息采集和实时识别,使车辆无障碍通行。不可否认,这两种方法各有优缺点,但随着数字图像处理技术的发展,基于图片的识别方法会被越来越多的人认可。
基于车牌识别不应该局限于处理固定视角的摄像监控图片这个的出发点,本次毕业设计希望研究出一个更加通用的中文车牌识别方法。这里的“通用”指的是基于多种背景,视角,大小,光照条件和来源的中文车牌识别,当然这个“通用” 也只是一个相对的概念,它依然有自己的局限性。
车牌识别的概念最早在 1976 年由英国的公安科学发展处(Police Scientific Development Branch)提出,它的第一个实验室原型诞生于 1979 年,同年,第一相关行业生产标准在英国沃金厄姆颁发。车牌识别早期的试验系统部署在英国最长的编号公路 A1 公路和达特福德隧道,然而由于硬件设备价格昂贵和处理器计算能力有限,直到上世纪 90 年代 VLPR 才开始快速发展,许多复杂的算法得以应用,程序处理的对象也由黑白图片、灰度图片转变为彩色图片和视频,车牌识别率和识别速度均得到显著提高。
在我国,该项研究虽然起步较晚,但在高水平期刊中不乏优秀的研究团队发表文章,在市场中也有像“文通科技”、“汉王科技”这样的杰出企业存在。中华人民共和国交通运输部于 2011 年公布的《交通运输“十二五”发展规划》明确提出“推进交通信息化建设,大力发展智能交通,提升交通运输的现代化水平”,自此在我国智能交通由理论研究向实践阶段快速转型,车牌识别技术在公共交通中得以大范围应用。目前,无论是国内还是国外,均有文献报道实现了 90%以上的整体识别正确率和单张图片平均处理时间低于 300ms 的处理速度[2,3]。车牌识别技术一方面需要稳定可靠的识别效果,以满足全天时和全天候的工作要求,另一方面需要快速的处理能力,以实现实时处理。在不同国家和地区,车牌尺寸、颜色、字符、编码方式都有明显差异,在实际应用中,不同国家和地区的车牌识别方法会略有不同。虽然在学术研究中,多种先进的图像处理方法被应用,在市场上,也有很多产品宣称自己达到了 99%的识别率,然而这些方法大多是在特定条件下才会取得很好的效果,比如特定的光照条件,特定的成像距离和视角,特定的背景,有限的车速,甚至特定的成像设备,一旦条件改变,车牌识别效果将会变得很差[4]。而且由于没有统一的测试集和评估方法,明确指出哪种方法优于其他方法是不恰当的[5]。
车牌识别技术最大的挑战在于车牌和环境的多样性,其中车牌的多样性主要体现在以下几点:
环境的多样性主要体现在光照和背景两个方面:
干扰,需要使用更多的的特征和智能的过滤器,这会拖累处理速度,影响实时性。
目前,这些困难还不能得到有效地解决。在我国,标准汽车牌照是由汉字、英文字母和阿拉伯数字共 7 个字符组成,根据不同车辆、车型、用途规定了多种款式的牌照,可以分为普通车轿车、使馆车、警车、军车等,通常汽车牌照中也分大车和小车,并且存在临时车牌。我国汽车牌照的底色和字符颜色有多种组合,日常生活中常见的有蓝底白字车牌、黄底黑字车牌、以及白底黑字车牌三种,而自 2016 年 12 月 1 日起,上海、南京、无锡、济南、深圳 5 个城市率先试点绿底白字的新能源车牌。由于多数汉字不连通(苏,川,吉),结构复杂(赣,浙,藏),车牌识别的难度较大,对图像处理的技术要求高,国外许多成功的车牌识别方法不能直接应用在中文车牌识别中。
2017 年发表的一篇论文[6],阐述了一种基于改进的卷积神经网络的中文车牌识别方法,通过对 2189 幅不同背景下的包含车牌的日常生活图片的车牌识别,达到了 93.74%的识别率和平均每张图片 318ms 的处理速度。
车牌识别一般分为车牌定位,字符分割和字符识别三个步骤,一个完整的车牌识别系统集成了图像采集、车牌识别、数据传输等功能,图 1-1 为一个完整的车牌识别系统示意图。在嵌入式还没有发展起来的时候,前端的数字图像获取设备和后端用于车牌识别的主机分离,前后端通过特定的协议和接口实现数据传输,该情况下硬件平台搭建和软件设计往往分开进行。现如今一体化摄像机识别系统可以一次性实现这些工作,相比前端与后端分离的设计,一体机易于安装,使用灵活,价格低,体积小,性能更为稳定。
图 1-1 一个车牌识别系统的简单示意图
有些论文会将车牌图片的获取和图像预处理作为车牌识别的一部分,但在本次毕业设计中,将图像预处理归为车牌定位部分,而车牌图片的获取则不属于本次研究的范围,本次毕业设计关心的是如何将符合要求的图片中的车牌区域号码的识别。
车牌定位是指从图片中提取车牌区域,这一阶段包含了图片的预处理,可能的车牌区域的提取和非车牌区域的过滤三步。由于车牌可能在图片中的任意位置,为了减轻计算量,先通过特征提取获得可能存在车牌的区域,根据所用特征的不同,车牌定位方法大体上分为 6 类:
车牌定位的效果受背景和光照的影响较大,表 1-1 归纳了这些方法的优缺点。
表 1-1 基于不同特征的定位方法比较
特征类型
理论基础
优点
不足
边界特征
车牌是长方形
简单、快速、直接
由于对多余的边界敏感,在复杂场景中难以使用
全局特征
找到与车牌大小相近的连通区域
直接,不限制车牌位置
车牌可能不连通,导致被分为多个区域
纹理特征
车牌区域存在频繁的颜色变化
在车牌边界畸形的情况下,依然可以找到车牌
图片中边界信息较多时,计算复杂
颜色特征
车牌区域有特定的颜色组合
可以检测到倾斜和形变的车牌
RCB 对光线敏感,HLS 对噪声敏感
字符特征
车牌上有字符存在
对旋转健壮
计算时间长,会受非车牌区域字符干扰
混合特征
混合特征会更有效
更加可靠
计算成本高
字符分割是指对提取出来的车牌区域进行分割得到用于识别的字符图片,由于从图片中获得的车牌区域不可避免的存在倾斜、光照不均和包含无用背景的问题,在字符分割前,需要进行预处理提高字符分割的成功率。车牌的倾斜校正往往包含水平校正和垂直校正两部分,论文[13]通过拟合字符在垂直方向的中间位置像素,得到车牌在水平方向上的倾斜角度,通过旋转变换实现水平校正,通过比较字符在垂直方向的投影长度,得到垂直方向的倾斜角度,最后通过剪切变换实现垂直校正。
通常,车牌区域的字符分割是基于二值图像,为了克服光照不均导致阈值化处理效果不佳的问题,图像增强算法和自适应算法被广泛应用,常见的图像增强方法有低通滤波,直方图均衡化和对比度增强。二值图像中包含的背景区域,可以通过投影分析和水平方向上的灰度值改变次数去除。
字符分割主要有五种方法:连通区域分析,投影分析,关于字符的先验知识分析,字符轮廓分析以及这些方法的混合,表 1-2 简要说明了这些方法的优缺点,其中投影分析是最容易也是最直接的方法,但是它的表现与车牌定位的方法相关,连通区域分析在字符间隔大的车牌中表现较好,在日韩国家应用较为广泛。字符分割得到的字符序列会存在大小不均和字符断裂的问题,需要进行归一化处理和形态学操作后才能用于字符识别。
表 1-2 不同字符分割方法比较
分割方法
连通区域分析
简单直接,对旋转不敏感
不适用于不连续的字符
投影分析
不依赖字符位置
易受噪声影响
使用字符分布的先验知识
简单
鲁棒性差
使用字符轮廓
可以得到确切的字符
速度慢,字符可能被分割
使用混合方法
计算复杂
字符识别是将分割出的字符序列转化为车牌号码的过程,一般可以分为基于原始数据的识别和基于分类器的识别两种。
模板匹配是一种简单直接的字符识别方法,它通过找到与字符相似程度最高的模板得到图片的识别结果,为了降低图片亮度对识别结果的影响,模版匹配一般采用二值图片。与模板匹配相似的方法有马氏距离、贝叶斯决策技术、Hausdorff 距离和 Hamming 距离。通常,对于大小和字体固定,字符没有断裂和扭曲的二值字符集,简单的模配就能实现很好的识别效果。当字符区域存在噪声、字符倾斜、笔画粗细不均、字符位置改变时,基于模板的识别效果会变得很差,通过对一个字符存储多个不同模板可以提高该方法的鲁棒性。
对于一张需要识别的字符图片,并非所有像素点都具有相同的重要性,个别像素点值的改变不会影响图片代表的字符值,为了降低这些像素点值的改变对识别效果的影响,提出了基于特征提取和分类器的字符识别方法。基于分类器的字符识别方法一方面可以降低待处理的数据维数,在特征能够区分字符间差别的情况下,可以显著提高字符识别的鲁棒性,但是字符特征的选择和计算以及分类器的训练难度较高,比较耗费时间。
特征向量的产生方法有很多,比如二值图像水平和垂直方向上的投影、字符的拓扑特征、字符的纹理特征等,有些特征具有尺度不变性,旋转不变性或者对字符位置不敏感,这样的特征一般计算量较大,但可以省去一部分图片预处理的步骤,比如旋转矫正,减少总的处理时间。
可用于字符识别的分类器种类繁多,基本包含了所有机器学习中提出的方法,像支持向量机,自适应提升算法,人工神经网络和隐马尔可夫模型等都有大量研究中得到有效应用。近年来,深度学习的方法也被很好地移植到车牌识别中,与传统的分类器不同,以卷积神经网络为代表的新兴分类器可以直接将图片作为输入,通过训练特征提取层,自动提取数据特征,省去了人为定义特征的过程。
本文主要阐述了一种更加“通用”的中文车牌识别方法及其程序实现,该方法针对于识别多种背景,视角,大小,光照条件和来源的车牌图片,它的基本流程如图 1-2 所示,输入需要识别的图片,通过分析边缘或者颜色特征,得到车牌区域候选人,通过对车牌区域候选人进行字符分析,判断它的字符数是否为七,是则将字符分析的结果输入字符识别中,输出车牌号,否则认为它不是车牌。
本次毕业设计的关键点在于实现一种“通用”的中文车牌识别方法,本文的“通用”指的是基于多种背景,视角,大小,光照条件和来源。虽然中文车牌种类繁多,但由于图片数量的限制以及个人精力有限,本文只研究了生活中最为常见的小型汽车车牌,也就是蓝底白字白框线的尺寸为 440mm×140mm 的车牌,本文的“通用”不涉及各种类型的中文车牌识别。
由于本文中车牌候选区域的获取依然是基于传统数字图像处理方法,所以 该方法除了只能用于“蓝牌”的识别这一不足外,还存在以下四点限制。
开始
输入
待识别的图
初始化
变量
i=1
,
车牌号
码
集合
Q
为空集
N
Y
i
>
j
?
对第
个
车牌区域候选
人进行
字符分析
i++
输出
对判断
为车牌区域的对象
进行
字符
识别
结果存入集合
。
结束
提取
得到
车牌区域
候选人
图 1-2 本文研究方法的基本流程图
本文主体部分共有五章,分别是建立图片集、提取车牌区域候选人 、字符分析、字符的识别、程序综合与分析。
图片集的建立是本研究开展的基础工作,也是研究中相比其他各项工作人力消耗最大的部分,数据集的质量和数量,是整套方法建立的依据。数据集的制作分为 5 个部分:获取包含车牌的数字图片集;获取车牌区域候选人的数据集;建立字符判断的数据集;建立数字和字母识别的数据集;建立中文字符识别的数据集。
车牌区域候选人的获取章节的主要内容是对图片集进行分析并探讨适用的定位方法,传统的车牌定位即使结合了多种图像处理的技术,也是用一套方法去处理不同环境下的图片,实际上不同的场景适合不同的处理方法,细化分类才能帮助机器更好的理解决策。
字符分析章节的处理对象是车牌区域候选人,主要分为字符候选人的提取,字符判断和文本提取三个部分,该部分可以实现非车牌区域的滤除和车牌区域字符分割两大功能。字符候选人的提取采用改进的最大稳定极值区域(Maximally Stable Extremal Regions,MSER)的方法,字符判断使用了基于 20 个字符特征的支持向量机(Support Vector Machine,SVM)作为分类器。字符候选人的提取和字符判断只针对车牌上的数字和字母,不包括汉字。字符聚类搜索可以解决字符嵌套和字符遗漏的问题,完成字符外接矩形校正,最终得到完整的车牌字符序列。
字符的识别章节分为汉字和非汉字识别两部分,其中汉字为 31 个省份的简称,分类器使用是自主设计的 10 卷积神经网络(Convert Neutral Network,CNN)模型 ——MyLeNet,分类器输入是大小为 32*32 的黑白图片;非汉字指的是车牌上使用的 10 种数字和 24 种英文大写字符,它们的识别使用了 BP 神经网络(Back Propagation Neutral Network),分类器的输入是基于纹理的金字塔梯度方向直方图
(Pyramid of Histogram of Oriented Gradients,PHOG)的维度为 180 的特征向量。为了充分说明所用分类器的合理性,本章对比了 BP 神经网络和 CNN 的汉字识别效果以及 SVM 和 BP 神经网络对数字和字母的识别效果。
程序综合章节简要说明了项目平台的搭建过程和程序的框架结构,介绍了本次研究所使用的开发工具集 Visual Studio 和主要使用的计算机视觉库 OpenCV 和卷积神经网络框架 Caffe,阐述了程序如何综合前几章节的研究成果实现自动识别一张或多张图片的功能,展示了程序的运行效果。
图片集的建立是本文一切研究工作开展的基石,无论是在使用传统图像处理方法的车牌区域候选人提取研究工作中,还是在需要大量样本用于训练分类器的字符判断和识别工作中,都离不开相应的图片集的建立工作。图片集的建立除了数据的获取,还需要筛选和分类,这些工作虽然繁重耗时,但充分保证了图片集不仅数量合适,而且样本差异明显,能够充分表征研究对象的多样性。
图片集的建立了工作共分为 5 个部分,分别是获取包含车牌原始数字图片集;获取车牌区域候选人的图片集;建立字符判断的图片集;建立数字和字母识别的图片集;建立中文字符识别的图片集。需要指出的是,图片集在电脑中的存储格式为 JPG 格式,存储图片使用 RGB 颜色空间模型,每张图片有三个通道,各通道均有 256 个可能的离散灰度值,即 8 比特图像,于黑白图片,需要以灰度图片的格式读入程序,执行阈值化操作后才能使用;由于数字和字母识别图片集的建立与中文字符识别图片集的建立方式完全不同,所以分为两个小节叙述;对于用于分类器的图片集,会细分为训练集和测试集两部分。除了原始图片集不做处理,其他所有图片集的制作均是由程序批量处理产生,经过手工标记和筛选制作而来,其中会涉及很多图像处理方法,来保证图片多样化尽可能的小,这些处理方法与程序综合时对单张图片的处理方式是一致的,保证了样本与总体的一致性。为了方便人工标记和筛选,批量化处理后,所有图片都会存入文件夹中。
本次毕业设计针对于处理多种背景、视角、大小、光照条件和来源的图片的车牌识别,所以原始图片集必需具有视角多样、背景复杂、大小各异,光照条件不同,来源途径丰富的特点,并且满足本次研究的限制条件。
现如今网络虽然包含大量信息,但由于车牌涉及个人隐私,所以公开的图片往往会对车牌区域进行马赛克处理,而没有马赛克处理的图片,往往车牌号码特殊(88888,00000),不利于字符集的制作,所以真正可用的图片很少。与国外实验室在数据研究成熟后开源数据集的习惯不同,中国的数据共享体制还不健全,没有可用的较大规模的免费的车牌识别原始图片集可以直接拿来使用。
原始数据集共包含 1925 张彩色图片,其中 153 张图片为夜间拍摄,其余均为白天拍摄,图片以包含一个车牌为主,也有包含 2-3 个车牌的图片,我从中抽取 440 张用于最终识别效果的检测,其余 1485 张图片用于测试研究图片处理方法和制作后续的数据集。
原始图片数据集共有如下三种来源,第一种是来自山东某地的高速摄像头捕捉的监控图片,由实验室提供,共有 649 张,图片宽度均为 1600 像素,高度为 1264 像素,成像视角和监控场景有两种,时间段均为天气晴朗的白天;第二种来自网络查找的生活图片,共有 686 张,拍摄地点和角度远近各异,图片大小和质量存在明显差异,其中 656 张为白天图片,30 张为夜间图片,均在晴天拍摄;第三种来自我通过手机采集的图片,共有 590 张,采集时间段分为早上,中午,下午和晚上四个时间段,白天图片为 467 张,夜间图片为 123 张,采集地点为哈尔滨和北京两地,图片大小有宽度为 1600 像素,高度为 1200 像素和宽度 1200 像素,高度 1600 素两种类型,图片光影变化丰富,视角和距离呈现多样化。图 2-1 展示了原始图片集中不同类型的图片。
图 2-1 不同类型的原始图片展示
车牌区域候选人图片集的建立的是在原始图片集的基础上实现的,每张原始图片都会被四种定位方法依次处理,最终实现了对 1485 张图片接近 99%的车牌区域定位率,当然提取的区域也包含大量非车牌区域,提取的结果中也有同一区域被多次提取的问题,提取的车牌区域也存在断裂问题,四种车牌区域的提取方法将在第三章详细阐述。最终车牌区域候选人图片集包含 18058 张图片,这些图片均规范化为宽度 153 像素,高度 48 像素的灰度图片进行存储,为了方便后文中字符集的建立,我将包含车牌区域的图片存储在一个文件夹下,不包含车牌区域的图片存在另一个文件夹中。
经统计,包含车牌区域图片共有 4201 张,无关区域图片共有 13 857 张,平均下来,每张图片可以提取 2.84 个车牌区域和 9.33 个非车牌区域,每种方法平均定位出 0.73 个车牌和 2.40 个干扰项。虽然车牌区域在图片中的位置是固定的,有些图片因为车牌区域颜色特征和边缘特征鲜明,背景简单,四种方法均可以定位到车牌区域,有些图片则只有一种方法可以定位到车牌区域,但是由于处理手段的不同,同一位置提取的效果也不相同,不同方法得到的干扰项也不相同,没有两张完全一样的图片存在,无需进一步筛选,车牌区域候选人图片预览如图 2-2 所示。
图 2-2 高速图片基于边缘定位方法得到的车牌区域候选人
字符判断图片集的建立是为了制作字符判断的训练集和测试集,通过对车牌区域候选人提取 MSER,可以得到很多小的联通区域,这些区域既有字符,也有非字符,这些区域将以大小 24×24 像素的黑白图片形式保存文件夹中,通过人工标记分类,得到字符图片集和非字符图片集,MSER 的提取将在第四章中介绍。
由于 MSER 是基于区域连通性的分析,而汉字往往结构复杂不连通,检测效果不太好,但是由于汉字只出现在车牌区域最左端,可以通过数字和字母的大小分布推断出汉字所位于的区域,所以字符的判断中将数字和字母视为字符,汉字视为非字符,车牌中汉字的获取是通过间接方法获得的。在实际操作中,“1”也被视为非字符,这是因为车牌的边界和生活中的很多结构在阈值操作后也呈现出“1”的形态,但“1”本身非常好描述,所以选择用间接的方法去判断一个区域是否是“1”。为了方便字符的标记分类,在车牌区域候选人建立的时候,将包含车牌区域的图片和不包含车牌区域的图片分开存储,通过批量处理,MSER 的提取结果将分别存两个文件夹中,其中包含车牌区域的图片对应的文件夹主要以字符为主,非字符的图片可以手动提出来放到非字符的文件夹中,对于不含车牌区域的图片对应的文件夹,基本上不含字符图片,只需手动剔除易与车牌字符混淆的图片即可。
通过批量处理和手工分类,共计得到 101 349 张字符图片和 86 772 张非字符图片。通常一个车牌区域会有 7 个字符,由于车牌区域共有 4201 张图片,平均下来,一个字符会得到 3.35 张字符图片,这是由于 MSER 在区域生长过程中存在两个层级相似度比较问题,如果相似度低于某个值,就会认为这是两个不同的区域,通常区域灰度值变化越丰富,同一区域的嵌套现象越严重。另一个问题就是两个相邻字符可能会被认为是一个区域,但每个字符基本上也会被分割成一个区域,这就是嵌套带来的优点。当然,对于非字符但和周围背景有明显差异的区域也会被提取出,而和背景过于相似的字符也可能被遗漏。
通过筛选掉相似的图片和减少因为采集地点导致的高频出现的字母“A”和“B” 的数目,我完成了字符集和非字符集的制作,基于正负样本数目均衡的考虑,最终共有 20 327 张字符图片和 20 068 张非字符图片用于训练,3845 张字符图片和 3663 张非字符图片用于测试。字符候选人图片如图 2-3 所示。
图 2-3 字符判断图片集展示
在我国车牌中的使用的数字有“0”、“1”、“2”、“3”、“5”、“6”、“7”、“8”、
“9”十个,大写的英文字母有“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、 “J”、“K”、“L”、“M”、“N”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、 “X”、“Y”、“Z”24 个,为了避免混淆,没有字母“I”和“O”。在我国,蓝底白字白线框车牌上的第一个字符是车辆户口所在省的简称,第二个字符是大写英文字母,代表归属地的地市一级代码,其余五个字符可以是任意数字和字母的组合。有些研究中,将数字和字母的识别分开进行,但我觉得在实际使用中,意义不大,所以将字母和数字作为一个整体,送入同一个分类器中。
在字符判断图片集制作中,共计得到了 20 327 张训练用字符图片和 3845 张测试用字符图片,在它们的基础上,进一步分类和筛选即可得到字母与数字识别的图片集。由于 MSER 存在嵌套问题,所以字符判断图片集的筛选主要为了滤除相似样本,而在本阶段的筛选工作主要均衡训练集中各类字符的数目。在车牌中,有些数字使用频率很高,有些字母的使用频率偏低,导致不同字符数量差距大,而且由于这是个多分类的问题,无论是使用 SVM 还是 BP 神经网络,训练难度都会增大,适当减少训练图片数目,可以降低训练时间。在车牌中,字符“B”和“8”,“0” 和“D”相似性很高,有时候肉眼难以判断,这时候需要剔除这些样本,防止标记错误,引入噪声。
在本次研究中,字符“1”的识别是基于长宽比和周围字符的信息来判断的,所以字符集实际划分出的字符种类只有 33 种,最终筛选出 16181 张字符图片,其中 9900 张图片用于训练,各类字符均为 300 张,6281 张图片用于测试,各类字符数量不等,具体分类如图 2-4 所示。
中文字符识别图片集包含了“川”、“甘”、“黑”,“津”,“辽”、“闵”、“琼”、
“晋”、“新”、“粤”、“浙”、“鄂”、“贵”、“沪”、“京”、“鲁”、“宁”、“陕”、“皖”、 “豫”、“云”、“赣”、“桂”、“冀”、“吉”、“蒙”、“青”、“苏”、“湘”,“渝”,“藏” 共计 31 类字符,分为训练集和测试集两个部分存储,每个部分下有 31 个文件夹用来存储不同的字符图片。
310
344
430
256
241
97
203
183
201
352
204
125
136
138
193
16
5
82
199
207
182
142
218
117
178
110
1
77
90
字符值
4
6
7
8
9 A B C D E F G H J K L M N P Q R S T U V W X Y
Z 170
0 100 200 300 400 500 图片数量
图 2-4 数字与字母识别每类字符的测试图片数目
数字与字母的识别和中文字符的识别分开处理主要基于以下三方面考虑:
从对原始图片处理得到的结果来看,汉字图片普遍表现出笔画连接和断裂的问题,由于汉字往往分为多个部分,字符部分结构缺失的现象也很普遍,比如字符 “鲁”的很多笔画会连在一起,只有轮廓信息可用;字符“黑”的四个点很容易不被检测到。由于汉字位于车牌的最左侧,提取结果有时会包含车牌边框,这会导致当字符“京”和车牌边缘同时存在时会和“琼”很像,而“琼”提取不完整时,又容易和“京”混淆的问题。很多汉字结构复杂,笔画繁多,在归一化处理后,相对于结构简单的字符而言,原有的很多细节信息丢失,难以辨认,有些处理结果在没有先验知识的前提下,人都很难把它理解成一个字符。
图 2-5 为高速监控图片处理后得到的汉字“鲁”的图片和手机拍摄图片处理后得到的汉字“黑”的图片,相比“豫”、“湘”、“渝”、“赣”这样的汉字,“黑”和
“鲁”不算很复杂,但已经呈现出丰富的变化。
图 2-5 非字符集中的中文字符图片
(3)汉字只存在于号牌的最左侧,与将字母与数字分开识别不同,汉字和非汉字的分开处理,不需要对同一张字符图片多次调用不同的分类器,在识别阶段,没有额外的计算消耗。
中文字符图片集的原始数据是从网上下载的一个车牌汉字数据集,该数据集包含上文提到的 31 个汉字字符,不同字符存放在不同文件夹中,数据集中的图片绝大部分为灰度图片,也有少量黑白图片。数据集中除了少量图片不是车牌中使用的字体,大部分是实际车牌处理得到的结果,呈现出丰富的光影和形态变化。数据集中的图片大小多样,各类字符数目不同,大部分字符数目可观,部分图片字符模糊,与背景的差异较小,存在图片重复出现的问题。图 2-6 是该数据集的图片展示,
图 2-7 为该数据集各类字符的数目统计结果。
图
2
-
网络下载车牌
汉字
数据集
图片
展示
对原始数据集中的图片使用自适应阈值操作转为黑白图片,阈值操作采用大
图 2-7 网络下载车牌汉字数据集图片各类字符数量统计图
小 7×7 的平均值核函数,该核函数可以最大程度保留字符细节信息,有效抑制背景噪声,该核函数的选择是通过多次试验获得的经验结果。在机器学习领域,通常处理正方形的图片会比矩形图片更方便,比如很多核函数是矩形,只适用处理矩形图片。为了不让字符产生额外的形变,通过加边框的方式可以将阈值化操作后的图片变为正方形,由于是黑白图片,字符区域灰度值为 255,背景区域灰度值为 0,只需在图片较短边的两侧添加灰度值为 0 的边框即可。最终将图片统一转化为 24
×24 像素的图片。归一化操作后得到的字符依然存在很多问题,比如字符结构损失严重,或者背景噪声过于强烈,这种现象的产生归结于原始图片集中存在大量低质量的字符图片,经过信息压缩后,基本上失去识别的意义,这些字符需要从字符集中筛除。
经过筛选后的字符图片集样本数目明显减少,各类字符数目差异较大,为了均衡各类字符数目,获得尽可能多的样本训练分类器,我对这些图片人为加入噪声和形变,制造新的样本,这种方法可行的原因在于字符的字体是唯一的,字符样本的多样性主要体现在倾斜角度,字符在图片中的位置,字符大小,字符形变和背景噪声这几个方面,这些变化是可以通过计算机实现的。
最终,中文字符识别的数据集共有 24 767 张图片,均为大小 24×24 的黑白图片,经过随机分组,18 567 张用训练,6200 张用于测试,训练集中每类字符 600 张左右,测试集中每类字符 200 张。由于中文字符的识别采用 CNN,为了在卷积层处理的时候,不损失有用信息,在图片四周加入灰度值为 0 的边界,使得图片变为大小 32×32 的图片,这些图片存在另一个文件夹中,图片的大小是依据本文使用的网络结构设计的,具体解释会在第五章展开。图 2-7 展示了中文字符识别图片集的部分元素,图 a 中的每个字符均为 24×24 的原始字符图片,图 b 是针对本文使用的 CNN 结构制作的图片集展示效果图。