- 计算机视觉与深度学习实战:以MATLAB、Python为工具
- 刘衍琦 詹福宇 王德建
- 6282字
- 2020-08-27 18:18:32
5.2 理论基础
车牌定位与字符识别技术以计算机图像处理、模式识别等技术为基础,通过对原图像进行预处理及边缘检测等过程来实现对车牌区域的定位,然后对车牌区域进行图像裁剪、归一化、字符分割及保存,最后将分割得到的字符图像与模板库的模板进行匹配识别,输出匹配结果。该流程如图5-1所示。
图5-1 车牌定位与字符识别流程
在进行车牌识别时首先要正确分割车牌区域,为此人们已经提出了很多方法:使用Hough变换检测直线来定位车牌边界进而获取车牌区域;使用灰度阈值分割、区域生长等方法进行区域分割;使用纹理特征分析技术检测车牌区域等。Hough变换对图像噪声比较敏感,因此在检测车牌边界直线时容易受到车牌变形或噪声等因素的影响,具有较大的误检测概率。灰度阈值分割、区域增长等方法则比Hough直线检测方法稳定,但当图像中包含某些与车牌灰度非常相似的区域时,便不再适用了。同理,纹理特征分析方法在遇到与车牌纹理特征相近的区域或其他干扰时,车牌定位的正确性也会受到影响。因此,仅采用单一的方法难以达到实际应用的要求。
如果进行车牌字符的定位及裁剪,则需要首先对输入的车牌图像进行预处理以得到精确的车牌字符图像;然后将处理后的车牌看作由连续的字符块组成,并设定一个灰度阈值,如果超过该阈值,则认为有多个字符相连,需要对其进行切割,进而实现对车牌字符的分割;最后把分割的字符图片进行标准化并与模板库进行对比,选出最相似的字符结果并输出,即为车牌信息。
5.2.1 车牌图像处理
5.2.1.1 图像灰度化
车牌图像的采集一般是通过数码相机或者摄像机进行的,得到的图片一般是RGB图像,即真彩图像。根据三基色原理,每种颜色都可以由红、绿、蓝三种基色按不同的比例构成,所以车牌图像的每个像素都由3个数值来指定红、绿、蓝的颜色分量。灰度图像实际上是一个数据矩阵I,该矩阵中每个元素的数值都代表一定范围内的亮度值,矩阵I可以是整型、双精度,通常0代表黑色,255代表白色。在MATLAB中,一幅RGB图像可以用uint8、uint16或者双精度等类型的m×n×3矩阵来描述,其中m和n分别表示图像的宽度和高度,此处的RGB图像不同于索引图,所以不使用调色板。
在RGB模型中,如果R=G=B,则表示一种灰度颜色。其中,R=G=B的值叫作灰度值,由彩色转为灰度的过程叫作图像灰度化处理。因此,灰度图像是指只有强度信息而没有颜色信息的图像。一般而言,可采用加权平均值法对原始RGB图像进行灰度化处理,该方法的主要思想是从原图像中取R、G、B各层的像素值经加权求和得到灰度图的亮度值。在现实生活中,人眼对绿色(G)敏感度最高,对红色(R)敏感度次之,对蓝色(B)敏感度最低,因此为了选择合适的权值对象输出合理的灰度图像,权值系数应该满足G>R>B。实验和理论证明,当R、G、B的权值系数分别选择0.299、0.587和0.114时,能够得到最适合人眼观察的灰度图像。
5.2.1.2 图像二值化
灰度图像二值化在图像处理的过程中有着很重要的作用,图像二值化处理不仅能使数据量大幅减少,还能突出图像的目标轮廓,便于进行后续的图像处理与分析。对车牌灰度图像而言,所谓的二值化处理就是将其像素点的灰度值设置为0或255,从而让整幅图片呈现黑白效果。因此,对灰度图像进行适当的阈值选取,可以在图像二值化的过程中保留某些关键的图像特征。在车牌图像二值化的过程中,灰度大于或等于阈值的像素点被判定为目标区域,其灰度值用255表示;否则这些像素点被判定为背景或噪声而排除在目标区域以外,其灰度值用0表示。
图像二值化是指在整幅图像内仅保留黑、白二值的数值矩阵,每个像素都取两个离散数值(0或1)之一,其中0代表黑色,1代表白色。在车牌图像处理系统中,进行图像二值化的关键是选择合适的阈值,使得车牌字符与背景能够得到有效分割。采用不同的阈值设定方法对车牌图像进行处理也会产生不同的二值化处理结果:阈值设置得过小,则容易误分割,产生噪声,影响二值变换的准确度;阈值设置得过大,则容易过分割,降低分辨率,使非噪声信号被视为噪声而被过滤,造成二值变换的目标损失。
5.2.1.3 图像边缘检测
边缘是指图像局部亮度变化最显著的部分,主要存在于目标与目标、目标与背景、区域与区域、颜色与颜色之间,是图像分割、纹理特征提取和形状特征提取等图像分析的重要步骤之一。在车牌识别系统中,边缘提取对于车牌位置的检测有很重要的作用,常用的边缘检测算子有很多,如Roberts、Sobel、Prewitt、Laplacian、log及canny等。据试验分析,canny算子对弱边缘的检测相对精确,能更多地保留车牌区域的特征信息,所以本案例采用canny算子进行边缘检测。
canny算子在边缘检测中有以下明显的判别指标。
1.信噪比
信噪比越大,提取的边缘质量越高。信噪比(SNR)的定义为
式中,G(x)代表边缘函数,h(x)代表宽度为W 的滤波器的脉冲响应,σ代表高斯噪声的均方差。
2.定位精度
边缘的定位精度L的定义如下:
式中,G′(x)、h′(x)分别是G(x)、h(x)的导数。L越大,定位精度越高。
3.单边缘响应
为了保证单边缘只有一个响应,检测算子的脉冲响应导数的零交叉点的平均距离D( f′)应满足:
式中,h′′(x)是h(x)的二阶导数。
以上述指标和准则为基础,采用了canny算子的边缘检测算法步骤如下。
(1)预处理。采用高斯滤波器进行图像平滑。
(2)梯度计算。采用一阶偏导的有限差分来计算梯度,获取其幅值和方向。
(3)梯度处理。采用非极大值抑制方法对梯度幅值进行处理。
(4)边缘提取。采用双阈值算法检测和连接边缘。
5.2.1.4 图像形态学运算
数学形态学图像处理的基本运算有4个:膨胀(或扩张)、腐蚀(或侵蚀)、开启和闭合。二值形态学中的运算对象是集合,通常给出一个图像集合和一个结构元素集合,利用结构元素对图像集合进行形态学操作。
膨胀运算符号为⊕,图像集合A用结构元素B来膨胀,记作A⊕B,其定义为:
式中,表示B的映像,即与B关于原点对称的集合。因此,用B对A进行膨胀的运算过程如下:首先做B关于原点的映射得到映像,再将其平移x,当A与B映像的交集不为空时,B的原点就是膨胀集合的像素。
腐蚀运算的符号是Θ,图像集合A用结构元素B来腐蚀,记作AΘB,其定义为:
因此,A用B腐蚀的结果是所有满足将B平移后B仍旧被全部包含在A中 x 的集合中,也就是结构元素B经过平移后全部被包含集合A中原点所组成的集合中。
膨胀操作会使物体的边界向外扩张,此时如果在物体内部存在小空洞,则经过膨胀操作,这些洞将被补上,不再是边界。如果再次进行腐蚀操作,外部的边界则将变回原来的样子,内部的这些空洞则已经消失。腐蚀操作会去掉物体的边缘点,如果物体足够细小,则其所有的点都会被认为是边缘点,进而被整体消除,仅保留大物体。进行膨胀操作时,留下来的大物体会变回原来的大小,被消除的小物体消失。
在一般情况下,由于受到噪声的影响,车牌图像在阈值化后所得到的边界往往是不平滑的,在目标区域内部也有一些噪声孔洞,在背景区域上会散布一些小的噪声干扰。通过连续的开运算和闭运算可以有效地改善这种情况,有时甚至需要经过多次腐蚀之后再加上相同次数的膨胀,才可以产生比较好的效果。
5.2.1.5 图像滤波处理
图像滤波能够在尽量保留图像细节特征的条件下对噪声进行抑制,是图像预处理中常用的操作之一,其处理效果的好坏将直接影响后续图像分割和识别的有效性和稳定性。
均值滤波也被称为线性滤波,是图像滤波最常用的方法之一,采用的主要方法为领域平均法。该方法对滤波像素的位置(x,y)选择一个模板,该模板由其近邻的若干像素组成,求出模板中所包含像素的均值,再把该均值赋予当前像素点(x,y),将其作为处理后的图像在该点上的灰度值g ( x,y),即,M为该模板中包含当前像素在内的像素总个数。
采集车牌图像的过程往往会受到多种噪声的污染,进而会在将要处理的车牌图像上呈现一些较为明显的孤立像素点或像素块。在一般情况下,在研究目标车牌时所出现的图像噪声都是无用的信息,而且会对目标车牌的检测和识别造成干扰,极大地降低图像质量,影响图像增强、图像分割、特征提取、图像识别等后继工作的进行。因此,在程序实现中为了能有效地进行图像去噪,并且能有效地保存目标车牌的形状、大小及特定的几何和拓扑结构特征,本案例采用均值滤波对车牌图像进行去噪处理。
5.2.2 车牌定位原理
车牌区域具有明显的特点,因此根据车牌底色、字色等有关知识,可采用彩色像素点统计的方法分割出合理的车牌区域。本案例以蓝底白字的普通车牌为例说明彩色像素点统计的分割方法,假设经数码相机或CCD摄像头拍摄采集到了包含车牌的RGB彩色图像,将水平方向记为y,将垂直方向记为x,则:首先,确定车牌底色RGB各分量分别对应的颜色范围;其次,在y方向统计此颜色范围内的像素点数量,设定合理的阈值,确定车牌在y方向的合理区域;然后,在分割出的y方向区域内统计x方向上此颜色范围内的像素点数量,设定合理的阈值进行定位;最后,根据x、y方向的范围来确定车牌区域,实现定位。
5.2.3 车牌字符处理
5.2.3.1 阈值分割原理
阈值分割算法是图像分割中应用场景最多的算法之一。简单地说,对灰度图像进行阈值分割就是先确定一个处于图像灰度取值范围内的阈值,然后将图像中各个像素的灰度值与这个阈值进行比较,并根据比较的结果将对应的像素划分为两类:像素灰度大于阈值的一类和像素灰度值小于阈值的另一类,灰度值等于阈值的像素可以被归入这两类之一。分割后的两类像素一般分属图像的两个不同区域,所以对像素根据阈值分类达到了区域分割的目的。由此可见,阈值分割算法主要有以下两个步骤。
(1)确定需要分割的阈值。
(2)将阈值与像素点的灰度值进行比较,以分割图像的像素。
在以上步骤中,确定阈值是分割的关键,如果能确定一个合适的阈值,就可以准确地将图像分割开来。在阈值确定后,将阈值与像素点的灰度值进行比较和分割,就可对各像素点并行处理,通过分割的结果直接得到目标图像区域。在选择阈值方法分割灰度图像时一般会对图像的灰度直方图分布进行某些分析,或者建立一定的图像灰度模型进行处理。最常用的图像双峰灰度模型的条件可描述如下:假设图像目标和背景直方图具有单峰分布的特征,且处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素在灰度值上有很大的差别。如果一幅图像满足这些条件,则它的灰度直方图基本上可看作由分别对应目标和背景的两个单峰构成。如果这两个单峰部分的大小接近且均值相距足够远,两部分的均方差也足够小,则直方图在整体上呈现较明显的双峰现象。同理,如果在图像中有多个呈现单峰灰度分布的目标,则直方图在整体上可能呈现较明显的多峰现象。因此,对这类图像可用取多级阈值的方法来得到较好的分割效果。
如果要将图像中不同灰度的像素分成两类,则需要选择一个阈值。如果要将图像中不同灰度的像素分成多个类,则需要选择一系列的阈值将像素分到合适的类别中。如果只用一个阈值分割,则可称之为单阈值分割方法;如果用多个阈值分割,则可称之为多阈值分割方法。因此,单阈值分割可看作多阈值分割的特例,许多单阈值分割算法可被推广到多阈值分割算法中。同理,在某些场景下也可将多阈值分割问题转化为一系列的单阈值分割问题来解决。以单阈值分割算法为例,对一幅原始图像 f ( x,y)取单阈值T分割得到的二值图像可定义为:
这样得到的g(x,y)是一幅二值图像。
在一般的多阈值分割情况下,阈值分割输出的图像可表示为:
g(x, y)=k Tk-1≤f (x, y)<Tk k=1,2,…,K
式中,T0,T1,…,Tk,…,TK是一系列分割阈值,k表示赋予分割后图像各个区域的不同标号。
值得注意的是,无论是单阈值分割还是多阈值分割,在分割结果中都有可能出现在不同区域内部包含相同标号或区域值的情况。这是因为阈值分割算法只考虑了像素本身的灰度值,并未考虑像素的空间位置。因此,根据像素的灰度值,划分到同一类的像素有可能分属于图像中不相连通的区域,这时往往需要借助应用场景的某些先验知识来进一步确定目标区域。
5.2.3.2 对车牌进行阈值化分割
车牌字符图像的分割即将车牌的整体区域分割成单字符区域,以便后续识别。车牌字符分割的难点在于受字符与噪声粘连,以及字符断裂等因素的影响。均值滤波是典型的线性滤波算法,指在图像上对像素进行模板移动扫描,该模板包括像素周围的近邻区域,通过模板与命中的近邻区域像素的平均值来代替原来的像素值,实现去噪的效果。为了从车牌图像中直接提取目标字符,最常用的方法是设定一个阈值T,用T 将图像的像素分成两部分:大于T 的像素集合和小于T 的像素集合,得到二值化图像。因此,本案例采用均值滤波算法来对车牌字符图像进行滤波去噪,采用阈值化分割进行车牌字符的分割。
5.2.3.3 字符图像归一化处理
字符图像归一化是简化计算的方式之一,在车牌字符分割后往往会出现大小不一致的情况,因此可采用基于图像放缩的归一化处理方式将字符图像进行大小放缩,以得到统一大小的字符图像,便于后续的字符识别。
5.2.4 车牌字符识别
5.2.4.1 字符识别简介
车牌字符识别方法基于模式识别理论,常用的有以下几类。
1.结构识别
该方法主要由识别及分析两部分组成:识别部分主要包括预处理、基元抽取(包括基元和子图像之间的关系)和特征分析;分析部分包括基元选择及结构推理。
2.统计识别
该方法用于确定已知样本所属的类别,以数学上的决策论为理论基础,并由此建立统计学识别模型。其基本方式是对所研究的图像实施大量的统计分析工作,寻找规律性认知,提取反映图像本质的特征并进行识别。
3.BP神经网络
该方法以BP神经网络模型为基础,属于误差后向传播的神经网络,是神经网络中使用最广泛的一类,采用了输入层、隐藏层和输出层三层网络的层间全互联方式,具有较高的运行效率和识别准确率。
4.模板匹配
该方法是数字图像处理中最常用的识别方法之一,通过建立已知的模式库,再将其应用到输入模式中寻找与之最佳匹配模式的处理步骤,得到对应的识别结果,具有很高的运行效率。
本案例选择的是基于模板匹配的字符识别方法,其基本过程如下。
◎ 建库。建立已标准化的字符模板库。
◎ 对比。将归一化的字符图像与模板库中的字符进行对比,在实际实验中充分考虑了我国普通小汽车牌照的特点,即第1位字符是汉字,分别对应各个省的简称,第2位是A~Z的字母;后5位则是数字和字母的混合搭配。因此为了提高对比的效率和准确性,分别对第1位、第2位和后5位字符进行识别。
◎ 输出。在识别完成后输出所得到的车牌字符结果。
其流程如图5-2所示。
图5-2 字符识别流程
5.2.4.2 基于模板匹配的字符识别
模板匹配是图像识别方法中最具有代表性的基本方法之一,该方法首先根据已知条件建立模板库T(i,j),然后从待识别的图像或图像区域f(i,j)中提取若干特征量与T(i,j)相应的特征量进行对比,分别计算它们之间归一化的互相关量。其中,互相关量最大的一个表示二者的相似程度最高,可将图像划到该类别。此外,也可以计算图像与模板特征量之间的距离,采用最小距离法判定所属类别。但是,在实际情况下用于匹配的图像其采集成像条件往往存在差异,可能会产生较大的噪声干扰。此外,图像经过预处理和归一化处理等步骤,其灰度或像素点的位置也可能会发生改变,进而影响识别效果。因此,在实际设计模板时,需要保持各区域形状的固有特点,突出不同区域的差别,并充分考虑处理过程可能会引起的噪声和位移等因素,按照基于图像不变的特性所对应的特征向量来构建模板,提高识别系统的稳定性。
本案例采用特征向量距离计算的方法来求得字符与模板中字符的最佳匹配,然后找到对应的结果进行输出。首先,遍历字符模板;其次,依次将待识别的字符与模板进行匹配,计算其与模板字符的特征距离,得到的值越小就越匹配;然后,将每幅字符图像的匹配结果都进行保存;最后,有7个字符匹配识别结果即可作为车牌字符进行输出。