摘 要: 在当前技术中,车牌之间的匹配一般采用的是精确匹配,其不足以满足旅行时间、OD调查等研究的需要。针对此问题,设计了一种基于模糊匹配的多级车牌匹配技术。该方法通过限定车牌经过上下游交叉路口的时间间隔、计算车牌之间的编辑距离进行车牌的模糊匹配,将匹配成功的车牌的旅行时间用四分位数法进行异常数据的剔除,并通过北京市某路段的实测数据进行验证。实验发现多级车牌匹配技术可以很好地提高车牌的匹配率,从而为基于车牌的其他研究提供更有效、可靠的数据。
关键词: 车牌匹配; 模糊匹配; 编辑距离; 阈值
中图分类号: TN911.73⁃34; TP301.6 文献标识码: A 文章编号: 1004⁃373X(2015)07⁃0135⁃04
0 引 言
随着智能交通技术的发展,城市交通管理系统和公路交通管理系统的自动化、智能化水平在不断提高,视频监控设备、电子拍照设备、移动监测设备被广泛地布设在路网中的观测站、收费站及重要路口,通过车牌自动识别技术可以从这些设备获取图片、视频中提取车牌
信息。当前,我国城市路网和国道、省道等公路网每天都在获取超过百万计的车辆检测信息,包括车牌号、车辆通过路口的时刻、路口ID等。然而这些信息却没有得到足够的重视和高效的利用,当前的车牌利用停留在车速测量、不停车收费、交通违章的初级阶段,未能从网络化、全局化、轨迹化的角度来分析利用车牌数据,造成了车牌资源的很大浪费。
近年来,ITS技术的发展使牌照自动识别技术更加完善,车牌捕获率和识别率有了显著提高,车牌号作为全世界惟一对车辆身份进行识别的标识,它的特殊性和重要性决定了车牌识别系统成为城市智能交通管理系统中不可或缺的重要组成部分。通过对比同一辆车经过上下游路口车牌被识别到的时刻,可以对一辆车连续通过两个路口的旅行时间进行计算[1],可以分析该路段的交通状态[2⁃3]、延误、路段服务水平等交通分析评价指标,还可以分析车辆的出行轨迹[4]等,而这些分析的前提是要对得到的车牌号进行匹配、处理。
现在的车牌识别系统虽然有了很大的发展,但是由于车牌的污损、模糊、遮挡、天气等原因,识别车牌的准确率达到100%是不可能的。如果车牌没有被正确读取,精确的车牌匹配会损失掉这部分数据,影响后续工作的完成,因此选用合适的方法对车牌进行匹配显得尤为重要。
本文设计的车牌匹配方法采用多级匹配策略:一级匹配,限定车牌经过上下游交叉路口的时间间隔;二级匹配,车牌模糊匹配、设定阈值,增加匹配成功率;三级匹配,异常数据剔除。通过北京市某路段的实测数据进行验证。图1为车牌多级匹配流程框架图。
图1 多级匹配流程框架图
1 限定时间间隔
车牌数据为车辆通过停车线后检测区域时识别得到,车辆通过每个路口时,其车牌将被识别并存储。车辆正常行驶,经过上下游路口的间隔时间是在一定范围内的,如果间隔时间过大,则不能进行有效地车牌匹配数据。原因在于:上下游交叉口获取的相同车牌数据可能来源于车辆的二次出行,甚至是多次出行。在限定的时间间隔内进行车牌匹配,可以有效地减少这种情况的发生。对于交通量大的路口,每天都有海量的车牌数据,在匹配之前限定范围,可以大大减少车牌匹配的工作量,加快匹配速度。车牌识别系统中可能出现如“京A12345”、“京A12845”,这种情况有可能源于车牌系统识别错误,将3识别为8,也有可能本身就是两个不同的车牌,限定时间间隔可以减少这种情况出现的匹配误差。限定车牌经过上下游交叉路口的时间间隔可以很好地提高基础数据的质量。
假定当前路口有一要匹配的车牌[A,]在下游路口选取10 min(可以根据上下游路口的路段长度及交通状况等进行调整)内的车牌数据进行匹配,这样减少了匹配的工作量,同时提高了匹配的准确率。
2 模糊匹配算法
现阶段的车牌匹配大多采用精确匹配,车牌的精确匹配是指查的车牌与搜索到的车牌完全相同,是最理想的匹配方式。但是,这种方法匹配要求严格,存在一些弊端,当车牌识别错误时,无法返回匹配结果,不能满足研究的需要,故需要寻一种匹配率较高的方法。
2.1 编辑距离的定义
本文拟采用“编辑距离”[7⁃8]的概念实现模糊字符串的匹配。通俗地讲,编辑距离算法是指两个字符串之间,由一个字符串通过一些编辑操作可以变换成另外一个字符串所需要的最少编辑次数。这里的编辑操作包括从字符串中删除、插入、更改一个字符,称为一个编辑距
离,它能够体现两个字符串的差异。
起始的编辑距离是0,然后操作一次编辑距离就加1,直到这个字符串已经完全变成另外一个字符串。操作的次数越多,那么编辑距离就越大,最少操作次数代表了最精确的操作,也就是变换过程中的最优解。
汽车牌照 例如将kid变换成king,可以按照这样的步骤转变:
(1) 将kid中的第三个字符d变成n(kid→kin);
(2) 在kin的后面添加g(kin→king)。
经过了2次编辑操作,那么kid到king的编辑距离为2。
通过计算编辑距离,可以得出最佳匹配。
2.2 算法实现
车牌字符串具有如下的特点:
(1) 汽车牌照的位数固定,一般为7位,最多的如武警车牌(WJ01⁃12345)等极少数为9位。
(2) 对汽车牌照进行模糊匹配时与字符串有所不同,字符的匹配顺序不能颠倒。
基于车牌的特性,车牌匹配的编辑操作不能有删除、插入,只考虑从字符串中将一个字符改为另一个字符的操作。
假设现在已求得A的前[i-1]个字符编辑成B的前[i-1]个字符的最短编辑距离,此时如果A、B的第i个字符相同,显然无需任何字符操作就可以在原来的基础上得到A、B的前i个字符相同,此时的编辑距离就是[Di=Di-1];如果A、B的第i个字符不相同,则可以通过更改A的第i个字符为B的第i个字符,此时也可以在原来的基础上使得A、B的第i个字符相同,由于只做了一个修改操作,因此[Di=Di-1+1。]
综上所述[D(i)]的递推公式如下:
[D(i)=0,i=0MIND(i-1),D(i-1)+1,A(i)=B(i)A(i)≠B(i)] (1)
假定待匹配的车牌号是[A,]它是一串字符串设为[A{a1,a2,…,ai,…,am}]([7≤m≤9]),在数据库中等待要匹配的车牌号有n个,放在集合[S{B1,B2,…,Bj,…,Bn}][(0
算法的思想是将待匹配的车牌号[A]的第一个字符与数据库中的[Bj]的第一个字符进行匹配,若相等,则[D(1)=0;]若不相等,则[D(1)=1。]继续比较A的第二个字符和[Bj]的第二个字符;依次比较下去,直到字符串匹配完成,得到A和[Bj]的编辑距离[D(j)。]车牌数据库中有n个待匹配的车牌,需要依次求出A与这n个车牌的编辑距离,编辑距离越小,其匹配度越高,要想得到一个与A匹配度最高的车牌,需要取A和[Bj]的编辑距离的最小值,即[D(A,Bj)=min{D(j)}。]
用C#代码来实现A和某一[Bj]的编辑距离,如下:
private int Levenshtein_Distance(string A, string Bj)
{
int n;
int j = 1;
int[] D;
for (j = 1; j
{
int m;
int temp = 0;
char ch1;
char ch2;
int i = 1;
D = new int[m + 1];
D[i] = 0;
for (i = 1; i
{
ch1 = A[i - 1];
ch2 = Bj [i - 1];
if (ch1.Equals(ch2))
{
temp = 0; //字符相同
}
else
{
temp = 1; //字符不同
}
D[i] = D[i - 1] + temp;
}
D[j]=D[i];
return D[j];
}
}
2.3 匹配方案
如何从海量的数据库中搜索出需要匹配的车牌。解决这个问题之前,必须首先解决串的相似性如何定义。俄国的Vladimir Levenshtein在1965年就提出了用编辑距离[5]的概念来描述两个字符串的相似程度,因此编辑距离又称Levenshtein距离。编辑距离越小,其相似程度
越高。编辑距离越大,其相似程度就越低。假设字符串的最大长度为L,编辑距离为[D(A,Bj),]相似度为S,那么:
[S=1-[D(A,Bj)]L] (2)
在当前技术下,车牌识别系统的识别率达不到100%,在车牌识别中可能将车牌“京CE0192”识别为 “京CEQ792”,这实际为同一车牌,为了提高匹配的效率,设定其相似度在一定的范围。将阈值设为0.6,即[S>0.6]时,两个车牌之间是匹配的。其中[S=1]时,[A]到[Bj]的操作次数是0,也就是完全匹配。
在交通流量比较大的路口,车牌数据比较多,每一次匹配都是海量数据,车牌匹配速度的快慢影响其设计系统的效率。车牌具有一些其他字符串没有的特性,“京B12345”和“京C83345”在第4个字符时编辑距离为3,相似度已经超过了设定的阈值0.6,为了提高速度,这两个车牌没有必要匹配下去,可以大大的提高其效率。
发布评论