车牌识别是智能交通系统的一个重要研究课题,存在巨大的市场需求。车牌识别系统分车辆图像的获取、车牌的定位与字符分割、车牌字符识别3大部分。对于车牌字符识别,目前最常用的方法是基于模板匹配的方法和基于神经网络的方法两大类。前者多利用了字符的轮廓、网格、投影等统计特征,相似字符区分能力差,且因特征数据维数过大会导致识别速度慢;而后者则存在网络输入数据的选择和网络结构设计等问题。
目前,普遍采用3类方法来提高字符的识别性能:第1类是寻找更好的分类识别算法;第2类是将几种分类器结合起来,相互补充,根据不同方面的特征分类,如文献;第3类是抽取具有更强描述能力的特征,结合其它辅助特征来进行分类。本文所构建的车牌字符系统基于FPGA平台,具有并行运算能力强、接口逻辑丰富等特性,为构建实时、便携的车牌字符识别系统提供了一种有效、可行的解决方案。
1 系统概述
系统的整体设计流程如下图1-1 所示。
本系统主要采用Altera公司的DE2开发板为实验平台,根据该系统实现的功能,将系统划分为硬、软件两部分,硬件部分包括车牌采集[5][6]和A/D转换、车牌预处理等;软件部分主要使用Cyclone II FPGA内嵌的NIOS II软核,采用SOPC Builder配置生成片上系统,并使用模板匹配算法对车牌进行识别,最后识别结果在LED上显示。
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分
2 车牌预处理
2.1 粗定位和灰度化
车牌定位是整个系统的关键问题之一,它直接影响了后续的分割以及识别的准确率。考虑到整个图像车牌部分的字符颜色和车牌背景颜色差别很大,其灰度级别分布有一定规律和范围,兼之车牌的宽度有一定的比例,因此可以将车牌从背景图片中分离出来。
我国现有的车辆主要有蓝底白字牌照、黄底黑字牌照等四种类型。鉴于车牌前景、背景色的颜色特征,可以通过对颜色通道的分析来大致的确定车牌所在的位置以完成车牌位置的粗定位。在确定参数的时候,除了要考虑主色的下限参数以外还要考虑另外二个通道的上限参数。经过反复的试验对比后得出经验参数值为:以蓝底白字的车牌为例,在RGB 三个通道中:R< 10'b0110110000; G<10'b0111010000; B>10'0110110000,由以上参数为扫描阈值,自动剔除车牌位置之外的其他图像部分,完成粗定位。
2.2 中值滤波处理
中值滤波法是一种非线性平滑技术,它将每一象素点的灰度值设置为该点某邻域窗口内的所有象素点灰度值的中值。
粗定位后的车牌首先进行灰度化处理以减小数据量利于实时处理。其次为了抑制车牌图像在采集时产生的椒盐噪声等脉冲噪声影响,改善图像质量,本文对灰度化后的车牌图像进行中值滤波处理。
在FPGA中实现中值滤波,出于实际处理速度、处理效果和器件资源考虑,本文选用3×3邻域窗口。考虑到FPGA强大的并行处理数据能力,此处设计一种对3×3邻域中九个数据一起处理的方法,它是基于三输入排序单元构成,而每个三输入单元又是由若干二输入单元构成。这种方法比传统的冒泡排序法减少了逻辑资源的占用,却和其一样能找出中值,且只需经过3级的比较,即3个时钟周期的延时就可以找出中值。图2-2为本文在FPGA中设计实现快速中值滤波的框图。据此即完成了所采集的车牌图像的中值滤波去噪。
2.3 二值化处理
因为车牌定位和字符分割都是基于车牌区域的二值化结果进行,所以二值化的效果直接影响到车牌识别的效果。由于要从待检测的车牌图像区域截取图像的背景不会很复杂。前景区域和背景区域的差异比较明显,所以车牌图像的灰度直方图将有明显双峰效果。本文通过直方图的双峰法的方法来求取阈值,对车牌图像进行二值化处理。
一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊的方法,称为图像的二值化(BINARIZATION)。图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明