(1)车辆图像是用摄像头获取的,得到的图像往往存在着0-15度的倾斜,因而要考虑定位和识别的校正。
(2)由于阴天或光线不足还会产生图像较暗的情况;由于车牌长期的使用还会造成字符磨损、污染等情况,因而要考虑识别字符的容忍度。
3. 黑盒原则 整个系统对外只有一个入口和一个出口,完成汽车图像的输入和 车牌字符串输出的功能。至于图像数据读取、车牌定位、车牌校正、车牌字符切割、字符识别等方法的实现都是系统内部自动完成的。
4. 模块化结构 本系统采用了四个大模块,即车辆图像预处理模块、车牌定位 模块、车牌图像预处理模块、字符的特征提取及识别模块。其中,车辆图像预处理模块又分为灰度化模块、噪声处理模块、边缘检测模块、二值化模块,车牌图像预处理模块又分为倾斜度调整模块、字符分割模块、归一化模块、字符的细化模块等。
2.3 本章小结
本章对车牌识别的系统设计方案做了介绍,包括车牌系统的概述和设计原则以及现场对程序系统的正面影响和负面影响。相信通过这章的介绍,大家对车牌识别中的一些基本问题都有了简单的了解,也为后面车牌识别算法介绍做了铺垫。
第3章 车牌识别算法设计
上文介绍了车牌识别系统的设计方法,下面我将介绍车牌识别各个步骤的内部算法设计,深度剖析车牌识别系统的编程原理,相信经过这章介绍,大家会与车牌识别系统零距离。
3.1 车辆图像的预处理
3.1.1 图像的灰度化
汽车图像样本,目前大都是通过摄像机、数码相机等设备拍摄获取的,因而预处理前的图像都是彩色图像。真彩色图像又称RGB图像,它是利用R、G、B三个分量表示一个像素的颜色,R、G、B分别代表红、绿、蓝3种不同的颜色,通过三基色可以合成出任意颜色。
彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度。由于图像的每个像素都具有三个不同的颜色分量,存在许多与识别无关的信息,不便于进一步的识别工作,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度。
数字图像分为彩色图像和灰度图像。在RGB模型中,如果R = G = B,则颜色表示一种灰度颜色,其中R = G = B的值叫做灰度值。由彩色转换为灰度的过程叫做灰度化处理。灰度图像就是只有强度信息,而没有颜色信息的图像,存储灰度图像只需要一个数据矩阵,矩阵的每个元素表示对应位置的像素的灰度值。彩色图像的像素值为RGB(R, G, B),灰度图像的像素值为RGB(r, r, r),R、G、B可由彩色图像的颜色分解获得。而R、G、B的取值范围是0-255,所以灰度的级别只有256级。将彩色图像转化为灰度图像常采用的经验公式如图3-1所示:
式中,gray为灰度值,R、G、B分别为红色、绿色和蓝色分量。这是由于人眼对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低,这样得到的灰度图像是较为合理的。
gray = 0.30 × R + 0.59 × G + 0.11 × B (3-1)
3.1.2 图像的二值化
二值图像是指整幅图像画面内仅有黑、白二值的图像。在数字图像处理中,二值图像占有非常重要的地位。这是因为,一方面,有些需要处理的如文字图像、指纹图像、工程图纸等图像本身是二值的;另一方面,在某些情况下即使图像本身是有灰度的,我们也设法使它变成二值图像再进行处理(即灰度图像的二值化)。这是考虑到在实用的图像处理系统中,针对彩色或灰度图像进行速度高、成本低、信息量大的处理
所产生的花销太大。此外,二值化后的图像能够用几何学中的概念进行分析和特征描述,比灰度图像优势大的多。
阈值法分割比较简单,简单到主要只有两个步骤: 1. 确定需要的分割阈值
2. 将分割阈值与像素值相比较以划分像素
在这两个步骤中,确定阈值是关键的一步,如果能确定一个合适的阈值就能方便地将图像分割开来。但问题是,要确定一个合适的阈值是一件让人头痛的事,确定阈值的多种方法各有千秋。
一般来说,阈值的选择要遵循如下的原则:B1应尽可能包含与背景相关联的灰度级,而B2则应包含物体的所有灰度级。当扫描这幅图像时,从B1到B2之间的灰度有变化就意味着有边界存在。
阈值的选取方式有很多种,如基于各像素值的阈值、基于区域性质的阈值、基于坐标位置的阈值、基于过渡区的阈值等。本文采用的是基于像素值的全局迭代阈值选取方法。基本思想是:
1. 求出图像中的最大和最小灰度值和,并令初始阈值如公式3-2所示:
(3-2)
2. 根据阈值将图像分割成目标图像和背景图像两部分,如公式3-3与3-4所 示,再求出这两部分的平均灰度值和。
(3-3) (3-4)
式中,是图像中点的灰度值,是的加权系数,一般为1。
3. 求出新的阈值,如公式3-5所示。
(3-5)
4. 如果,则迭代结束,否则,转到第2步继续迭代。
二值化流程图见图3-1所示。
开始Threshold=(图像最大灰度值+最小灰度值)/2设置像素指针*lpSrc;i=0;j=0;阀值Threshold = 0;把灰度值小于Threshold的点求平均灰度g1把灰度值大于Threshold的点求平均灰度g2若i<图像高度HIGHYN若Threshold=(g1+g2)/2YNN若j<图像宽度WEITHY更新当前视图i++获取当前像素的灰度值结束Y当前像素值lpSrc=0若当前像素值小于阀值N当前像素值lpSrc=255j++
图3-1 二值化流程图
3.1.3 图像的中值滤波
经过二值化之后,图像本身还存在许多噪声,引起噪声的原因有:在摄像时,由于光学系统失真,相对运动,大气湍流等都会使图像模糊。再如传输过程中,噪声污染图像,或者使机器从图像中提取的信息减少甚至造成错误,因此必须对降质图像进
行改善。改善的办法有两类:一类是不考虑图像降质的原因,只将图像中感兴趣的特征有选择地突出,而衰减其它不需要的特征,故改善后的图像不一定要逼近原图像。这类图像改善方法统称为图像增强技术。另一类改善图像办法是针对图像降质原因,设法去补偿降质因素,从而使改善的图像尽可能地逼近原图像,这类图像改善方法统称为图像复原技术。
中值滤波是图像增强的一种手段,它的目的是为了减少离散点数。噪声并不限于人眼所能看到的失真或变形,有些噪声只有在进行图像处理时才能发现。一般来说,图像的能量主要集中在其低频部分,而车牌的信息主要在高频部分,为了去掉高频干扰,有必要进行图像平滑。
为什么采用中值滤波在这里阐述下:虽然我们知道滤波有好几种方法。高通、低通、平均滤波等。说说平均滤波:平均滤波往往不只是把干扰去除,还常把图像的边缘模糊,因而造成视觉上的失真,如果目的只是把干扰去除,而不是刻意让图像模糊,则中值滤波是比较好的选择。中值滤波是一种非线性的信号处理方法,与其对应的中值滤波器也是一种非线性的滤波器,它在一定的条件下可以克服线性滤波器如最小均方滤波、平均值滤波等所带来的图像细节模糊,而且对滤波脉冲干扰及图像扫描噪声最为有效,特别适合用在很强的椒盐或脉冲干扰,因为这些值与其邻近值像素灰度值有很大的差异,因此经过排序后取中值的结果是强迫将此干扰变成与其邻近的某些像素的灰度值一样,达到去除干扰的效果。在实际运算过程中不需要图像的统计特性,这也带来了不少方便,但对一些细节特别多,特别是点、线、顶尖细节多的图像不宜采用中值滤波。一般地设有一个一维序列,f1,f2…..取该窗口长度(点数)为m(m为奇数),对一维序列进行中值滤波,就是从序列中相继抽取m个数, (fi-v) ,(fi-1) … f(i)… f(i+1), f(i+v) 其中f(i) 为窗口的中点值,v = (m-1) / 2再将m个点值按其值大小排序,取中间的那个数为滤波输出,用数学表示为y1?med(f(i?v)...f(i)...f(i?v) 其中,中值滤波一般采用一个含有奇数个点的滑动窗口,将窗口中各个灰度值得中值替代指定点(一般是窗口的中心点)的灰度值,假设窗口内有5个点,其值依次为重新排序后(从小到大)为,则,此例若平滑滤波窗口也是取4,而平均滤波输
中值滤波具有对尖峰性干扰效果好,即保持边缘的陡度又去掉干扰,因此在本例中采用中值滤波对图像进行处理。
中值滤波流程图如图3-2所示。
3.1.4 图像的边缘检测
从车辆图像中正确分割出车牌区域是车牌识别中最为关键的步骤之一。所谓图像分割就是要根据目标与背景的先验知识,对图像中的目标、背景进行标记、定位,然后将待识别的目标从背景或其它伪目标中分离出来。图像分割是图像提取得重要组成