车牌定位的一个有效方法
Danian Zheng *, Yannan Zhao, Jiaxin Wang
国家重点实验室  智能技术与系统、计算机科学与技术系、
清华大学、北京100084、中国
摘要
车牌定位是机动车牌照自动识别运输系统的一个重要阶段。 本文提供了一个实时和强劲车牌定位方法。 车牌区域包含丰富的边缘和纹理信息。 我们先用图像增强和Sobel算子提取出图象
的垂直边缘, 然后用一个有效算法除去图像的大部分背景和噪声边缘, 最后在剩余边缘图像中利用一个矩形窗口搜索车牌区域并从原始图像中将车牌切割出来。 实验结果表明,我们的方法有很强的鲁棒性和很高的效率。
_ 2005 Elsevier B.V. All rights reserved
关键词:图像增强; 边缘检测; 长曲线和随机噪声的去除; 车牌定位和分割
1. 引言
车牌识别成为当今许多自动交通管理系统如公路交通管理, 公路自动缴费和桥梁或停车场出入管制的关键技术。 车牌定位是这项技术中非常必要和重要的一个阶段,它已引起了相当大的关注。
研究人员已经到许多不同的方法定位车牌。 Rodolfo Stefano(2000)制定了一种基于矢量量化(VQ)的方法。 矢量图像是基于一种特定的编码机制的四叉树,它可以提供给系统关于图像区域所包含内容的一些线索,这些信息有助于定位的实现。Park et al. (1999)使用神经
网络定位车牌。 神经网络可作为过滤分析图像的小窗口,判断每个窗口是否包含车牌,其输入为HIS值。一个后处理器将这些过滤图像合并起来并在图像中定位跳跃的车牌区域。 除去神经网络,其他过滤方法也被研究过。 例如,有些作者用线敏感过滤器提取车牌区域。 可以确定车牌区域由很高密度的薄暗线或曲线。 因此
,车牌的定位是一个在图像中寻包含由一个累积函数计算能得到的最大线过滤值的矩形区域的操作(Luis et al. 1999)车牌字符可以直接通过对输入图像的扫描和寻到图像中彼此不相连的部分来识别。 如果发现有一些字符存在于一条直线上,那么他们所组成的部分
* Corresponding author Tel: +86 10 62775613; fax: +86 10
62795871
E-mail address: zdn02@mailstsinghuaeducn (D Zheng)
0167-8655/$ - see front matter _ 2005 Elsevier BV All rights reserved
doi:101016/jpatrec200504014
可能就是车牌区域(Lim et al. 1998) 模糊逻辑已被Zimicet al. (1997)应用于车牌定位问题。 作者制定了一些很直观的规则来描述车牌, 并定义一些模糊的设定“明”和“暗”及“明暗变化”的成员函数得到水平和垂直的车牌位置。 但这种方法对车牌的颜和亮度很敏感并需要大量的处理时间。 Zhu et al. (2002) Wei et al. (2001) 研究了利用颜特征定位车牌,但这些方法在不同环境中并不足够稳健。车辆图片的边缘特征是很重要的, 基于车牌自身的特征,边缘密度可以被用来成功的定位车牌。 Ming et al. (1996) 研制了一种通过消除图像边缘密度最高和最低的部分来简化整个图像的方法。 但车牌的一些特征会在此方法中丢失。
本文进一步研究车牌定位的课题。矩形的车牌区域包含丰富的边缘和纹理信息,所以我们从图像边缘角度进行研究,但又不同于Ming et al. (1996)。我们首先加强原始图像来突出车牌区域,用Sobel算子提取车牌的垂直边缘, 然后删除边缘图像的背景曲线和噪声, 最后用一个滑动的长方形的窗口在剩余图像部分中搜索车牌并将其从原始车辆图像中分割出来。 文章的第2部分为车牌定位方法的描述,它包含四个部分:图像增强、垂直边缘提取、背景曲线和噪音的消除、车牌的搜索和分割。第三部分是关于三套车牌图像的实验。 4部分进行讨论并作出结论。
2. 拟定的车牌定位方法
本次使用的所有车辆图像均为256灰度级,大小为384×288 像素。示例图Fig.1
车牌轿车有许多字符组成 (如拉丁字母、阿拉伯数字等), 所以车牌
Fig.1:384·288 像素 and 256灰度级的示例图
区域蕴含丰富的边缘信息. 但有时车辆图像的背景也有很复杂的边缘信息. 有两个事实需要引起我们重视: 一是牌照周围的背景区域大都包含一些水平边缘; 另一个是在背景中的边缘主要是长曲线和随机噪音, 然而在车牌区域中的边缘都聚集在一起,产生强烈的纹理特征. 只要能提取汽车图像中的垂直边缘(虽然会丢失一些水平边缘信息,但这小小的损失也是值得的),大部分的背景边缘就被消除了,牌照区域也就从整个边缘图像中清晰地分离了出来。因此,我们拟依照以下四步利用车牌的垂直边缘对其定位。
2.1. 图像增强
车牌区域中的梯度远比强烈日光下的汽车影子形成的汽车轮廓小得多。阴天和暗夜中捕获的车辆图像往往也在车牌区域产生很小的梯度. 如果我们能从这些车辆图像中提取边缘信息,就会发现车牌区域中往往会有一些垂直边缘. 所以我们必须首先增强汽车图像.
车辆图像中需要被增强的区域有很低的差额. 这里我们使用  Ii,j来表示图像中像素点Pi,j的亮度值(竖直:0i288;水平:0j384,并使用Ii,j来表示增强图像的亮度。我们使Ii,jIi,j适合公式1Wi,j是以像素Pi,j为中心的一个窗口。Iwi,jσwi,j是窗口Wi,j的中值亮度和标准偏差。I0σ0分别是期待的中值和标准偏差。
为了更好地描绘局部信息,窗口大小应小于预计的车牌大小. 本文中 我们选择了48×36的矩形作为窗口Wi,j,从而8×8的窗口可以覆盖整个384×288的车辆图像. I0等于Iwi,j,σ0成为独立于像素点Pi,j的恒定值,现在我们需要知道每个像素点的Iwi,jσwi,j值。计算出所有的值是不可取的,我们可以用双线性内插算法得到它们。 我们首先将汽车图像均匀地分成8×8; 然后计算出各块顶部
.
Fig.2利用双线性内插法计算矩形ABCDσwi,j的值
I=36m,j=48n处的Iwi,jσwi,j值。最后利用双线性内插算法(公式(2),(3))计算36mi36(m + 1),48nj48(n+1),Cx=(j-48n)/48,Cy =(I-36m)/36每一个Iwi,j北京汽车牌照σwi,j的值(图Fig.2)。
如果σwi,j趋近于0,(比如只有一个暗区域或只有一个亮区域),公式(1)就会得出一个很大的值。我们就不需要对此区域进行增强。如果σwi,j足够大(例如σwi,j 60),也不需要进行增强。因此实际上增强公式(1)就进化成公式(4)。
  f(σwi,j)是有公式(5)决定的一个增强系数(如Fig.3所示)。车牌区域中大部分需要增强的σwi,j都在20左右。所以我们使函数fσwi,j=0σwi,j60时等于1,而在σwi,j=20时等于3(如20×3=60)。
Fig.3增强系数f(σwi,j)
增强的车辆图像如Fig.4所示。我们可以看到车牌区域已经被增强。如果车牌区域的照明较好且整个图像比较平衡,这个处理过程就不会改变牌照的对比度(f(σwi,j)=1 ,if σwi,j60)。
2.2 垂直边缘的提取
我们选择垂直Sobel算子来提取垂直边缘(Fig. 5),因为它的操作简便且只需要耗费我们一点运算时间. 倾斜的汽车图像利用Sobel
增强后图像I
算子得到垂直梯度形象.计算图像的绝对平均价值并将它乘以系数作为一个阀值 (例如4grad) ,或计算梯度直方图,寻在某一个百分比(75%)的梯度分布作为一个阀值.利用这个阀值并在水平方向的梯度图像中使用nonmaximum suppression我们就能得到如Fig.6所示的垂直Sobel边缘图像.
Fig.5 垂直Sobel算子                    Fig.6  垂直边缘图像
2.3. 背景曲线和噪音的消除.
Fig.6中我们可以看到, 在垂直边缘图像中车牌边缘周边有许多长背景曲线和短随机噪声边缘。这些背景和噪声边缘彗会影响我们对车牌的定位。我们提出一个简单的方法来消除它们.
这种算法只需要我们对边缘图象作三次扫描.第一次扫描将纪录距离顶点(或左边界点)长度. 第二次扫描将记录距离底部(或右边界点)的长度. 最后一次扫描将把两种长度相加表示实际边界长度; 如果边界点有非常长(背景曲线)或非常短(噪声)的实际边长,那么此点将从图像中去除. 下面描述算法之前,我们需要介绍一些符号的用法: E表示边缘图像 (如像素点Pi,j是边缘点,E=1,否则E=0) MNE有相同的大小;Tlong同估计的车牌高度有关系,Tshort比大部分车牌边界长度要短,是两倍的阀值长度。
1. 初始化MN0
2. for each row i from top-to-bottom do
    for each column j from left-to-right do
if (Ei,j==1)
if (Ei-1,j-1+ Ei-1,j + Ei-1,j+1 + Ei,j-10)
Mi,j = max{Mi_1,j_1,Mi_1,j,Mi_1,j+1,Mi,j_1} + 1;
else
Mi,j = max{Mi_2,j_1,Mi_2,j,Mi_2,j+1,Mi_1,j_2,Mi_1,j+2,Mi,j_2} + 1;
end
end
end
end
3. for each row i from bottom-to-top do
for each column j from right-to-left do
if (Ei,j==1)
if (Ei+1,j_1+Ei+1,j+Ei+1,j+1+Ei,j+1>0)
Ni,j = max{Ni+1,j_1,Ni+1,j,Ni+1,j+1,Ni,j+1} + 1;
else