张新瑞
汉中市人民政府办公室 陕西汉中 723000
对车牌字符识别系统相关技术是车牌识别系统中一项关键技术。车牌字符识别系统一般包含车牌图像预处理,车牌字符分割和字符识别三个模块。
论文首先概述了系统的组成以及系统的设计分析,然后依次详细介绍了系统的组成模块:车牌图像预处理模块实现了图像灰度化、对比度增强,图像二值化和车牌倾斜度校正等功能;车牌字符分割包含字符分割和字符预处理,该模块主要是为下一步提取到精确的字符特征做准备;字符识别模块采用改进的模板匹配公式,获得较好的识别率,最后将上述各个模块进行了简单的系统集成和测试并分析了系统运行结果。
1数字图像处理的概念
本文中要用到很多数字图像处理的方法,所以在此先介绍数字图像处理的相关概念,以此作为基础。
数字图像处理的对象是数字图像,数字图像处理(Digital Image Processing)是利用计算机系统,对从图像转换来的数字信号进行运算处理,以满足人们对其信息的需求。
数字图像技术起源于20世纪20年代,目前随着信息技术迅猛发展,特别是互连网技术的高速发展,数字图像以其信息量丰富、传输速度快、距离远,使用工具简单方便等优点成为人类获得信息的重要来源。而数字图像处理所特有的处理精度高、处理内容丰富,可以进行复杂的非线性运算等功能强大的处理手段更促进了自身的高速发展。
数字图像处理系统一般分三个部分:输入部分的图像数字化设备,作处理的计算机、输出的图像显示设备。一个完整的图像处理工作周期应包括:图像信息的获取、图像信息的存储、图像信息的传输、图像信息的处理、图像信息的输出和显示。
但是由于图像所特有的高信息量,对其存储、传输和处理都有一定的困难。特别是进行一些复杂的处理时更是如此。希望随着计算机在软硬件上的突破性发展,能为数字图像处理在时间和空间上提供更高速和大信息量的处理环境。
2图像的灰度处理
彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度。彩色图像存在许多与识别无关的信息,不便于进一步的识别工作,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度,而灰度圖像需要进一步改善质量以突出我们感兴趣的信息。因此在这一节中主要介绍灰度化和灰度对比增强的方法,这是进行二值化的前提。
2.1彩色到灰度转换
目前车牌定位出的车牌图像都是彩色的,而且绝大部分是真彩色。真彩色又称为RGB图像,它是利用R、G、B三个分量表示一个像素的颜色,R、G、B分别代表红、绿、蓝三种不同的颜色。理论上认为,通过三基色可以合成出任意颜色。
数字图像分为彩色图像和灰度图像。在RGB模型中,如果R = G = B,则颜色表示一种灰度颜色,其中R = G = B的值叫做灰度值。由彩色转换为灰度的过程叫做灰度化处理。灰度图像就是只有强度信息,而没有颜色信息的图像,存储灰度图像只需要一个数据矩阵,矩阵的每个元素表示对应位置的像素的灰度值。彩色图像的像素值为RGB(R, G, B),灰度图像的像素值为RGB(r, r, r),R、G、B可由彩色图像的颜色分解获得。而R、G、B的取值范围为0-255,所以灰度的级别只有256级。将彩色图像转化为灰度图像常采用的公式如下:
2.2 对比度增强
图像处理的目的是为了将感兴趣的目标突出,因而要采用图像增强技术来提高图像的质量。图像增强是数字图像处理过程中经常要采用的一种方法。为了改善视觉效果或者便于人和机器对图像的理解和分析,根据图像的特点或存在的问题采取的改善方法或者加强特征的措施统称为图像增强。例如,图像信号变弱会使人们无法看清图像的细节,而采用增强对比度的方法可使图像清晰一些;图像的噪声干扰也容易使图像质量变差,运用平滑技术可以消减噪声等。
由于所拍摄的车辆图像的质量受天气、光照,观察点等的影响,车辆图像往往会产生对比度不足的弊端,使图像细节分辨不清,影响识别率。因此,需要将车辆图像进行灰度扩展,以便改善图像的观察质量,提高字符识别率。对比度增强是按一定的规则修改输入图像每一个像素的灰度,从而改变图像灰度的动态范围。本文采用的增强对比度的方法是灰度概率统计法。
对图像的灰度进行概率修正就是从统计的角度出发,使修改后图像的灰度具有给定数学期望和方差。其计算公式如下:
经对比度增强后,明暗对比更加强烈了,图像的细节更加清楚了,各灰度等级的比例更加平衡,有效地改善了图像的质量。
3 图像的二值化
二值图像是指整幅图像画面内仅有黑,白二值的图像。在数字图像处理中,二值图像占有非常重要的地位。这是因为:一方面,有些需要处理的如文字图像、指纹图像,工程图纸等图像本身是二值的;另一方面,在某些情况下即使图像本身是有灰度的,我们也设法使它变成二值图像再进行处理(即灰度图像的二值化)。这是考虑到在实用的图像处理系统中,针对彩色或灰度图像进行速度高、成本低,信息量大的处理所产生的花销太大。此外,二值化后的图像能够用几何学中的概念进行分析和特征描述,比灰度图像优势大的多。
在实际的车牌处理系统中,进行图像二值变换的关键是要确定合适的阈值,使得字符与背景能够分割开来,而且二值变换的结果图像必须要具备良好的保形性,不丢掉有用的形状信息,不会产生额外的空缺等等。同时,车牌识别系统要求处理的速度高、成本低、信息量大,采用二值图像进行处理,能大大地提高处理效率。
图像的二值化方法有很多,有阈值法,FC㎡D法等,本文采用的是阈值分割法,假定一幅图像具有下图所示的灰度直方图。
由直方图3.3(a)可以知道图像的大部分像素取值较低,其余像素较均匀地分布在其他灰度级上。由此可以判断这幅图像是由有灰度级的物体叠加在一个aa暗背景上形成的。据此推断,可以设一个阈值T,把直方图分成两个部分,如图3.3(b)所示。
由此可见,阈值法分割比较简单,简单到主要只有两个步骤。
(1)确定需要的分割阈值;//字体Times New Roman
(2)将分割阈值与像素值相比较以划分像素。
在这两个步骤中,确定阈值是关键的一步,如果能确定一个合适的阈值就能方便地将图像分割开来。但问题是,要确定一个合适的阈值是一件让人头痛的事,确定阈值的多种方法各有千秋。
一般来说,阈值T的选择要遵循如下的原则:B1应尽可能包含与背景相关联的灰度级,而B2则应包含物体的所有灰度级。当扫描这幅图像时,从B1到B2之间的灰度有变化就意味着有边界存在。
阈值的选取方式有很多种,如基于各像素值的阈值、基于区域性质的阈值、基于坐标位置的阈值,基于过渡区的阈值等。本文采用的是基于像素值的全局迭代阈值选取方法。基本思想是:
4倾斜度校正
虽然在车牌图像拍摄的时候,可以调整摄像机的俯仰角度、摄取方向和水平度,以保持车牌的横向边缘的倾斜度经可能小,并且让车牌在整幅图像中出于相对居中的位置。但是,实际上摄像机通常安装在路边或顶部,这将造成车牌与摄像头与成像平面不平行,产生不同程度的车牌的倾斜和变形,为了提高系统的识别率,对倾斜的车牌进行校正是非常必要的。
常用的倾斜校正方法是Hough变换。Hough变换法是考虑到车牌的水平方向与车的某些横向边棱是平行的,而观察这些边棱在照片中比较明显,所以通过找到边棱直线倾斜的角度,再根据该角度对图像进行旋转,来达到校正的目的。
本文采用的校正算法主要是根据车牌图像上左右两边的白色像素(前景点)的平均高度来的,具体来说首先要分别计算图像左半边和右半边的像素的平均高度,然后求斜率,根据斜率重新组织图像,里面包含了一个从新图像到旧图像的像素的映射。如果新图像中的像素映射到旧图像中时超出了旧图像的范围,则把新图像中的该像素置为黑色点(背景点)。该算法的前提是处理的图像是二值图。
倾斜度调整后的效果如图3.6所示。
5车牌字符分割的实现
为了准确地识别车牌上的汉字,英文字母和数字。必须把单个字符从车牌中提取分离出来。在实际处理中,我们面对的是要识别的车牌字符情况非常复杂,可能会存在较大的干扰和噪声,这是由于各种设备可能产生的噪声所引起的,使得车牌图像中可能产生字符之间断裂、粘连,轮廓模糊不清等等。因此在分割之前,要对车牌图像进行去躁处理,以便准确分割。而在分割结束后,还要进行字符预处理,为下一步字符识别做好准备。
5.1图像的去躁处理
图像可能在扫描或者传输过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波,均值滤波。但是那样的算法不适合用在处理字符这样目标狭长的图像中,因为在滤波的过程中很有可能会去掉字符本身的象素。本文采用的是去除杂点的方法来进行去噪声处理的。
具體算法如下:扫描整个图像,当发现一个黑色点的时候,就考察和该黑色点间接或者直接相连接的黑色点的个数有多少,如果大于一定的值,那就说明该点不是离散点,否则就是离散点,把它去掉,即置为背景色。在考察相连的黑色点的时候用的是递归的方法。这个方法比较简单易行,虽然效果没有滤波那么明显,但是它确保了字符像素的完整性。
5.2字符分割
在识别之前,必须要把车牌上的多个字符一一分割出来。常用的字符分割方法是利用水平和垂直投影来进行字符分割。水平投影特征是每一行中心黑色素点的总和;垂直投影特征是每一列中心黑色素点的总和。这种分割有速度快的特点,但对不规范的字符会出现误分割的情况。
本文采用的是另外一种方法,具体算法为:
(1)先自下向上对图像进行逐行扫描直至遇到第一个白色的像素点,记录下来。然后再由上向下对图像进行逐行扫描直至找到第一个白色像素点,这样就找到图像大致的高度范围。
(2)在这个高度范围之内再自左向右逐列进行扫描,遇到第一个白色像素时认为是字符分割的起始位置,然后继续扫描,直至遇到有一列中没有白色像素,则认为这个字符分割结束,然后继续扫描,按照上述的方法一直扫描直至图像的最右端。这样就得到了每个字符比较精确的宽度范围。
(3)在已知的每个字符比较精确的宽度范围内,按照第(1)步的方法,分别进行自上而下和自下而上的逐行扫描来获取每个字符精确的高度范围。
本算法就是比较简单易行,但是噪声杂点较多就会出现错误分割,所以在程序中用了个改进措施,在列扫描中当一列中的白色象素小于3个时将这些象素做杂点处理。分割流程如图4.1所示。
为了能够看清楚图像的分割结果,本文还设计了一个函数Draw Frame用来在分割好的字符周围上画框,这个画框函数只会起到标识图像的作用,并不会改变车牌字符的内容。
。
5.3字符预处理
分割出来的字符由于大小,笔画粗细不同等不能立即进行识别,还需要经过一系列的处理。这些处理包括字符大小归一化、字符紧缩重排,字符细化。以下分别介绍。
5.3.1 字符大小归一化
由于分割出来的字符大小存在较大的差异,而相对来说,统一尺寸的字符识别的标准性更强,准确率自然也更高,标准化图像就是要把原来各不相同的字符统一到同一尺寸,本文字符归一化后的大小为16×32。
具体算法如下:先得到原来字符的高度和宽度,并与系统要求的高度和宽度做比较,得出要变换的系数,然后根据得到的系数进行高宽度的变换,把新图像里面的点按照插值的方法映射到原图像中。
5.3.2 字符紧缩重排
经过标准归一化处理后的各个字符在图像中的位置不定,要它进行特征提取时处理起来比较麻烦,所以要把归一化后的字符进行紧缩重排,形成新得图像,以方便下一步的特征提取的操作,其流程图如图4.3所示。
字符归一化并紧缩重排后的效果如图4.4所示。
5.3.3 字符细化
如果两幅图像由于它们的线条的粗细不同,就会使得两幅图像差别很大,但是将它们的线条进行细化以后,统一到相同的高度,如一个像素宽时,这时两幅图像的差距就不那么明显了。
利用字符的骨架的某些特征来进行数码识别,就使得识别有了一定的适应性。
一般使用细化的方法来提取骨架,细化的算法有很多,如Hilditch算法,Rosenfeld算法等。本文将采用一种简单实用的方法来对字符进行细化,具体算法如下:
对于图像中的某个像素点,考察它的8个相邻的像素点,把这8个像素点分别记为,,···,,如图4.5所示:
把这9个像素点按图4.5排列后,假设的像素值为Pixel Value,则当下面的4个条件同时满足时,可以删除像素点,也就可以达到图像细化的目的。
条件中,是求与相邻的8个像素点中与其像素值相同的像素点的个数,是求与相邻的8个像素点中像素值交替变化的次数。如图4.6所示,,。
图4.6 , 计算示例
那么上面四个条件的意思分别是:
条件(1)是指与相邻的8个像素点中,与其像素值相同的像素点的个数应大于等于2且要小于等于6。
条件(2)是指与相邻的8个像素点中,像素值交替变化的次数应等于1。
条件(3)是指中至少有一个的像素值与不同。
条件(4)是指中至少有一个的像素值与不同。
接下来,只需对图像中的每一个像素逐一判断这4个条件,把同时满足这四个条件的像素点去掉,否则保留该像素点为图像的骨架点,便可达到细化的目的。
字符细化后的效果如图4.7所示: