一种车牌字符识别方法转让专利

申请号 : CN201210587347.1

文献号 : CN103065137B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李红波范高生

申请人 : 四川九洲电器集团有限责任公司

摘要 :

本发明提出了一种新的车牌字符识别的方法,采用canny算法和二值图像结合的方法来识别字符。并且识别时由于提取出了字符的边缘和跳变信息,再将字符边缘像素的跳变与模板字符集的跳变做匹配,找到匹配度最高的模板字符,进而获得字符的识别结果。这种基于跳变的字符识别,较好地解决了各种干扰下字符识别问题,可以有效克服各种干扰因素,保持较为稳定的高识别率。并且,由于对标准的canny算法做了简化,大大提高了识别的效率,减少了占用的系统资源,提高了识别速度。

权利要求 :

1.一种车牌字符识别方法,将车牌灰度图像分割为若干字符区域,对每一个字符区域的灰度图像Ichar按照如下步骤顺序进行处理:A、对Ichar求自适应阈值;

B、对Ichar采用Canny算法确定字符边缘图像Iedge;

C、对上述字符边缘图像Iedge进行填充空洞;

D、再次确定上述字符边缘图像Iedge的边界;

E、对上述Iedge进行归一化处理;

F、计算字符边缘的水平跳变序列SHori和垂直跳变序列SVert,并根据上述水平跳变序列SHori和垂直跳变序列SVert确定上跳变数密度Hop_DensityTop、下跳变数密度Hop_DensityBottom、左跳变数密度Hop_DensityLeft、右跳变数密度Hop_DensityRight,并进一步确定上下跳变数密度比Hop_DensityTop/Bottom和左右跳变数密度比Hop_DensityLeft/Right;

G、将上述F步骤中确定的上述水平跳变序列SHori、垂直跳变序列SVert、上下跳变数密度比Hop_DensityTop/Bottom和左右跳变数密度比Hop_DensityLeft/Right与从字符模板集中读取到的当前字符模板的水平跳变序列SMHori、垂直跳变序列SMVert、上下跳变数密度比Hop_Density_MTop/Bottom、左右跳变数密度比Hop_Density_MLeft/Right进行一一匹配,找到匹配度最高的字符索引值,完成字符识别。

2.如权利要求1所述的车牌字符识别方法,进一步包括在上述步骤B中采用canny算法获取字符边缘图像,具体为:B1、采用3*3的模板,求当前像素点P上下、左右、两条斜对角线的梯度G1、G2、G3、G4,各梯度方向所对应的算子分别为H1、H2、H3、H4:根据Gmax=MAX(G1,G2,G3,G4)找到当前像素点P的最大梯度,并判断当前像素点P是否同时满足最大梯度大于预定最小边缘值和P的灰度值是否大于上述自适应阈值,如果是则标记判定为边缘点,Iedge标记为1;如果不是则判定为不是边缘点,Iedge标记为0;

B2、回到步骤B1,重复此过程,直到遍历完毕,最终获得边缘图像Iedge。

3.如权利要求2所述的车牌字符识别方法,进一步包括上述步骤C中对字符边缘图像Iedge填充空洞的方法为:C1、在Iedge中,获得当前像素点Pij;

C2、如果Gray(Pij)==0,则以Pij为中心取一个3×3的窗口,窗口内像素值构成矩阵W3×3,定义算子 求二者的数量积Cij=W3×3·H,当Cij≥6,就在Iedge中将Pij置为边缘点;其中Gray(P)为P点的灰度值;

C3、回到步骤C1,重复此过程,直到遍历完毕。

4.如权利要求3所述的车牌字符识别方法,进一步包括在上述步骤D中再次确定上述字符边缘图像Iedge的边界的方法为:D1、从上到下行遍历以确定Iedge的上边缘位置索引IndexTop;

D2、从下到上行遍历以确定Iedge的下边缘位置索引IndexBottom;

D3、从左到右行遍历以确定Iedge的左边缘位置索引IndexLeft;

D4、从右到左行遍历以确定Iedge的右边缘位置索引IndexRight。

5.如权利要1-4之一所述的车牌字符识别方法,进一步包括上述步骤G中与字符模板集匹配的方法如下:

1)在字符模板集中获取当前字符模板Tamplatei,得到其水平跳变序列SMHori、垂直跳变序列SMVert、上下跳变数密度比Hop_Density_MTop/Bottom、左右跳变数密度比Hop_Density_MLeft/Right;

2)SHori与SMHori做匹配,得到匹配度M1;

3)SVert与SMVert做匹配,得到匹配度M2;

4)Hop_DensityTop/Bottom与Hop_Density_MTop/Bottom做匹配,得到匹配M3;

