目录
一、 问题描述
1.1 研究背景
随着21世纪经济全球化的到来,高速度、高效率的生活节奏,使车辆普及成为必然的趋势,交通管理自动化越来越成为亟待解决的问题。车牌是一辆汽车独一无二的信息,因此,对车辆牌照的识别可以作为辨识一辆车最为有效的方法。现代智能交通系统 (Intelligent Transportation System,ITS)中,车辆牌照识别(License Plate Recognition,LPR)技术是计算机视觉与模式识别技术在交通领域应用的重要研究课题之一,是实现交通管理能够智能化的重要环节,其任务是分析、处理汽车图像,自动识别汽车牌号。LPR系统中的两个关键子系统是车牌定位系统和车牌字符识别系统。整个处理过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块,其中字符识别过程主要由以下3个部分组成:
(1)正确地分割文字图像区域;
(2)正确的分离单个文字;
(3)正确识别单个字符。
现代化交通系统不断提高的快节奏,将对车牌定位的准确率和实时性提出更高的要求,因而进一步加深车牌定位的研究是非常有必要的。
1.2 国内外研究情况
车牌自动识别技术的研究国外起步地较早。早在20世纪80年代,便有一些零零散散的图像处理方法用于车牌自动识别的某些具体应用。在这个阶段,车牌自动识别技术的研究还没有形成完整的系统体系,一般采用简单的图像处理方法来解决某些具体问题,并且最终结果通常需要人工干预。
进入20世纪90年代后,车牌自动识别的系统化研究开始起步。典型的如A.S.Johnson等提出车辆牌照的自动识别系统分图像分割(Image Segment)、特征提取(Feature Extraction)和模板构造(Template Formation)、字符识别(CharacterRecognition)等三个部分,完成车牌的自动识别。R.A.Lotufo使用视觉字符识别技术(Optical Character Recognition Technology)分析所获得的图像,首先在二值化图像中找到车牌,然后用边界跟踪技术提取字符特征,再利用统计最邻近分类器(Statistical Nearest Neighbor Classifying System)与字符库中的字符比较,得出一个或几个车牌候选号码,再对这些号码进行核实检查,确定是否为该车牌号码,最终确定车牌号码。这个时期的应用在识别正确率方面有所突破,但还没有考虑识别实时性的要求,识别速度有待进一步提高。
由于我国的车牌格式和国外有较大的差异,所以对于国外的车牌识别系统的研究技术,我们只能进行参考,不能进行直接应用。虽然我国车牌的识别需要识别汉字,但是对于英文字母和数字的识别,我们可以借鉴国外的研究技术。
从80年代中期开始,ARGUS英国Alphatech公司就开始了名为RAUS的车牌自动识别系统的研制。ARGUS的车牌识别系统的识别时间约为100毫秒,通过ARGUS的车速可高达每小时100英里。还有Hi-Tech公司的See/Car system,新加坡Optasia公司的VLPRS等。另外日本、加拿大、德国等发达国家都有适用于本国的车牌识别系统。
国内在90年代也开始了自己的车牌识别系统的研究。目前比较成熟的产品有中科院自动化研究所汉王公司的汉王眼,香港亚洲视觉科技有限公司的慧光车牌号码识别系统等等。另外西安交通大学的图像处理和识别实验室、上海交通大学的计算机科学和工程系、清华大学人工智能国家重点实验室、浙江大学自动化系等都做过类似的研究。
虽然这些车牌识别系统的识别率大多都比较高,如95%,甚至97%、98%,但是这些车牌识别系统的识别检测结果大多数是在简单受限制的场景下取得的,在实际的交通场合以及更加复杂的背景环境的情况下,这些车牌识别系统的识别率一般都达不到90%,甚至更低。
1.3 车牌的特征
(1)形状特征:标准的车牌外轮廓尺寸440*140,字符高90,宽45,字符间距12,间隔符宽10。整个字符的高宽比例近似为3:1,车牌的边缘是线段围成的有规则的矩形。主要用在车牌的定位分割。
(2)颜色特征:现有的字符颜色与车牌底色搭配有四种类型,蓝底白字,黄底黑字,白底黑字,黑底白字。这部分特征主要用在对彩色图像进行车牌的定位。
(3)字符的特征:标准的车牌上有7个字符,呈水平排列,待识别的字符模板可以分为以下三类,汉字,英文字母,阿拉伯数字,主要用于对字符匹配识别方面。
(4)其他国家的汽车牌照格式(如汽车牌照的尺寸大小,牌照上的字符排列等)通常只有一种,而我国则根据不同车辆、车型、用途,规定了多种牌照格式(例如分为军车、警车、普通车等)。
(5)我国汽车牌照的规范悬挂位置不唯一。
(6)由于环境、道路或人为因素造成汽车牌照污染严重,这种情况下,国外发达国家不允许上路,而在我国仍可上路行驶。
1.4 研究问题
现在车牌定位已经提出了很多方法,其中经常用到的是基于黑白图像定位、基于颜色特征算法和基于车牌边缘检测算法。基于黑白图像定位的方法包括:(1)基于车牌特征的定位方法,如根据车牌区纹理及灰度跳变等特征来定位,或基于扫描行经过车牌区域时会产生有规律的起伏特点定位。(2)基于遗传算法、神经网络等数学工具的车牌定位方法,该方法可以对传统方法进行较好的改进,具有一定抗噪性,但计算量较大。基于车牌颜色特征的定位方法,这种方法主要根据车牌颜色特征、车牌背景与字符等,判断不符合车牌底色的非车牌区域,将虽具有和车牌相似的几何及纹理特征,但不符合颜色特征的伪车牌剔除,最后便得到了车牌区域。基于车牌边缘检测的定位方法,这种方法是利用车牌区域丰富的边缘特征进行车牌定位,能够进行检测的方法有多种,如Roberts 边缘算子、Prewitt 算子、Sobel算子以及拉普拉斯边缘检测。
本文采用基于车牌颜色特征的定位方法。该方法较有较好的通用性,能够快速、准确地确定出车牌区域。
本实验研究的问题主要包括以下内容:
摄像时的光照条件,牌照的整洁程度,摄像机的状态(焦距,角度和镜头的光学畸变),以及车速的不稳定等因素都会不同程度的影响图像效果,出现图像模糊,歪斜或缺损,车牌字符边界模糊不清,细节不清,笔画断开,粗细不均等现象,从而影响车牌区域的分割与字符识别的工作,所以识别之前要进行预处理。包括RGB彩色图像的灰度化、灰度图的二值化、倾斜校正等。
从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。
(3)字符分割的研究。
裁掉车牌多余的边缘,找到字符之间的空隙,对字符进行剪切。
对于提取出的单个字符,采用提前训练好的神经网络进行字符识别。
1.5 系统原理
车牌识别系统是一项利用车辆的静态图像进行车牌号码自动识别的模式识别技术。其核心包括车牌定位算法、车牌字符分割算法和字符识别算法等。其系统原理如图1.5.1所示 。
图1.5.1 牌照识别系统原理图
1.6 研究意义
随着人们的物质生活水平有了显著的提高,汽车进入寻常百姓家,智能交通系统也逐渐受到人们的关注。车牌识别系统是智能交通系统非常重要的模块之一,车牌自动识别系统具有广泛的应用范围,可应用于道路交通监控、交通事故现场勘察、交通违章自动记录、高速公路超速管理系统、停车场管理系统、小区智能化管理等方面。因此车牌自动识别系统具有巨大的经济价值。LPR的部分应用如图1.6.1所示。
图1.6.1 LPR在收费口、道路监控和停车管理中的应用
二、实验目标
2.1 实验难点
在复杂环境下的车牌识别率较低的主要原因有:
(1)我国汽车牌照自身特征的复杂性:汉字、字母、数字混合。
我国的车牌不单单有英文字母和阿拉伯数字,还有汉字。由于汉字的复杂性,在识别方面难度远远大于字母和数字。
(2)颜色种类多。
国外的车牌颜色种类相对于国内较少一些,我国的车牌颜色种类较多。大致可以分为四种:黄底黑字,蓝底白字,白底黑字和黑字白字。
(3)人为因素复杂。
由于环境、道路或者人为因素造成车牌有严重污渍、车牌模糊不清或者车牌偏斜角度很大的车辆,在我国都可以上路行驶。在国外,这种情况是绝对不行的。
(4)车牌格式多。
我国的车牌格式很多,包括:民用车牌、公安警察车牌、武警车牌、军车车牌、外交车牌、特种车牌、消防车牌等。
(5)悬挂方式多样化。
我国汽车车牌的悬挂方式不唯一,由于不同汽车公司出产的汽车型号和外形各有不同,导致了车牌的悬挂位置不唯一。
(6)外部环境影响。
外部光照条件各不相同,白天和晚上的光照各不相同。光照对采集的图像质量产生很大的影响。不同的光照角度对车牌光照的不均匀影响也很大。不同的气候条件、背景光照环境、车牌反光程度都决定了车牌的亮度特征。在特征提取时,光照过亮或者过暗都会影响车牌识别的准确率。
(7)外界背景的复杂程度也影响车牌的定位准确率。
背景中和车牌区域当中有许多和车牌特征相似的长方形区域,这些容易给车牌定位造成误判导致车牌定位的准确率降低。
(8)拍摄角度问题。
实际工程当中的拍摄角度相对于车辆的行驶方向一般是正上方、左侧和右侧。如果拍摄的角度越小,车牌在平面图像中的变形越小,识别效果越好。
根据智能交通系统的结构可知,摄像机采集到的图像均为系列图像,而由于外部环境的影响,车牌识别系统采用的图像不一定是最优的。
2.2 实验目标
由于车牌识别实验存在的难点较多,本文通过对比各种识别算法,最终决定研究基于车牌颜色特征的定位方法。需要实现的实验目标包括:
(1)输入一张车牌图片,可以较好地对图片进行预处理,包括二值化、灰度化、倾斜校正等。
(2)实现从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。
(3)实现字符分割的目标,即裁掉车牌多余的边缘,找到字符之间的空隙,对字符进行剪切。
(4)实现字符识别的目标。对于提取出的单个字符,可以较准确地进行字符识别。
三、实验方法
3.1 车牌图像预处理
本文用到的示例图片:
图3.1.1 原始图片
摄像时的光照条件,牌照的整洁程度,摄像机的状态(焦距,角度和镜头的光学畸变),以及车速的不稳定等因素都会不同程度的影响图像效果,出现图像模糊,歪斜或缺损,车牌字符边界模糊不清,细节不清,笔画断开,粗细不均等现象,从而影响车牌区域的分割与字符识别的工作,所以识别之前要进行预处理。
预处理的包括:
(1)消除模糊。
用逆滤波处理消除匀速运动造成的图像运动模糊。
(2)图像去噪。
通常得到的汽车图像会有一些污点,椒盐噪声,应用中值滤波。
(3)图像增强。
自然光照度的昼夜变化会引起图像对比度的不足,所以必须图像增强,可以采用灰度拉伸,直方图均衡等。
通过以上处理,提高了图像的质量,强化了图像区域。
3.2 车牌定位
3.2.1 HSI彩色模型
HSI模型能反映人对色彩的感知和鉴别能力,适合基于色彩的图像的相似比较。HIS模型反应了人的视觉系统观察彩色的方式,使用非常接近于人对彩色感知的方式来定义彩色。对于图像处理来说,这种模型的优势在于将颜色信息和灰度信息区分开了。HSI模型主要有以下三个参数:
色调(Hue):是描述纯色的颜色属性(如红色,绿色,黄色)。
饱和度(Saturation):是描述纯色被白光稀释的程度的度量,也可以理解为颜色的浓淡程度(如深红色,淡绿色)。
亮度(Instensity):描述颜色的亮暗程度。
总体来说,RGB模型更适合图像颜色生成,而HSI模型适合图像描述。相比原始的RGB图像,HSI图像对颜色信息的利用率更高,更适合于目标分析和目标分割等场景。
记HSI颜色模型各参数为H、S、I,RGB彩色模型的各个分量为R(Red)、G(Green)、B(Blue)。则RGB模型转换HSI模型的公式为:
3.2.2 车牌位置定位
由3.2.1中所述可得到图像的HST模型,可利用HST模型中国的H、S分量区分图像中的蓝色非蓝色部分,由此可以得到原图像的蓝色和非蓝色的二值图像,主要内容如下:
利用H分量进行图像颜色分割。由于蓝色的H分量值为240º,并且图像可能受到噪声污染,所以蓝色的H分量值有一定的波动。经过实验可得到蓝色分量H的最小值blue_MinH为220º,最大值blue_MaxH为245º。假设二值图像为Bw,Bw和HSI图像具有相同的大小,Bw中的所有元素都为0。利用下式把满足蓝色区域条件的设为前景白色,即Bw=1;不满足条件的设为背景黑色,即Bw=0。
利用S分量对图像处理。因为受到天气、光照等条件的影响,非牌照区域也会和牌照区域的色调特征相同,因此可以利用S分量去掉饱和度小且满足蓝色色调范围的区域。设饱和度的阈值为threshS,利用去掉满足蓝色色调条件但非车牌的区域。
得到二值图像后Bw,可取得二值图像Bw中的各个联通区,之后可以根据车牌的几何特征(候选区域的面积、外接矩形的宽度和高度、外接矩形的长宽比等)对所有的联通区进行删选,最后求得车牌位置所在的联通区,主要内容如下:
(1)删除在边缘的连通区;
(2)删除面积太大或者太小的连通区;
(3)对连通区求最小外界矩形,并删除不满足要求的连通区:
a.外接矩形的倾斜角度和长宽比例不符合特征;
b.外接矩形内连通区面积太小。
3.2.3 车牌畸变矫正
理想情况下,拍摄的车牌图像应该是个矩形框,但在实际之中,车牌图像的获取一般通过固定架设在通道两旁及上方的CCD摄影机拍摄得到,受采集镜头与车牌之间方向、角度等因素的影响,采集到的图像往往与和实际的车牌图像之间有一定程度的倾斜畸变现象,主要有水平倾斜畸变、垂直倾斜畸变和混合倾斜畸变这三种。这种倾斜畸变现象如果不加以矫正的话将对后继字符切割和字符识别带来不利的影响,
畸变矫正的主要过程如下:
(1) 确定未矫正前车牌四个顶点的位置。
图3.2.1 未矫正前车牌四个顶点的位置
考虑到正常情况下车牌的倾斜角度不会超过45度,故采用45度倾斜线对图像中的像素点进行遍历,找到车牌四个顶点的位置。
如上图所示,按照红线所示(红线与外接矩形宽边夹角为45度)方向从外接矩形的左下角开始遍历每个像素点,找到第一个蓝色像素点的坐标即为实际车牌轮廓的左下角顶点,同理可找到实际车牌位置轮廓的另外三个顶点的坐标。
(2)利用坐标对应的方法进行畸变矫正。
由(1)中所述可以得到原图像中四个顶点的位置记为(按照左下,右下,左上,右上的顺序):(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4)。记原图像的长为l,宽为w,则如下图所示,畸变矫正后图像的四个顶点的位置为(x1,y1)、(x2+l,y2)、(x3,y3+w)、(x4+l,y4+w)。
图3.2.2 矫正后车牌四个顶点的位置
利用这四组坐标的对应关系可以得到旋转变换矩阵为:
则若矫正变换中某点的坐标为(i,j),则对应的原图像中的坐标为:(pix(1),pix(2))。
其中:
这样便可得到矫正变换后个点的像素值,即可得到畸变矫正后的图像。
代码实现如下:
%四个原顶点:
y=[P(1,1) P(2,1) P(3,1) P(4,1)]; %列坐标 横坐标
x=[P(1,2) P(2,2) P(3,2) P(4,2)]; %行坐标 纵坐标
%新矩形的顶点
Y=[P(1,1) P(1,1) P(1,1)+h P(1,1)+h]; %行坐标 纵坐标
X=[P(1,2) P(1,2)+w P(1,2) P(1,2)+w]; %列坐标 横坐标
B=[X(1) Y(1) X(2) Y(2) X(3) Y(3) X(4) Y(4)]';
%联立解方程组,方程的系数
A=[x(1) y(1) 1 0 0 0 -X(1)*x(1) -X(1)*y(1);
0 0 0 x(1) y(1) 1 -Y(1)*x(1) -Y(1)*y(1);
x(2) y(2) 1 0 0 0 -X(2)*x(2) -X(2)*y(2);
0 0 0 x(2) y(2) 1 -Y(2)*x(2) -Y(2)*y(2);
x(3) y(3) 1 0 0 0 -X(3)*x(3) -X(3)*y(3);
0 0 0 x(3) y(3) 1 -Y(3)*x(3) -Y(3)*y(3);
x(4) y(4) 1 0 0 0 -X(4)*x(4) -X(4)*y(4);
0 0 0 x(4) y(4) 1 -Y(4)*x(4) -Y(4)*y(4)];
fa=inv(A)*B; %用四点求得的方程的解,也是全局变换系数
图3.2.3 矫正结果
3.3 字符分割
在3.2中得到的精确位置车牌二值图像的基础上,可通过以下的步骤对车牌进行字符分割:
(1)字符边缘剪裁。
图3.3.1 未剪裁的图片
3.1中得到的图像如上所示,对白字黑底的车牌,求其连通域,用连通域的高度判断该连通区是否是字符,找到字符的上下边缘并剪裁,得到剪裁后的车牌如下图:
图3.3.2 剪裁后的车牌
(2)寻找字符之间的空隙。
对去掉上下边缘的车牌做垂直投影,做出垂直投影中像素和随坐标变化的图像如下图所示,找出值小于 5 的地方即为字符之间的空隙位置(取中点)。
图3.3.3 垂直投影
图3.3.4 找出空隙位置
(3)字符剪切。
a.根据垂直投影上像素和不为0的区域宽度的大小作为判断依据去除车牌最右边干扰。
图3.3.5 最右边干扰
b.从车牌最右边开始,根据垂直投影上的像素和是否为0作为字符的边界剪裁出6个字符;
c.根据垂直头像上像素和是否为0以及不为0的区域的宽度是否接近汉字的宽度剪切出汉字;
d.将所得到字符规则化(32*16),以保证得到的字符和匹配的字符大小相同。
图3.3.6 分割结果
3.4 字符识别
在分割字符之后,采用神经网络对分割后的字符进行识别。
3.4.1 人工神经网络
人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则根据网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
最近十多年来,人工神经网络的研究工作不断深入,已经取得了很大的进展,其在模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。
图3.4.1表现的是神经网络的结构,主要由三部分构成:输入层,隐含层和输出层。
图3.4.1 神经网路模型
构造神经网络的损失函数:
(3.4-1)
其中,为样本总数,为样本的类别总数, 是第k个输出的激活项。输出形式为一维列向量,由0和1组成,因此形式为:
即令所属类别的编号对应的位置为1,其余位置为0。用神经网络求解的过程中,最终目的是找到适合的权值,使得损失函数取得最小值。最常见的方法是使用梯度下降法。
3.4.2 BP神经网络
BP(Backpropagation)即反向传播,BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络,其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。
基本BP算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。正向传播时,输入信号通过隐含层作用于输出节点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。误差反传是将输出误差通过隐含层向输入层逐层反传,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据。通过调整输入节点与隐层节点的联接强度和隐层节点与输出节点的联接强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。
图3.4.2 BP神经网络更新过程
选取激活函数为sigmoid函数,其数学形式为:
(3.4-2)
对于每一个输出单元,在第三层输出层:
(3.4-3)
对于每一个隐含层单元,在第二层输出:
(3.4-4)
计算梯度:
(3.4-5)
获得损失函数的梯度:
(3.4-6)
规定迭代次数,目标是使得损失函数的梯度逼近于0。
3.4.3 算法实现
本实验中,设计两个神经网络,分别用于汉字识别和数字字母识别。
其中,识别汉字的神经网络的结构为:
输入层:512个;
隐含层:34个;
标签类别:31类(京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼渝川贵云藏陕甘青宁新);
训练集:X:1550*512,即一共有1550个512维的特征向量(大小为32*16的样本图片);
Y:1550*1,保存的是X中对应特征向量的类别。
识别数字字母的神经网络的结构为:
输入层:512个;
隐含层:34个;
标签类别:34类(数字0~9以及除去字母O,I后的24个英文字母);
训练集:X:1700*512,即一共有1700个512维的特征向量(大小为32*16的样本图片)。
四、实验结果
利用已经训练好的神经网络的参数Theta1,Theta2,对分割后的每一张小图像进行识别。对第一位汉字用一个神经网络模型进行识别,对后六位用另一个神经网络模型进行识别。
将两个神经网络的识别结果连接起来,得到最终的识别结果。
图4.1 识别结果
其余的一些识别结果:
经实验表明,该算法存在着一些问题,比如对于识别数字8和字母B,数字0和字母D这种相似度高的字符时,准确度欠佳。主要是由于数据集本身的像素值较低造成的,想要提高车牌识别问题的精确度,应该采取深度学习方面的知识进行进一步研究。