车牌识别系统设计报告(精选5篇)
专
业:
计算机软件与理论
年
级:
2018 级
学
号:
12018000758
姓
名:
何勇
2019 年 8 月 21 日
车牌识别系统(VLRP)实验报告
一、实验目的 1、了解车牌识别系统及其应用; 2、结合本门课程所学内容,设计一个车牌识别系统并实现。
二、实验 原理 1、图像预处理:
针对车牌的颜色特征,利用 hsv 色域进行二值化,并进行膨胀和去噪处理。摄像时的光照条件,牌照的整洁程度,摄像机的状态(焦距,角度和镜头的光学畸变),以及车速的不稳定等因素都会不同程度的影响图像效果,出现图像模糊,歪斜或缺损,车牌字符边界模糊不清,细节不清,笔画断开,粗细不均等现象,从而影响车牌区域的分割与字符识别的工作,所以识别之前要进行预处理。、车牌定位:
对预处理后的图片进行区域标记,根据各连通量的长宽比以及黑色像素所占比例定位车牌位置。从背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。、字符分割:
完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。在本次系统开发中,字符分割采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符尺寸限制和一些其他条件,利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。、字符识别:
用图像分类和识别中的所学内容对字符识别,比如基于模板匹配算法、基于支持向量机或基于神经网络的方法。我选择的是基于 BP 的神经网络算法。将分割出来的字符做 n 等分分割,统计个等分块内的黑像素比例,并与特征库比对,识别字符。
三、系统流程图
开始车辆图片预处理车牌定位BP神经网络特征提取字符分割字符识别画出字符结果结束
四、实验步骤 4.1 基于颜色的 BP 神经网络车牌定位
图 4-1 车牌定位流程图
图 4-2 车牌底色库部分样本 建立车牌底色库,在本论文中仅对蓝底白字车牌进行研究。对于这些车牌样本,将其从 RGB 色彩空间转换为得到其 CR CB 红色及蓝色分量。对车牌样本每个像素,均可得到其 CR CB。而我们关心的只是两种像素,即蓝色非蓝色像素。对于蓝色的像素,在转换为 CR CB 后其对应的 BP 神经网络映射关系为输出为1。非蓝色的像素,在转换为 CR CB 后相对应的 BP 映射为输出为 0。由于 BP神经网络要求输入值 0 到 1,所以 CR CB 还需作简单的处理,把它转为符合要求的输入。
到此,用于进行车牌定位的 BP 神经网络模型有了输入层及输出层。即,输入层含两个神经结点(某像素的 CR CB 分量),输出层仅一个神经结点(对应逻辑关系为这个像素在视觉上是否为蓝色),中间层设计为仅含 4 结点的一层。
设计好 BP 神经网络模型后,将车牌的底色投入训练,在网络收敛后可用。这时的神经网络可以认为是已具备区分蓝色及非蓝色的能力了(对于训练得到的权值保存到一个文件 CharBpNet.txt 中,以便在恢复网络时直接读取而节省大量的训练时间)。然后对任意的一张含车牌的图像每个像素,将它投入网络当中,如果网络认为是蓝色的(结点输出为范围在 0.8—1.0 间的),那么将此像素映射成 255;如果网络认为非蓝色的(结点输出范围在 0—0.8 间),那么将此像素映射成 0。这样我们可以得到除了一张二值图像外,还可以将车牌从复杂的自然图像分离开来(当然这是从十分理想的角度出发的,实际上当车辆颜色也是蓝色的时候是无法分离的)。
图 4-3 左图为自然车辆图像,右图为经 BP 神经网络后得到的二值图像
4.2 基于图像投影技术的车牌分割 图像投影技术一般分为水平投影和垂直投影。所谓投影就是对图像的某种特征的统计,然后以直方图形式反映其特征强度。一般是对二值图像而用的,水平方向的投影就是每行的非零像素值的个数,在这里就是 1 或者 255,垂直投影就是每列图像数据中非零像素值的个数。
由于车牌字符在车牌上,所以这部分可以认为是对字符的粗定位或车牌的精确定位。在设计上算法上可以这样做。对二值图像分别作水平和垂直方向的投影,得到其直方图分布,然后分别在波峰的地方作直线,这样水平方向和垂直方向共计四条直线,它们相交形成一矩形,此矩形即为车牌的大概位置。
图 4-4 将要进行投影的二值图像
4.2.1 水平投影技术
逐行统计白点直方图显示投影统计结果波峰即车牌上下边缘
图 4-5 车牌水平投影效果图 按行累加每个像素点的灰度值做投影,横坐标为灰度累加的和,纵坐标为图像的行数,即可确定车牌区域上下边缘。水平分析算法如下:
1)从下向上逐行扫描图像,记下每行中灰度值为 255 的像素点的个数; 2)找到第一个灰度值为 255 的像素点的个数大于某个阈值的行(并且紧挨着的若干行都满足个数大于某阈值),记录下行号,即为车辆牌照最下边缘; 3)然后继续扫描,找到第一个灰度值为 255 的像素点的个数小于阈值的行(并且紧挨着的若干行都满足个数大于某阈值),记录下行号,即为车辆牌照的最上边缘; 4)这时不再继续扫描,根据记录的两个行号,对原始图像进行裁剪; 5)得到裁剪后的图像,即为水平方向定位的牌照图像区域。
4.2.2 垂直投影技术
图 4-6 车牌垂直投影个效果图 按列累加每个像素点的灰度值做投影,横坐标为灰度累加的和,纵坐标为图像的行数,即可确定车牌区域左右边缘。垂直分析算法如下:
1)从左向右逐列扫描图像,记下每行中灰度值为 255 的像素点的个数; 2)找到第一个灰度值为 255 的像素点的个数大于某个阈值的列(并且紧挨着的若正列都满足个数数大于某阈值),记录下列号,即为车辆牌照最右边缘; 3)然后继续扫描,找到第一个灰度值为 255 的像素点的个数小于阈值的列(并且逐列统计白点直方图显示投影统计结果波峰即车牌左右边缘
紧挨着的若干列满足个数大于某阈值),记录下列号,即为车辆牌照的最左边缘; 4)这时不再继续扫描,根据记录的两个列号,对原始图像进行裁剪; 5)得到裁剪后的图像,即为垂直方向定位的牌照图像区域。
分别投影后效果如图 4-7 所示:
图 4-7 分别投影后效果图 值得一提的是并不是所有的自然车辆图像经BP神经网络动作后都那么完美的,这也是为什么在求车牌各个边缘的时候设定一个阈值(并且紧挨着的若干行都满足个数大于某阈值)的原因。如图 4-8 所示:
图 4-8 示例图 经过对车牌的二值图像的水平和垂直投影后,我们已经得到了车牌的精确位置,也即字符的所在区域。至此,我们可以把注意力从原始的二值图像集中到二值图像中的车牌局部区域来(即如何从车牌中分割出每个字符)。
除了可用比例的方法来进行字符分割外,本文采用一种适应性更好的基于投
影技术来进行分割。字符分割处理采用基于投影特征值的方法,对于数字及字符,由于它们都属于连体字,因此只需在字符或数字之间找到一条无边的空白区(窄的区域),即可实现数字及字符之间的分割处理。
图 4-9 即将进行字符分割的车牌图像 显然要在上图中分割出字符,只需在车牌内(白色矩形)对字符作像素为255 的垂直投影,具体方法如下:
按列累加每个像素点的灰度值做投影,横坐标为灰度累加的和,纵坐标为图像的行数,即可确定车牌区域左右边缘。垂直分析算法如下:
1)从左向右逐列扫描图像,记下每行中灰度值为 0 的像素点的个数; 2)找到第一个灰度值为 0 的像素点的个数大于某个阈值的列(并且紧挨着的若正列都满足个数数大于某阈值),记录下列号,即为车辆牌照最右边缘; 3)然后继续扫描,找到第一个灰度值为 0 的像素点的个数小于阈值的列(并且紧挨着的若干列满足个数大于某阈值),记录下列号,即为车辆牌照的最左边缘; 4)这时不再继续扫描,根据记录的两个列号,对原始图像进行裁剪; 5)得到裁剪后的图像,即为垂直方向定位的牌照图像区域; 6)保存每个字符的区域坐标。效果如图 4-10 所示:
图 4-10 字符分割效果示意图 逐列统计黑点直方图显示投影统计结果波峰即字符边缘
4.3 基于 BP 神经网络的车牌字符识别
4.3.1 车牌字符库的建立 字符库的建立是为字符的识别作准备的,字符库要求每个字符按一定标准保存,如保存格式一致,大小规格相同,每个字符的数目相同等等。在本次车牌识别系统研究中,只对数字及字母作研究,对汉字不作研究,所以共计 34 个不同各类的字符。数字 0 和字母 o,数字 1 和 i 为均认为是同一字符,每个字符用程序获取 10 个不尽相同的字符,字符库的建立是为了训练 BP 神经网络的样本。
4.3.2 图像的缩放技术 在计算机图像处理中,图像缩放是指对数字图像的大小进行调整的过程。图像缩放是一种非平凡的过程,需要在处理效率以及结果的平滑度和清晰度上做一个权衡。当一个图像的大小增加之后,组成图像的像素的可见度将会变得更高,从而使得图像表现得更“软”。相反,缩小一个图像将会增强它的平滑度与清晰度。
本次系统开发中,我采用最邻近插值法将每个字符都归一化到 6*12 的统一规格中去,所谓的最近邻插值,通俗理解就是将每一个原像素原封不动地复制映射到扩展后对应四个像素中,效果图 4-11 所示:
图 4-11 归一化前的各字符 归一化后各字符一次为:。
4.3.3 字符的保存 首先给字符编号,0-9 分别编号为 00-09,A-Z 分别编号为 10-33。在本文中,字符的保存格式为 raw 原始图像数据文件,命名依次为 000raw 到 339raw。即不超过 340 的三位数加格式名 raw,前两位数代表这个字符的编号,第三位数 n 代表这字符是第 n 张字符,如某字符某名为 089raw 即意味着这字符代表数字 8,它在库中是第 9 张(从第 0 张开始计数)。又如 330raw 代表着这字符为字母 Z,它是第 0 张。为了使字符库的字符和待识别的字符尽量保持一致性,字符的建立是通过程序的方法获得的。具体做法如下:
1)分割车牌中的每个字符; 2)将各个字符逐一归一化到 6*12 统一标准; 3)将归一化的字符按一定的标准命名保存即可。
最后得到了 340 张不同的共 34 种的格式为.raw 的文件,用程序显示这些字符库如图 4-12 所示:
图 4-12 字符库示意图 4.3.4 字符识别 建立字符库后,设计识别字符的神经网络。
首先设计输入层及输出层。字符库中每个标本,均是 6*12 的标准二值图像。对字符的特征,我采用像素法,即某个字符的像素是 255 时,神经结点输入为0.9,像素值是 0 时,神经结点输入为 0.1,这样输入层就有 6*12 共 72 个结点。输出层采用了34结点,如当导师信号为A编号10时,就在第10个结点设为0.9,其他均为 0.1。至此,用于进行车牌定位的 BP 神经网络模型有了输入层及输出层。即,输入层含 72 个神经结点(对应字符的每个像素),输出层 34 个神经结点(对应逻辑关系为属于编号第 N 个字符)。中间层设计为仅含 50 结点的一层。
设计好 BP 神经网络模型后,将车牌的字符投入训练,在网络收敛后可用(实际在论文完成的过程中,并没有出现收敛,而是达到训练次数后停止训练,这个次数 10000*72 是在实验过程中测试后决定的,同样不保证最优)。这时的神经网络可以认为是已具备区分 34 个不同字符的能力了。然后对任意的一个从车牌分割得到的字符进行归一化之理后,依次假设其分别是编号 0 到 33,并且求出每个编号对应的误差,最后在 34 个不同的误差中找出最小的那个编号,找到的编号即对应的字符了。如某分割的字符投入网络后得到的最小误差编号为 10,那么认为这个字符为 A。
把从车牌分割下来的字符全部投入动作后得到的字符串即车牌的号码了。效果如图 4-12 所示:
图 4-13 字符识别效果图
五、实验结果分析 本次基于颜色和 BP 神经网络的车牌识别系统已基本完成,实验也达到预期的效果。但是问题仍旧存在。实验结果显示如表 5-1 所示:
关键词:FPGA,车牌识别,Nios II
交通拥堵一直是一个社会性问题,尤其是在早晚高峰期,车辆往往寸步难行,一部分是因为城市规划不合理,但是主要还是驾驶员的不遵守交通法规引起的,这其中有相当一部分交通拥堵是由于车辆违停造成的。过去十几年间,许多城市提出了解决方案,使得司机违停而引起的交通拥堵在大型城市少了很多,这一切都得益于交巡警部门强力干预,对违停建立了严密的监控和惩罚机制以及驾驶员法制意识的提高。然而,在一些中小型城市,经济迅速发展,城市道路建设发展速度远远不及经济发展速度,再加上某些司机图便利,随意将车停在路边,往往会引起交通拥堵,甚至引起重大交通事故。因此,如何在这些城市中提高交警执法的效率,降低违法行为发生率,对缓解交通拥堵具有重要现实意义。
目前车牌识别有多种方法: 主要有利用梯度信息投影统计[1],车牌特征信息识别[2]等方法。但在实际应用中,这些方法并不能在道路的复杂情况下提取出显著的特征,容易导致特征维度较大,处理后的结果并不是最好的效果。
Nios Ⅱ系统是ALTERA公司的开发的可编程软核处理器,具有较强的灵活性,可以根据实际的需求来增减外设的数量和种类。设计人员操作Altera公司发布的SOPC Builder工具[3],设计在FPGA平台上提供软件、硬件开发环境,并在此基础上,将处理器、存储器、外设接口和用户逻辑电路等硬件系统和算法以及软件集成在一块可编程逻辑芯片中,这种设计方式简化了系统的调试过程[4]。本文将开发基于FPGA的车牌识别系统,获取车辆运行道路环境信息,研究车牌识别的实现方法,为开发高效率、高精度、经济实用的车牌识别系统提供理论依据和技术基础。
1 系统总体设计
1. 1 系统结构
本系统基于EP4CE30 的FPGA硬件系统和基于NIOS Ⅱ的系统来实现三大模块功能,本系统主要致力于制作一套车牌识别的FPGA的装置,本系统主要由三部分组成,分别是图像采集装置、图像处理装置、图像显示装置。充分利用可编程逻辑元器件FPGA高速处理数据的特性,整个系统在50Hz的工作频率下,以FPGA为核心,将用于视频处理的C语言代码嵌入到NIOS Ⅱ软核中,通过I/O并行传输的方式,将CMOS摄像头上采集的数据传输到SDRAM存储器中对数据进行缓存,再由NIOS Ⅱ软核中植入的图像处理模块将SDRAM中缓存的数据读取出来,系统工作过程如图1 所示。
1. 2 数据采集流程
FPGA开发板外置CMOS摄像头每隔10 分钟拍摄一张照片,并将拍摄到图像数据采用并行I/O口的方式传输到SDRAM高速存储器中,SDRAM存储器采用FIFO先进先出的方式对数据缓冲存储图片信息,大大加快了数据采集处理数据的速度,系统采集过程如图2 所示。
1. 3 视频图像处理及显示流程
FPGA控制模块调用存储在SDRAM中的图像,边调用边存储,实现系统运行效率最大化,实时性最强,采用FIFO先进先出的方式确保了处理效果的最优化,提高工作效率,提高精确性。处理完成以后,按处理好的图像的先后顺序显示在外置的LCD显示屏上。
2 视频处理系统算法设计
2. 1 算法引出及比较
车牌识别系统是数字图像处理技术在智能交通方面的重要应用,是实现交通管理智能化的重要环节[5]。通过对车牌的自动识别,与事先建立好的数据库进行比对,得到相关车辆的信息,实现快速精准识别,减少人员工作量,提高交巡警的执法效率。
车牌识别有多种方法: 主要有利用梯度信息投影统计算法[1],车牌特征信息识别[2]等方法。但在实际应用中,这些方法并不能在道路的复杂情况下提取出显著的特征,容易导致特征维度较大,处理后的结果并不是最好的效果。
上述几种方法从不同角度出发都可以在一定程度上实现车牌识别的效果。虽然,梯度信息投影统计算法考虑了车牌的二值化后车牌对比度之间的差异,可以较好地实现对场景的清晰化复原。但是,在实际中,由于拍摄环境的复杂性以及硬件设备的局限性,往往无法从图像中获得适宜的环境系数以及场景中合适的对比度值,这给车牌识别带来很大的不确定性; 考虑到运算量以及算法复杂度,运行时间及编程复杂度程序可移植性,本文选取小波变换作分割算法[6]。
2. 2 算法推导
在进行车牌识别过程中一般分为图像预处理、车牌定位、车牌区域剪切( 识别车牌中蓝色区域的位置及大小) 、车牌区域识别( 车牌字符分割、字符识别) ,显示识别结果。
2. 2. 1 图像预处理及车牌定位
图像预处理阶段分别要对采集到的图像进行图像灰度化、Robert边缘检测算子、图像腐蚀、闭操作以及平滑图像轮廓等一系列处理,使其凸显出车牌位置,对车牌进行定位。
图像灰度化: Gray = G* 0. 587 + R* 0. 299 + B* 0. 114 将图像变为灰色图像方便下面的操作。
Robert边缘检测算子: 呈现出汽车的轮廓,利用局部差分检测比较陡峭的边缘。
图像腐蚀:使目标点增大,背景缩小,填充目标前景物体中的空洞形成区域。闭操作以及平滑图像轮廓等一系列处理为车牌区域定位,为车牌处理做铺垫。处理后的图像如图3。
2. 2. 2 车牌区域剪切
将整张图片区域内分为X方向与Y方向,先在Y方向上对每个像素进行分析,统计出满足条件的像素所在的行对应的个数确定出蓝色RGB的灰度范围。随后对Y方向上车牌区域进行确定,并对车牌区域进行上、下追溯直到知道车牌的上下边界,对得到的车牌区域进行倾角上辅助调整,即可得到Y方向上完整车牌区域。同理可得X方向上完整的车牌区域。随后利用剪切函数将车牌在X方向上从左边界到右边界,Y方向上的上边界到下边界剪切出来,得到完整的车牌图像。如图4 处理后截取的车牌图:
2. 2. 3 车牌区域检测识别
字符分割在汽车牌照识别中起到决定作用,它将定位好的车牌进行字符分割,再将分割好的字符进行识别。一个车牌通常由1 个汉字6 个字母或数字组成,为了提高字符识别的精确度,我们必须将7 个字符独立的分割出。在车牌区域分割,一般可分为阈值分割[7]、投影法分割[8]; 采用投影法的分割方法,上下扫描,可以得到车牌图像高度,然后左右扫描,找到第一个字符的重点,后继续左右扫描,一直到车牌全部扫描完毕,采用投影法编程较简单且精度高[8]。本文将采用更为稳定的阈值分割方法,先将分割出来的车牌进行灰度转换,二值化,进行均值滤波,以及膨胀和腐蚀,方便取字符时易于检测和标准模板的对比,最后以T = g_max - ( g_max - g_min) /3 的规则去阈值,其中g_max = max( max( b) ) ; g_min =min( min( b) ) ; 当长度大于阈值时,则认为有两个字符组成,需要进行切割。
字符切割之前应建立一套字符模板,分别由代表各省市的汉字,0 ~ 9、A ~ Z字母组成,将这些收集起来建立的文件夹就是一套字符模板。通过调整切割好的字符大小使之和模板大小一致来实现车牌对比识别的功能。如图5 车牌处理后的图片,如图6 车牌切割后与模板对比的图片。
3 结束语
随着数字图像识别技术在智能交通方面应用的不断加深,车牌识别技术将是实现交通管理高效化、智能化的重要技术之一。基于FPGA的车牌识别系统,具有高速、简洁、可移植性高、处理效果显著等特点,同时,能提升交巡警的工作效率,构建交通安全的和谐社会。因此,基于FPGA的车牌识别系统对缓解交通压力有一定的实用价值和广阔的应用前景。
参考文献
[1]刘长青,樊希平,汪胜辉,王先春.一种改进的车牌定位方法在车牌识别系统中的应用[J].湖南文理学院学报(自然科学版),2007,(4).
[2]汪峥嵘.基于车牌识别及车辆特征点匹配的套牌车识别[D].苏州:苏州大学,2013.
[3]杨进,金星,张帅.基于Altera软核处理器的双网卡路由选择[J].电子工程师,2005,(6).
[4]何振琦,李光明,张慧琳,李颀.高速图像采集系统的研究及FPGA实现[J].计算机应用,2010,(11).
[5]赵大伟,陈刚.基于TMS320C6446的车牌识别系统的研究与设计[J].微型电脑应用,2012,(7).
[6]薛茹,常岐海,吴宗胜.基于Gabor小波与HOG特征的目标检测方法[J].电视技术,2014,(7).
[7]凌家良,黄进江,林洪辉,黄荫权.车牌自动识别算法及基于Lab VIEW的设计实现[J].惠州学院学报,2014,(3).
摘 要:本文以车牌识别系统定位后的车牌字符识别算法为研究对象,分析基于模板匹配的字符识别算法和基于神经网络的字符识别算法,將车牌字符进行分割处理,诠释字符识别算法在车牌识别系统中的应用。
关键词:车牌识别;字符识别算法;字符分割;字符识别
中图分类号:TP391.4
车牌识别系统是根据车牌特征进行信息采集的一种自动化应用系统,在车牌识别系统识别车牌过程中需要经历图像采集、预处理、二值化、车牌定位、字符定位、字符分割和字符识别等过程,本文对车牌识别系统定位后的字符识别算法在车牌识别系统中的应用进行研究,论述车牌识别系统字符识别模块车牌字符预处理和字符特征提取。
1 车牌识别系统概述
1.1 车牌特征。目前我国所采用的车辆车牌编排规则主要是以省份简称汉字为开头,后面接省市代表字母如:A代表省会城市,B代表第二大城市,C代表第三大城市等等,再接分割符,最后5个以数字或者字母组成字符序列组成车牌(特种车辆除外)。
车牌标准尺寸长440mm,宽140mm,单个字符宽度45mm,单个字符高90mm,第二个与第三个字符间距34mm,其他相邻字符间距12mm。车牌颜色大型车辆为黄底黑字,小型车辆为蓝底白字,使馆车辆黑底白字,军警车辆白底黑字。车牌其他特征如图1所示:
1.2 车牌识别系统工作流程。车牌识别系统工作流程是首先,采用车辆图像采集设备对车牌信息进行图像采集,形成车牌图片;其次,将采集到的图像传输到车牌识别系统进行进行分析辨认,将识别结果存入车辆管理数据库中。
1.3 车牌识别系统模块功能。车牌识别系统主要由三大系统模块组成,包括:车辆车牌图像采集模块、车牌识别模块和数据管理模块。其中车牌识别模块是对车辆信息进行确认的主要核心,其将车牌图像采集模块所采集到的车牌图片进行预处理,再将车牌字符进行分割,对车牌字符特征进行提取、训练、识别,输出识别结果。
2 车牌字符识别算法
2.1 基于模板匹配和神经网络的字符识别。基于模板匹配的字符识别算法是首先建立车牌字符标准模板库,将所采集到的字符图像于模板库进行图像比较,计算并识别相似度,进而确认字符信息。基于模板匹配的字符识别算法具有原理简单,运算速度快的特点,但是由于其对复杂字符识和相似字符识别能力较弱。
基于神经网络的字符识别算法采用BP神经网络、Hopfield神经网络、Kohonen神经网络等通过层级处理传递到输出层的各个神经元,当输出结果与期望结果不同时可再进行反向传播,将输入层、隐含层、输出层的权值进行不断调整直到将误差值降为最低,达到预想结果。基于神经网络的字符识别算法具较高的识别率和算法的鲁棒性,但是其复杂程度较高,分析计算耗时较多,对汉字识别难度较大。
由于基于模板匹配和基于神经网络的字符识别具有互补性,可采用将车牌字符进行分割将普通字符采用模板匹配算法进行快速处理,将相似度高的字符采用神经网络算法进行确认,由此,解决二者各自的不足问题。
2.2 车牌字符分割。车牌字符分割可采用多种方法,其中包括:根据车牌字符形态的几何特征进行分割、根据车牌投影像素点个数进行分割、根据字符颜色于背景颜色区域对比特征进行分割、根据车牌边缘特征确认字符边缘位置进行分割和根据字符像素连通性进行分割。
2.3 车牌字符识别。车牌字符识别可采用模板匹配的方法对待识别车牌与模板库集合进行相似度匹配,还可以采用字符特征进行特征提取,将特征库的信息与其匹配进行确认,或者采用神经网络模仿生物神经元结构利用神经网络权值调整构造出相应的分类曲面完成字符的确认。
3 字符识别算法在车牌识别系统中的应用
3.1 车牌预处理。为了更好的分割车牌图像对定位后的车牌图像进行灰度化、二值化、校正、滤波去噪、去边框等。
灰度化,彩色图像具有三个R、G、B三元色,存空间大传输速度慢,常用的图像灰度化处理方法主要包括平均值法、最大值法和加权平均法。平均值法是对图像中的像素点的基色求和再除3;最大值法是对图像像素点的三个基色取色值最大值,再用其替换原始值;加权平均法是对像素点的三个基色进行加权平均,权值可使三个基色达成统一。
二值化,二值化是将灰度图像进行阈值化分割,将图像处理为只包含黑白两种颜色的图像,如果像素点的灰度值大于阈值则用白色(255)替代,如果像素点灰度值小于阈值则用黑色(0)替代。阈值的确定可分为局部阈值和全部阈值,局部阈值是根据监测图像当前像素点局部区域相邻像素点的灰度变化确定阈值,全部阈值是根据整幅灰度图像像素点进行逐点阈值计算。
校正,所采集到的图像都不能保证字符在统一的平行线上,因此对图像的分割带来一定的困难,由此,可采用Hough变换将车牌字符的倾斜度进行校正,使其保持各字符在同一水平直线上。
滤波去噪,车牌识别系统图像采集模块所采集到的图像会受到、光照、雨水、雾霾等的影响使图像处理难度增大,首先,令一个3*3模板在图像上沿行或者列进行移动,再对模板所覆盖的区域像素灰度值进行排序,通过灰度值取中的方法替代模板内的图像灰度值,由此可将图像灰度值进行平均去除相对较亮或者较按的灰度,使图像黑白更加分明。
去边框,车牌识别系统所拍摄的车牌信息包含了不只车牌部分的图像,因此需要对车牌之外的图像进行去边框处理,首先确定车牌的连通区域,将不符合车牌的图像进行清除处理。
3.2 特征提取。车牌字符识别系统性能的准确性与提取车牌特征的高效性和鲁棒性有关,因此,在车牌特征提取中要根据车牌的特征信息将其划分为结构特征和统计特征进行提取。
结构特征是反映字符结构于细节的特征,可对图像的全局结构特征和局部结构细节特征进行分析,全局结构特征是采用Fourier、K-L、Gabor、Slle等变化分析法对图像结构进行分析,局部结构细节特征是对字符的笔画、凹凸度、拐点、交叉点、环等进行分析,进而确定图像字符的结构。
统计特征是对图像的各类特征进行统计,譬如对图像的投影特征、网格特征、轮廓特征、复杂度等进行特征数累加,进而能够确定字符值。
4 结束语
在车牌识别系统中,字符识别算法主要是车牌字符的分割于识别,在本文中,字符识别算法首先要对车牌图像进行灰度化、二值化、校正、滤波去噪和去边框,其次,对车牌特征进行信息提取,为提高字符的识别速度于准确度利用基于模板匹配算法和神经网络的字符识别算法相结合具有一定的可行性。
参考文献:
[1]王磊等.改进的模板匹配方法在车牌识别中的应用[J].计算机工程与应用.2013(05).
[2]李康顺等.基于演化算法的图像二值化算法研究[J].计算机应用研究.2012(01).
作者简介:刘静(1979.10-),女,天津河东人,讲师,硕士研究生,研究方向:通信、检测技术。
灰度化
车牌图像灰度化 直方图均衡化 灰度拉伸 二值化
全局阈值法和局部阈值法 适用于车牌的二值化方法 边缘检测 图像梯度
几种常见的边缘检测算子 适用于车牌的边缘检测算子
一、车牌识别系统结构
车牌识别系统通常由数据采集(车牌图像摄取),车牌提取,车牌识别几个主要部分
组成,其系统结构如图 1.1 所示:
车牌自动识别系统中:
1.图像摄取主要由硬件部分完成,它提取汽车的前景图像,将摄像头的视频信号转换为数字图像信号送给计算机处理。
2.车牌图像预处理。由于拍摄的自然环境及光照条件的影响,车牌图像中存在许多干扰,对车牌的定位带来不便,为了更好的提取车牌,需要对车牌图像进行预处理以保证车牌定位的质量。
3.VLP 检测。即图 1.1 中虚线环绕的部分,这一部分是系统的核心,它的实现影响着整个系统的性能,主要利用模式识别、数字图像处理、信息论等知识对车牌图像中的车牌进行定位及提取操作。
4.字符分割及识别。当车牌被成功提取后,需要分割其中的字符,并利用先验知识对其进行识别,以得到最终结果。
二、图像处理具体过程
图像处理是人工智能在计算机图形学中的一个重要分支,是车牌识别系统的理论依据。在自然条件下摄取的车牌,除了包含大量噪声外,还具有多样性。为了使系统能够更好的分离车牌,必须对原始图像进行预处理。本章主要讨论车牌图像预处理的一些常用方法,包括图像的灰度二值化、噪声处理、边缘提取等。当摄像机从外界摄入视频图像时,首先把它转换为静态图片,再送入计算机进行处理。由于拍摄环境的多变性,车牌图像中存在噪声和干扰,这些给车牌提取带来困难。系统首先将输入的彩色图像灰度化,并且进行亮度平均,使图像具有较好的对比度;对图像进行边缘提取操作前,往往先要进行噪声抑制操作,以提高边缘提取的质量;二值化则多用于已提取车牌的处理上。车牌图像预处理的难点在于:
1.车牌图像质量不佳,灰度化后会弱化图像中的车牌信息,因而好的灰度化处理非常必要;
2.由于光照的原因,车牌很可能出现过分灰暗或明亮的情况,这种条件下的二值化处理应该分情况讨论,对应特殊的分割阈值;
3.图像中的复杂背景具有丰富的边缘信息,不但会增加系统识别的难度,也会造成系统的误判,怎样去除这些不必要的背景十分关键。实际操作中,因为车牌处于图像的中部偏下位置,所以通常取图像的下半部分进行处理或优先考虑图像中靠下方的位置。
4.车牌中的字符很容易在预处理中发生变形或丢失信息的情况,要注意保持车牌的字符信息。
2.1 灰度化
在计算机中,一幅图像由若干个像素组成,每个像素都带有图像的相关信息(如背景、目标、噪声等),而图像处理技术则通过对这些像素进行处理而得到我们所需要的关键信息。
2.1.1 车牌图像灰度化
一般情况下,输入计算机的视频截取图像为 RGB 格式,即彩色图片。由于这种图像包含大量的颜色信息,它的每个像素都具有三个不同的颜色分量 R(Red)、G(Green)、B(Blue),这样的图片占据的存储空间很大,而且在对其进行处理时也会耗用较多的系统资源,导致系统的执行效率不高。与之相比,灰度图像只含有亮度信息,从而大大减少了系统的工作时间,满足汽车牌照识别系统的实时性要求。因此,在对图像进行其它预处理之前,一般先将彩色图像转换成灰度图像。
最基本的灰度化方法就是直接使用 R、G、B 三分量中的最大值或平均值来代替各个分量。灰度化以后,相同颜色的像素具有相同的亮度,这就形成了以亮度为层次的灰度图片。灰度值大的像素比较亮,反之较暗。通常把灰度值分为 256 等份,0 度表示最暗的级别,即黑色;255 表示最亮的级别,即白色。图像的灰度化转换还有其它不同的算法,比较常见的是给像素的 R、G、B 分量各自增加一个特定的加权系数,相乘后求和,其计算结果作为灰度值,转换公式如下:
I = 0.229 R+0.587 G+0.114 B 式中 I 表示像素的灰度值。
加权系数的取值建立在人眼视觉模型的基础上,对于人眼比较敏感的绿色分量,赋予较大的系数,而对于人眼比较迟钝的蓝色分量则取较小的系数。这样得到的灰度图像在视觉上比较接近人的主观感觉。
2.1.2 直方图均衡化
由于灰度图像建立在彩色图像的基础上,所以在不同的光照条件下,对同一辆汽车所拍摄的图片有着很大的差异。就车牌图像而言,灰度的动态取值范围越广(即图像的对比度越大)越有利于图像分析。
图 2.1-2.4 分别给出了白天和傍晚时相同汽车的彩色车牌图像及灰度图像。从图中我们可以看出,由于白天的光线较好,使得汽车的灰度图像存在较大的对比度,肉眼上更容易识别。而在实际拍摄条件下,影响图片亮度的因素除了天气外,汽车自身的反光现象也是一个原因。
当车牌图像在反光或傍晚拍摄时,图像中的白色或黑色区域较大,使得图像的整体像素灰度值偏向于两个极值。在这种情况下,车牌区域的对比度就被弱化了。因此,我们要使图像的灰度值分布平均化,这就是直方图均衡化的作用。图像的直方图是一个概率函数图像,它表示了图像中各种像素值的出现概率,而直方图均衡化则是通过某种变换,得到一幅具有均匀灰度密度分布的新图像。其结果是扩展了图像的灰度取值范围,从而达到增强图像对比的效果。设原始灰度图像的像素数目为 N,那么,直方图均衡化的具体计算步骤如下:
直方图均衡化的结果如图 2.5-2.8 所示,可以看出经过均衡化处理后图像的对比度得到了增强,直方图中的灰度函数分布基本平均。
2.1.3 灰度拉伸
由于直方图均衡化是对图像中已经存在的像素值进行平均,那么图像中出现较多的像素级就在均衡过程中起到了主要贡献作用。相对灰度级出现较少,图像灰度处于极端的情况而言,我们需要图像的像素值在各个灰度级都有均匀分布(包括原图中不曾出现的灰度级),灰度拉伸可以达到这个效果,从而起到增强图像对比的作用。
如果造成图像的对比度不足,主要原因在于拍摄目标的远近不同,使得图像中央区域和边缘区域的灰度失衡,或是由于摄像头在扫描时各点的灵敏度有较大差异而导致图像失真,或是由于曝光不足(或过度)致使图像的灰度值大小被限制在一个很窄的范围内。这时的图像模糊不清,似乎没有灰度层次。
假设原图像 f(x,y)中,大部分像素的灰度级在一个较窄的范围[a, b] 内,又或者我们只对灰度级在某个范围内的像素感兴趣,经过线性灰度变换后,可以将这一灰度范围[a, b] 扩展到新图像 g(x,y)中一个比较大的灰度范围[c, d]。并且有。f(x,y)和g(x,y)的变换公式如下:
从灰度直方图分析,由于新图像的灰度范围变大,所以对数字图像来说,尽管变换前后像素的个数不变,但不同像素的灰度差变大,增强了图像的对比度。同时,这种两端截取式的变换使小于灰度级a和大于等于灰度级b 的像素分别直接变为c和d,将会造成部分信息的丢失。
因此,可以采用分段线性灰度变换以减少信息的丢失,将图像灰度分成两个以上的区间分别进行线性变换。这种方法的优点在于可以根据需要来拉伸感兴趣的灰度范围,相对抑制不感兴趣的范围。分成三段进行灰度变换的公式如下:
公式对灰度范围[a,b]进行了灰度扩展,而对灰度范围[0,a]和[b,m]进行了压缩。通过调整折线拐点的位置和分段直线的斜率,可以对任意灰度范围进行扩展或压缩。利用某些非线性函数,例如对数函数、指数函数等作为变换函数,可实现图像的非线性变换。对数变化一般为:
其中a、b 和c为可调参数,用于调整曲线的位置和形状,它使图像的低灰度区得以扩展,而高灰度区得以压缩。与之对应的指数变换一般为:
其中a、b 和c同样为可调参数,用于调整曲线属性。它的效果与对数变换的效果相反:扩展了图像的高灰度区,压缩的图像的低灰度区。利用对数函数进行灰度变换在实际应用中有重要意义,它能扩展低灰度区,符合人们在视觉上的主观感觉。
如图 2.9-2.12 所示,可以看出经过灰度拉伸处理后的图像的灰度分布区域由(0,200)变换到另一个区域(128,255),图像的亮度明显增大。
2.2 二值化
一幅灰度图像的亮度信息由 256 个灰度级组成,它能够呈现较为丰富的明暗度。当我们识别车牌时,需要把目标从背景中彻底分量出来。为了尽可能少地减少背景像素干扰,常常直接把图像分为目标和背景两部分。这样我们只能用两个灰度级:0 和 1。通常目标像素值为 1,背景像素值为 0。要得到这种黑白分明的图像,我们需要对图像进行二值化。
设图像二值化前的像素值为 f(x,y),其中(x ,y)表示图像的空间点坐标,变化后的像素值 g(x,y)为:
其中c为我们所说的阈值。
目前,在车牌识别系统中常用的灰度二值化算法主要包括全局阈值法和局部阈值法等。并且出现了一些针对车牌图像的特殊二值化算法。由于上文介绍了图像的灰度化变换,所以下面将逐一介绍基于灰度的三种阈值法算法。
2.2.1 全局阈值法和局部阈值法
顾名思义,全局阈值法就是从图像的整体角度出发,计算图像的单一阈值的方法,主要有迭代法和 Otsu 法等,这里我们介绍 Otsu 法。
Otsu 法是常用的一种阈值选取方法,这是一种类间方差阈值法,它是在最小二乘函数的基础上推导出来的。基本思想是:取一个阈值k,将图像中的像素按灰度值分为大于等于k 和小于k 两类,也就是我们所说的目标和背景两类。求出两类像素的方差
和总体方差
。然后给定三个分离指标:
任取其中一个,这里我们取第一个分离指标Q1,找出使其值最小的 k 即为最佳阈值。其意义是使不同种类的方差最大,相同种类的方差最小。用 P(i)示图像各灰度级的频数,则阈值的计算步骤为:
各参数的计算公式分别如下:
4.令 k = k+1,重复计算上一步,直到 k 取到最大灰度级 maxk ;
5.找出令分离指标
Q 1最小的 k 值,该值为最佳阈值。
局部阈值法则是针对灰度图像中的每一个像素点进行计算的。它将图像分块,为每一块选取一个阈值进行分割,如果某块内同时有目标和背景,则直方图呈明显双峰状态,可定出局部阈值;如果一块内只有目标或背景,那么直方图不呈双峰,但可根据邻近有双峰区域的阈值通过内插而得到这一区域的阈值。局部阈值法的难点之一是判断直方图是否存在双峰。一种较为直观的方法是:如果某一块只有目标或背景,那么它的差分值就比较小。算法设计如下:
由于全局阈值法是从图像的整体角度出发计算单一阈值,因而计算时间较短,适用于目标与背景存在较大对比度的图像;而局部阈值法则是逐个计算图像中的每个像素灰度级,保存了图像的细节信息。相比全局阈值法来说,它的计算时间较长,计算量较大,但适用于背景信息丰富的图像。
2.2.2 适用于车牌的二值化方法
由于车牌图像的特殊性,它包含的信息一般要少于普通的图像,综合考虑全局阈值法和局部阈值法的优缺点,可以得到一种比较适合车牌图像的二值化方法。实际处理中,由于光照不匀、灰度级动态范围太窄和车辆牌照污损等原因影响,致使车牌的质量退化,常存在严重的伪影和模糊的字符边缘,因而极大影响了车牌图像的二值化效果。而将牌照图像的空间分布特征[21]与最大类间方差的统计特征相结合后,不仅能消除不均匀光照引起的伪影,还能减少笔画出现断裂现象的几率,二值化效果较好。
假定牌照图像中字符像素所占比例为 R1,背景像素所占比例为R2,则 0 2.3 边缘检测 数字图像的边缘检测是图像分割、目标识别、区域形状提取等图像分析领域十分重要的基础。边缘是图像的重要特征,图像理解和分析的第一步就是边缘检测。在车牌识系统中,车牌区域存在大量的边缘信息,这是车牌区域不同于其它区域的一个重要特征。因此,边缘检测对于车牌识别非常重要。所谓边缘,就是指其周围像素值的变化呈现阶梯状或屋顶状的像素的集合,它存在于目标与背景、目标与目标、区域与区域、基元与基元之间。边缘反应了空间频率的变化,是图像分割的重要特征,也是纹理信息形状特征的基础。所以,我们要把车牌从图像中分割出来,就要找到车牌区域与其它区域之间的边缘,从而进行图像分割。由于边缘处于两个不同区域之间,所以边缘具有方向和幅度两个特征。沿边缘走向,像素值的变化平缓;而垂直于边缘走向,像素值的变化明显。它的存在相当于函数中的转折点或拐点,因而边缘上像素值的一阶导数较大,二阶导数为零。2.3.1 图像梯度 在介绍边缘提取方法之前,先引入图像梯度的概念。对于图像 f(x,y),它在点(x ,y)处的梯度定义为一个矢量: 车辆牌照识别技术是计算机视觉和图片处理领域研究的热点, 车牌识别主要包括:动态检测视频数据中含有车牌的图片, 对复杂背景中的车牌进行定位以及车牌上的字符分割和识别, 人工神经网络能够自我学习[1,2,3,4,5]。安卓系统以Linux为内核的开放源代码嵌入式操作系统, 文中基于神经网络和安卓平台, 完成对汽车车牌的识别。 1 基于BP神经网络和安卓的车牌识别方法 文中车牌识别方法采用BP神经网络的模式识别技术作为主要识别的方法, 选取尺度不变特征转换 (Scaleinvariant feature transform) 的算法用来侦测与描述牌照中局部性特征字符特征分别作为神经网络的输入, 进行神经网络训练, 实现对车辆牌照字符识别, 并且提出修正识别结果的改进方法[2,3,4,5]。 1.1 BP神经网络简介 人工神经网络模仿动物神经系统处理信息, 通过学习调整节点连接关系。网络模型采用了BP反向传播 (Back Propagation) 神经网络或者它的变型形式, 包含输入层、输出层和隐含层[3,4,5,6]。 1.2 车牌识别方法 常见前车牌尺寸统一为长度为44 cm, 高度为14 cm, 车牌号有7位字符, 由中文汉字、阿拉伯数字和英文字母组成, 汽车牌照识别步骤:1) 图片灰度和二值化;2) 切割字符;3) 获得字符特征, 取得特征矩阵;4) 分类[5]。 1.2.1 字符识别算法 在车牌识别中, 需要识别的部分包括汉字字符识别和英文数字等字符识别。本文对非汉字字符分为字母和数字两类, 英文字符取值范围为 (A~Z) 26个值。汉字字符识别方法则采用文献[1]识别方法, 不再赘述。文中采用两个BP网络来分别进行数字与字母的识别, 神经网络分为输入层、输出层、隐含层3层。神经网络的输入层节点数量与第一个神经网络输出的字符特征向量对应, 采用隐层的数量为一个隐含层, 输出层的节点数与待分数据类别的编码对应。首先取bmp格式图片, 然后灰度化图片, 将像素转换成灰度值, 再进行二值化[6]。本文使用算法是尺度不变特征转换SIFT (Scale -invariant feature transform) , 使用高斯函数平滑图片, 再比较图片差别, SIFT能处理尺度、平移、亮度和旋转, 获得并匹配特征字符[5,6,7,8,9], Sift算法流程图如图1所示。 2 软件平台搭建 Android程序以Java为编程语言, 依靠Java跨平台性, 开发的程序可以几乎不做任何修改就可以移植到其它Java程序中。程序开发之前, 首先要搭建环境。Android搭建所需要的部分安装包。首先机器要配置Java开发环境JDK, 设置系统JDK:打开计算机, 属性, 高级, 环境变量, 系统变量, 添加环境变量:设置JAVA_HOME值为安装JDK的目录;设置Android JDK的环境变量如图2所示。 设置CLASSPATH值为: .;% JAVA_HOME% libtools.jar;% JAVA_HOME%libdt.jar;%JAVA_HOME%bin;设置Path的值: 在Path追加%JAVA_HOME%bin。安装完成之后, 再检查JDK是否安装成功。打开控制台窗口, 输入Java-version查看JDK的版本信息。验证JDK安装是否成功。出现图3画面即表明安装成功。 美国谷歌公司在2013年的Google I/O开发者大会上发布了Android Studio工具, Android Studio的Java虚拟机优化得很成功, 启动速度快, 具有更好的原生支持Android程序, 运行效率优于Eclipse。通过Android Studio工具容易将牌照识别方法算法的平台移植到安卓移动设备上。在汽车领域, 利用安卓技术实现传递各种信息, 可以推动汽车的智能化和低成本化发展。 3 车牌识别实验结果 车牌识别实验数据采集地点为江苏省盐城市希望大道附近的十字交通路口, 测试车辆为随机抽取, 采集20组车牌, 200个车牌一组, 不同气候条件不同角度采集, 保证数据多样性。车牌识别平台为Win 8 64位操作系统, 处理器为I7四核64位处理器, 8GB内存, 通过运行车牌识别程序, 得到识别结果。试验结果:牌照识别率平均值为82.1%, 平均响应时间为0.315 s, 达到了预期效果。 4 结语 对汽车车牌识别方法和安卓技术进行了相关研究, 将车辆牌照识别方法通过导入移植到安卓系统, 在字符分割中采用SIFT算法, 并对SIFT算法结果进行了改进, 车牌识别率较高, 满足车牌识别需求。在汽车智能化发展上奠定了一些研究基础。 摘要:提出了一种基于B P神经网络和安卓的车牌识别方法。以BP神经网络的模式识别技术作为主要识别方法, 选取尺度不变特征转换 (SIFT) 算法探测牌照中局部特征字符特征作为神经网络的输入, 进行神经网络训练, 实现了对字符的识别, 然后将车牌识别方法移植到安卓平台, 实验结果表明该识别方法可行, 满足了车牌识别基本需求。 关键词:BP神经网络,安卓平台,SIFT算法 参考文献 [1]孙玉芹.车牌自动识别方法研究[D].长春:吉林大学, 2011. [2]王海龙, 戚飞虎.基于聚类法的协同神经网络学习算法[J].上海交通大学学报, 1998, 32 (10) :39-41. [3]章毓晋.图片处理和分析[M].北京:清华大学出版社, 2012. [4]CANER H, GECIMH S, ALKAR A Z.Efficient embedded neural-network-based license plate recognition system[J].IEEE Transaction on Vehicular Technology, 2008, 57 (5) :2675-2683. [5]中华人民共和国机动车牌号:GA36-92[S]. [6]李俊.嵌入式Linux设备驱动开发详解[M].北京:人民邮电出版社, 2008. [7]范玮琦, 穆长江, 李德胜.一种基于汉字结构特征的车牌照字符分割方法[J].仪器仪表学报, 2003, 24 (4) :472-474. [8]陈寅鹏, 丁晓青.复杂车辆图像中的车牌定位与字符分割方法[J].红外与激光程, 2004, 33 (1) :29-33.车牌识别系统设计报告 篇5