5)Hop_DensityLeft/Right与Hop_Density_MLeft/Right做匹配,得到匹配度M4;

6)计算总的匹配度Mti:Mti=w1M1+w2M2+w3M3+w4M4其中,w1、w2、w3、w4分别为M1、M2、M3、M4权重,其权重数值可根据具体图像的不同自定义;

7)回到步骤1),重复此过程,直到遍历完毕;

8)取Indexm为{Mt1,Mt2,…,Mti,…,Mtn}中最大值的索引值,Indexm即为最终识别结果。

说明书 :

一种车牌字符识别方法

所属技术领域:

[0001] 本发明专利涉及车牌识别系统中的一种字符识别方法,属于图像处理技术领域。背景技术:
[0002] 随着我国国民经济的快速发展,对道路交通管理的要求逐步提高,智能交通系统应运而生。在智能交通系统中,在准确定位车牌和字符分割后,通过车牌识别系统进行字符识别才最终完成完整的车牌识别,因此字符识别的好坏对字符识别率起着至关重要的作用。因此,作为智能交通系统的重要组成部分,车牌识别系统获得了快速发展,被国内外学者广泛研究。车牌识别系统分为图像获取、车牌定位、字符分割、字符识别四部分,其中字符识别是本行业各企业的研发重点。在字符特征提取方面,需要抑制各种干扰,比如光照不均匀、字符的旋转与形变、笔画粗细不一致及断裂或粘连等情况,才能提取出稳定的字符特征,最终完成字符识别。
[0003] 现有技术中常用阈值来获得二值图像,在光线不均匀时识别率不高,并且原有的算法步骤较多,进行识别时占用的系统资源过高,识别速度不高;同时,对于因为车辆转弯、拍摄角度等造成车牌倾斜、车牌字符笔画断裂、字符污损、低光照时的噪声等,均会造成识别率下降。发明内容:
[0004] 为了提高字符的识别率,本发明提出了一种新的车牌字符识别的方法,采用canny算法和二值图像结合的方法来识别字符,并对标准的canny算法做了简化,具体如下:
[0005] 首先将车牌灰度图像分割为若干字符区域,对每一个字符区域的灰度图像Ichar按照如下步骤顺序进行处理:
[0006] A、对Ichar求自适应阈值;
[0007] B、对Ichar采用Canny算法确定字符边缘图像Iedge;
[0008] C、对上述字符边缘图像Iedge进行填充空洞;
[0009] D、再次确定上述字符边缘图像Iedge的边界;
[0010] E、对上述Iedge进行归一化处理;
[0011] F、计算字符边缘的水平跳变序列SHori和垂直跳变序列SVert,并根据上述水平跳变序列SHori和垂直跳变序列SVert确定上跳变数密度Hop_DensityTop、下跳变数密度Hop_DensityBottom、左跳变数密度Hop_DensityLeft、右跳变数密度Hop_DensityRight,并进一步确定上下跳变数密度比Hop_DensityTop/Bottom和左右跳变数密度比Hop_DensityLeft/Right;
[0012] G、将上述F步骤中确定的上述水平跳变序列SHori、垂直跳变序列SVert、上下跳变数密度比Hop_DensityTop/Bottom和左右跳变数密度比Hop_DensityLeft/Right与从字符模板集中读取到的当前字符模板的水平跳变序列SMHori、垂直跳变序列SMVert、上下跳变数密度比Hop_Density_MTop/Bottom、左右跳变数密度比Hop_Density_MLeft/Right进行一一匹配,找到匹配度最高的字符索引值,完成字符识别。
[0013] 采用本发明的方法对车牌字符灰度图像进行处理,由于提取出了字符的边缘和跳变信息,再将字符边缘像素的跳变与模板字符集的跳变做匹配,找到匹配度最高的模板字符,进而获得字符的识别结果。这种基于跳变的字符识别,较好地解决了各种干扰下字符识别问题,可以有效克服各种干扰因素,保持较为稳定的高识别率。并且,由于对标准的canny算法做了简化,大大提高了识别的效率,减少了占用的系统资源,提高了识别速度。具体实施方式:
[0014] 本发明的方法是首先对车牌灰度图像进行字符分割,将车牌图像分为若干个字符区域,对每一个字符区域的灰度图像Ichar重复以下操作,最终获得每个字符 在预定模板字符集中的索引值Indexm,以此完成对所有字符的识别。其中,预定的模版字符集可以根据需要识别的车牌字符是数字、字母、汉字、字体等情况自定义(例如,可以包括各省简称,26个英文字母大小写,数字,根据需要还可以设定其他文字或其他语言)。具体对灰度图像Ichar的处理步骤如下:
[0015] 1.对Ichar求自适应阈值T
[0016] 2.对Ichar采用Canny算法获取字符边缘图像Iedge
[0017] 1)采用3*3的模板,求当前像素点P上下、左右、两条斜对角线的梯度G1、G2、G3、G4,各梯度方向所对应的算子分别为H1、H2、H3、H4:
[0018]
[0019] 2)找到最大的梯度Gmax=MAX(G1,G2,G3,G4),并用下面的方式标记P点:
[0020] if((Gmax≥MIN_EDGE_GRADIENT)&&(Gray(P)≥T))
[0021] {
[0022] P为边缘点,在Iedge中标记为1;
[0023] else
[0024] {
[0025] P为非边缘点,在Iedge中标记为0;
[0026] 即根据Gmax=MAX(G1,G2,G3,G4)找到当前像素点P的最大梯度,并判断当前像素点P是否同时满足最大梯度大于预定最小边缘值和当前像素点的灰度值是否大于上述自适应阈值,如果是则标记判定为边缘点,Iedge标记为1;如果不是则判定为不是边缘点,Iedge标记为0。
[0027] 其中Gray(P)为P点的灰度值,MIN_EDGE_GRADIENT默认为15, 可根据所拍摄图像类型的不同取不同的值。
[0028] 3)回到步骤1),重复此过程,直到遍历完毕,最终获得边缘图像Iedge。
[0029] 3.对字符边缘图像Iedge填充空洞,以消去对字符跳变计算的影响。具体为[0030] 1)在Iedge中,获得当前像素点Pij;
[0031] 2)如果Gray(Pij)==0,则以Pij为中心取一个3×3的窗口,窗口内像素值构成矩阵W3×3,定义算子 求二者的数量积Cij=W3×3·H,当Cij≥Tc(Tc=6),就在在Iedge中将Pij置为边缘点。
[0032] 3)回到步骤1,重复此过程,直到遍历完毕。
[0033] 4.重新计算字符边缘图像的边界,这样做的目的是为了消除边界噪声的影响[0034] 1)找Iedge的上边缘位置索引IndexTop
[0035] 方法:从上到下行遍历,直到行边缘点数NumHori≥Tnum,Tnum=1;
[0036] 2)找Iedge的下边缘位置索引IndexBottom
[0037] 方法:从下到上行遍历,直到行边缘点数NumHori≥Tnum,Tnum=1;
[0038] 3)找Iedge的左边缘位置索引IndexLeft
[0039] 方法:从左到右列遍历,直到列边缘点数NumVert≥Tnum,Tnum=1;
[0040] 4)找Iedge的右边缘位置索引IndexRight
[0041] 方法:从右到左列遍历,直到列边缘点数NumVert≥Tnum,Tnum=1。
[0042] 5.对Iedge做归一化处理,以降低对字符分割精度的要求
[0043] 1)IndexTop、IndexBottom、IndexLeft、IndexRight四个边界所确定的图像为 Idivided_edge,将Idivided_edge做尺寸归一化,使其宽高与字符模板的宽高相等,得到Inormal_edge;
[0044] 2)记录Inormal_edge的高度Height,宽度为Width。
[0045] 3)
[0046] 6.计算字符边缘的水平和垂直跳变序列SHori和SVert,并获取上下跳变数密度Hop_DensityTop、Hop_DensityBottom、左右跳变数密度Hop_DensityLeft、Hop_DensityRight,上下跳变数密度比Hop_DensityTop/Bottom和左右跳变数密度比Hop_DensityLeft/Right
[0047] 1)获取水平跳变序列SHori
[0048] 方法:从上到下行遍历Inormal_edge所有行,对于第j行Rj,如果存在点Pi(Pi-1=0,Pi=1),则Rj上的跳变数Hopj加1(Hopj初值为0),这样遍历完所有的行(R1,R2,..,Rj,..,RHeight),得到水平跳变序列SHori={Hop1,Hop2,..,Hopj,...,HopHeight};
[0049] 2)获取垂直跳变序列SVert
[0050] 方法:从左到右列遍历Inormal_edge所有列,对于第j列Cj,如果存在点Pi(Pi-1=0,Pi=1),则Cj上的跳变数Hopj加1(Hopj初值为0),这样遍历完所有的列(C1,C2,..,Cj,..,CWidth),得到垂直跳变序列SVert={Hop1,Hop2,..,Hopj,...,HopWidth};
[0051] 3)获取上下跳变数密度Hop_pensityTop、Hop_DensityBottom
[0052] (k默认值为Height/2,Hopj∈SHori)
[0053]
[0054] (k默认值为Height/2,h=Height,Hopj∈SHori)
[0055] 4)获取左右跳变数密度Hop_DensityLeft、Hop_DensityRight