一种车牌字符切割方法与流程

文档序号:11143311阅读:938来源:国知局
一种车牌字符切割方法与制造工艺

本发明属于智能交通技术领域,具体是一种在车牌图像预处理之后的基于投影的单行车牌字符切割的车牌字符切割方法。



背景技术:

车牌字符切割是车牌识别系统重的重要环节,字符切割的准确率直接决定车牌字符识别的准确率。垂直投影法是解决车牌字符切割问题的一种方法,该方法主要用到了车牌二值化图像的水平以及垂直投影直方图,根据直方图中的波峰波谷的变换规律确定每个字符的边界。该方法的缺点是无法直接处理字符粘连、字符断裂、错误字符等情况,用于切割清晰度不高或是污渍较多的车牌效果较差。

为了改善车牌字符切割的准确度,国内许多学者提出了改进的基于投影的车牌字符切割方法,与本发明最为相近的方案包括:冉令峰(基于垂直投影的车牌字符切割方法[J].通信技术,2012,45(04):89-91)首先通过垂直投影切割法得到所有可能的字符,然后根据获得的字符个数,判断是否存在字符粘连或是字符断裂的情况,如果字符数小于7,则认为存在字符粘连的情况,然后找到该粘连字符投影值最小的区域进行字符切割,如果字符数大于7,则认为切割结果存在字符断裂情况,通过合并中心点距离最小且中心点距离小于先验字符宽度的字符对,解决字符断裂问题。该方法的不足之处是:(1)该方法没有给出车牌上下边界精确定位的方法,直接进行车牌切割会受到车牌边框的干扰,导致切割结果不准确;(2)该方法在没有进行错误字符的筛选前提下,直接根据字符数判断是否存在字符粘连或是断裂是不可靠的;(3)该方法根据粘连字符区域中的最小投影点进行粘连字符的切割是不准确的,因为粘连区域不一定就是投影值最小的区域,同时部分字符也存在投影值较小的区域,如“H”;(4)该方法通过将距离较近的字符对进行合并解决字符断裂问题,没有考虑车牌可能存在污渍的情况,会造成断裂字符、“1”与边框、污渍错误合并的情况。路敬祎等(基于改进的连通域算法与垂直投影相结合的车牌字符分割[J].模式识别与仿真,2015,34(12):93-97)首先通过分析车牌二值化图像的行黑白跳变数以及行像素值进行车牌水平切割,精确定位车牌上下边界,然后利用连通域算法进行车牌字符的粗略定位,利用垂直投影法进行车牌字符的精确定位,同时对可能出现的字符粘连和字符断裂情况给出了解决方案,与本发明的不同之处在于:(1)该方法的水平切割方法是对整个车牌二值化图像进行分析,而本发明的水平切割方法是以车牌二值化图像的中心区域为感兴趣的区域进行分析,避免了边框干扰,同时本发明还进行了车牌上下边界的二次定位,字符区域的定位更加准确;(2)该方法没有给出错误字符筛选的方案;(3)该方法根据粘连字符的投影值结合计算得到的字符标准宽度进行粘连字符切割;(4)该方法通过试探合并法进行断裂字符修复,如果合并后字符宽度满足要求,则保留合并结果,没有进行错误字符的筛选,会出现字符与污渍、边框错误合并的情况。陈涛等(基于投影和固有特征的车牌字符分割方法[J].计算机技术与发展,2009,19(5):45-47)首先通过黑白跳变法进行定位车牌上下边界的定位,然后根据车牌的固有特征,估算出第三个字符左边界的大概位置,进而根据车牌的垂直投影信息将该位置右边的字符切割出来,并对切割出来的字符集进行字符筛选、粘连字符的分割、断裂字符的合并,从而得到车牌后5个字符,然后根据后5个字符估算出字符的标准宽度,用于前两个字符定位。与本发明的不同之处在于:(1)该方法的水平切割方法只是基于黑白跳变法,而本发明的水平切割方法是以图像中心区域为感兴趣区域,结合黑白跳变法和投影值阈值法进行分析的,同时还进行了上下边框的二次定位;(2)该方法取车牌宽度的一定比例长度作为字符先验宽度,同时第三个字符左边界也是按照车牌宽度的一定比例进行估算,如果车牌定位不准确,则字符先验宽度和字符位置估算误差较大,直接影响字符切割的准确度;(3)该方法通过找到粘连字符区域中两个最大投影点中间的最小投影点作为切割点,进行粘连字符的切割,对于特殊的字符会存在误切情况;(4)该方法处理断裂字符的方法是,通过将宽度过小,间距过小的字符对进行合并,如果合并后的字符满足字符宽度要求,则进行保留,会出现字符与污渍、边框错误合并的情况。发明专利(申请号:201110454129.6,名称:一种车牌字符分割的方法)首先通过逐行逐列分析投影值,找到车牌的上下左右边框,进行车牌精确定位,然后根据像素点间距逐行进行像素点聚类,确定所有可能字符,并去除高度过小的字符,对于超过设定的宽度阈值的粘连字符,根据字符区域投影值最小点进行粘连字符切割,如果字符集数量大于7,则选取字符集方差最小的7个字符作为正确的字符,最后对宽度过大的字符进行位置调整,与本发明的不同之处在于:(1)该方法的水平切割方法是基于投影值阈值法;(2)该方法通过像素点聚类的方法确定可能字符;(3)该方法根据粘连字符区域的投影值最小点进行字符切割,会造成误切割的情况;(4)该方法通过找到方差最小的字符集进行字符筛选,可靠性不高;(5)该方法没有给出断裂字符的处理方案。发明专利(申请号:201510459955.8,名称:一种车牌字符分割的方法及装置)首先采用垂直投影法进行字符粗定位,然后对大于预设宽高比阈值的粘连字符进行二次切割,切割方法为首先对粘连字符区域进行二值化、腐蚀操作,然后使用垂直投影法进行切割,同时该方法还给出了解决断裂字符的方案,即首先找出所有小于一定宽高比阈值的过切割字符,然后根据字符间距,合并后的字符宽度判断是否进行字符合并,同时还对边框、间隔点切割快进行了剔除,最后该方法还给出了判断车牌类型的方法,与本发明不同之处在于:(1)该方法没有给出水平切割的处理方案;(2)通过投影法进行粘连字符的处理,会造成误切割的情况;(3)判断断裂字符和筛选错误字符的方法与本发明不同。发明专利(申请号:201110405227.0,名称:一种车牌字符分割方法)首先根据黑白跳变法进行车牌上下边框的精确定位,然后根据车牌图像的垂直投影信息,动态调整阈值进行字符分割,直至切割出来的字符集数量在[7,15]范围内,然后将字符集中宽度过小和像素点过小的字符进行剔除,最后根据字符宽度和字符中心点距离,找到第一个或是第二个字符,进而推算出其他字符,与本发明的不同之处在于:(1)该方法的水平切割方法是基于黑白跳变法;(2)该方法通过动态调整阈值进行字符切割,以保证切割结果不存在字符粘连的情况,但该方法不能保证成功分割粘连字符,而且当在阈值过大时,会造成正确字符误切割的情况;(3)该方法没有给出除汉字之外的其他字符的断裂字符修复方案;(4)该方法在找到第一个或是第二个字符后,对于其后的切割块直接进行顺序保留,没有考虑到字符断裂和字符缺失的情况。

综上所述,当前字符切割方法存在着如下不足之处:(1)部分方法没有进行车牌水平切割,或是切割方法不够精确,这直接影响后续字符切割的准确度;(2)部分方法没有进行错误字符的筛选,这会导致后续粘连字符和断裂字符的误处理;(3)大多数方法通过最小投影值点分割法处理粘连字符,对于粘连严重的字符和特殊字符存在误切割的情况;(4)部分方法对于找到的7个切割块直接进行保留,没有考虑字符可能却在杂质粘连、字符缺失、定位不精确等问题;(5)部分方法参考的的字符标准宽度、字符间距等数据是固定的或是按照车牌宽度的一定比例确定,如果车牌定位不准确,则这些数据会出现较大误差,直接影响算法的精度。



技术实现要素:

为了克服基于投影的直接切割方式的不足,本发明的目的是提供一种一种车牌字符切割方法,它是基于投影的字符切割方法,该方法在切分字符的基础上实现了断裂字符的修复、粘连字符分割、字符的精确定位等过程,该方法不包括车牌图像预处理过程,如车牌图像的灰度、滤波、二值化、倾斜校正等。

所述的一种车牌字符切割方法,其特征在于包括如下步骤:

步骤1:获得经过车牌定位、倾斜校正、灰度、滤波和二值化算法处理后的白底黑字的车牌二值化图像D,其中图像的宽度为wh1,高度为ht1,单位为像素;

步骤2:用基于投影的水平切割方法进行车牌字符区域的精确定位,确定车牌字符区域Dc

步骤3:进行字符切割,得到字符集C={ci|ci=(li,ri,ai,bi);i=0,1,…,N-1},其中,li,ri,ai,bi分别表示字符ci的左右上下边界,N表示集合C中元素的个数;

步骤4:根据字符集C重新调整车牌字符区域Dc,具体为:

步骤4.1:计算出字符集C对应的字符宽度集W和字符的最适宽度具体为:

步骤4.1.1:根据公式(14),得到字符集C对应的字符宽度集W;

W={wi|wi=ci.r-ci.l+1,ci∈C,i=0,1,…,N-1} (14)

步骤4.1.2:根据公式(15)-(16),得到字符宽度集W',N'w表示集合W'中元素的个数;

wa=cN-1.r-c0.l+1;cN-1,c0均∈C (15)

其中,wa表示最右侧字符的右边界和最左侧字符的左边界的距离;

步骤4.1.3:将字符宽度集W'中元素按照从小到大的顺序进行排序,然后不断剔除掉W'中最大和最小的元素,直至W'中元素的个数小于5,根据公式(17)得到集合W'中元素的平均值,记为aw0

步骤4.1.4:根据公式(17)-(19),计算出集合W'中所有元素的方差集Vw和标准差sw

Vw={vi|vi=(wi-aw)2,wi∈W',i=0,1,…,N'w-1} (18)

其中,aw表示W'中所有字符宽度的平均值;

步骤4.1.5:若标准差sw<0.6且N'w>1,则跳至步骤4.2执行;若标准差sw<0.6且N'w=1,则跳至步骤4.2执行;若标准差sw≥0.6,则继续执行步骤4.1.6;

步骤4.1.6:剔除掉W'中对应方差最大的元素,然后返回步骤4.1.4执行;

步骤4.2:根据公式(20)得到字符集C1,字符集C1中元素个数为N1

步骤4.3:统计出集合C1中满足ci.a=0的字符个数Na以及满足ci.b=htc-1的字符个数Nb

步骤4.4:若则根据公式(21)计算出车牌上边界a,否则令a=0;若则根据公式(22)计算得出车牌上边界b,否则令b=htc-1;若且则直接跳至步骤6执行;

步骤4.5:根据公式(23)调整车牌所在区域Dc,根据公式(24)更新区域Dc的高度htc

Dc={(x,y)|x∈[a,b],y∈[0,wh1),(x,y)∈Dc} (23)

htc=b-a+1 (24)

步骤5:对步骤4确定的车牌区域Dc,根据步骤3重新进行字符集定位,得到新的字符集C={ci=(li,ri,ai,bi)|i=0,1,…,N-1},N表示集合C中元素的个数;

步骤6:解决字符断裂问题,具体为:

步骤6.1:根据步骤4.1,得到字符集C对应的字符宽度集W和字符最适宽度

步骤6.2:计算得到字符集C对应的字符中心点间距集合M和最适字符中心点间距具体为:

步骤6.2.1:根据公式(25),得到字符中心点间距集合M,集合M的元素个数为Nm

步骤6.2.2:根据公式(26),得到中心点间距集合M′,并根据公式(27),得到集合M′中元素的平均值,记为am0

步骤6.2.3:根据公式(27)-(29),得到集合M′中所有元素的方差集Vm和标准差sm

Vm={vi|vi=(mi-am)2,mi∈W',i=0,1,…,Nm-1} (28)

其中,am表示M′中所有字符宽度的平均值;

步骤6.2.4:若集合M′中元素的个数3,则更新am0=am;

步骤6.2.5:若标准差sm<1.2且Nm>1,则跳至步骤6.3执行;若标准差sm<1.2且Nm=1,则跳至步骤6.3执行;若标准差sm≥1.2,则继续执行步骤6.2.6;

步骤6.2.6:剔除掉集合M′对应方差最大的元素,然后返回步骤6.2.3执行。

步骤6.3:根据字符对的中心点间距、字符高度和字符宽度分析出断裂字符和错误字符,并实现断裂字符的修复和错误字符的剔除,具体为:顺序遍历集合M中除首尾元素外的元素mi,i=1,2,…,Nm-2,若则ci和ci+1是断裂字符对或存在错误字符,需进一步根据满足式(30)-(34)判断字符对属于何种情况,若满足式(32),则需要剔除字符ci;若满足式(33),则需要剔除字符ci+1;若满足式(33),则字符ci和ci+1可以进行合并;

hx=cx.b-cx.a+1;cx∈C,x=0,1,…,N-1 (30)

Y(x,y)=cy.r-cx.l+1;cx,cy∈C,x=0,1,…,N-1,y=0,1,…,N-1 (31)

其中,hx表示字符cx的高度,Y(x,y)表示集合C中字符cx的左边界和字符cy的右边界之间的距离;

步骤6.4:对字符集C进行更新,得到解决了断裂问题后的字符集C,字符集C中元素的个数为N;

步骤7:解决字符粘连问题,具体为:

步骤7.1:根据步骤4.1,得到字符集C对应的字符宽度集W和字符最适宽度

步骤7.2:根据步骤6.2,得到字符集C对应的字符中心点间距集合M和最适字符中心点间距

步骤7.3:顺序遍历字符集C中所有字符ci,i=0,1,…,N-1,若字符ci满足式(38),则字符ci是粘连字符,进一步根据满足式(40)-(43)判断该字符属于何种字符粘连情况,再分别进行处理:

A.若字符ci满足式(40),则认为该字符是错误字符,不进行分割;

B.若字符ci满足式(41),则认为该字符是二字符粘连字符,需要进一步根据满足式(44)-(46)判断该字符是何种二字符粘连情况,再分别进行处理:

a.若字符ci满足式(44),则认为该字符是两个“1”字符粘连的情况,将字符ci分割为和两个字符;

b.若字符ci满足式(44),则认为该字符为“1”字符和非“1”字符粘连的情况,将字符ci分割为和两个字符;

c.若字符ci满足式(45),则认为该字符为非“1”字符和“1”字符粘连的情况,将字符ci分割为和两个字符;

d.若字符ci满足则认为该字符为两个非“1”字符粘连的情况,将字符ci分割为和两个字符;

C.若字符ci满足式(42),则认为该字符是三字符粘连字符,将字符ci分割为三个字符;

D.若字符ci满足式(43),则认为该字符是四字符粘连字符,将字符ci分割为四个字符;

(i=0或i=N-1)且(hi<0.6×htc或ti>0.8×wi×htc);wi∈W (40)

其中,di表示字符ci左侧字符的右边界与其右侧字符的左边界的距离,dLi表示字符ci左边界与其左侧字符右边界的距离,dRi表示字符ci右边界与其右侧字符左边界的距离,ti表示字符ci中黑色像素点的个数,hi根据公式(30)计算得到,表示字符ci的高度;

步骤7.4:对字符集C进行更新,得到解决了字符粘连问题后的字符集C,字符集C中元素的个数为N;

步骤8:若N>7,则需要进行字符筛选,转至步骤9执行;否则,直接转至步骤10执行;

步骤9:筛选出正确的7个字符,具体为:

步骤9.1:根据步骤4.1,得到字符集C对应的字符宽度集W和字符最适宽度

步骤9.2:根据步骤6.2,得到字符集C对应的字符中心点间距集合M和最适字符中心点间距

步骤9.3:根据步骤3.2,更新字符集C中所有字符的上下边界;

步骤9.4:确定中心字符cf,cf为字符集C中下标为f的字符,具体为:顺序遍历中心点距离集合M,找到第一个满足的元素,则f可由公式(47)确定;

步骤9.5:筛选出正确的7个字符,保存至字符集C2中,具体为:

步骤9.5.1:若字符cf不符合满足式(48),则认为该字符为正确的字符,将其保存至字符集C2中;

步骤9.5.2:顺序交替的遍历字符集C中位于字符cf两边的字符ci,若字符ci不符合满足式(48),则认为字符ci为正确字符,将其保存至字符集C2中;其中,字符的遍历方式为顺序交替的遍历字符cf两边的字符,即所遍历字符的下标顺序为f-1,f+1,f-2,f+2…,如果完成一侧字符的遍历,则结束交替遍历,继续进行另一侧字符的顺序遍历;每分析完一个字符,需要判断判别式lc+rc+tc=7是否正确,若正确,则默认剩余未判断的字符都为正确字符,直接顺序加到集合C2中;其中,lc表示字符cf左侧未分析的字符数量,rc表示字符cf右侧未分析的字符数量,tc表示当前字符集C2中正确字符的数量;

其中,hi根据公式(30)计算得到,表示字符ci的高度;

步骤9.5.3:对字符集C2中字符按照ci.l从小到大的顺序进行排序,并更新C=C2

步骤10:若N<6,则表示车牌字符切割失败,不再执行下面的步骤;否则,继续执行步骤11;

步骤11:找到字符集C中位置存在位置偏差的字符进行位置修正,实现字符的精确定位,集合U{ui|i=0,1,…,N-1}表示字符集C中字符位置的正确性,ui=-1表示字符ci位置存在偏差,ui=1表示字符ci位置正确,初始ui都为-1,算法的具体过程为:

步骤11.1:根据步骤4.1,得到字符集C对应的字符宽度集W和字符最适宽度

步骤11.2:根据步骤6.2,得到字符集C对应的字符中心点间距集合M和最适字符中心点间距

步骤11.3:若N=6且则认为是第一个字符缺失的情况,估算出第一个字符的位置为并将其加到字符集C的最前端,并重新执行步骤11.1和步骤11.2;

步骤11.4:顺序遍历字符集C,找到字符宽度合理的非粘连字符,即若字符ci满足!Z(i)且则认为该字符位置正确,令ui=1,其中Z(i)返回为true表示ci是由粘连算法分割出来的字符;

步骤11.5:顺序遍历字符集C,若字符ci符合满足式(49),则将该字符下标添加集合K中;

步骤11.6:顺序遍历集合K,若字符cki符合满足式(50),则置ui=1,并将元素ki从集合K中剔除,同时若字符cki-1、cki+1符合满足式(49),则将该字符下标添加至集合K中,不断分析集合K中元素所对应的字符,直至集合K为空;

步骤11.7:首先对车牌后五个字符进行位置修正,具体为:

步骤11.7.1:顺序遍历字符集C,若字符ci符合满足式(51),则将该字符下标添加集合K中;

步骤11.7.2:顺序遍历集合K,若字符符合满足式(52),则可将字符调整为若字符符合满足式(53),则可将字符调整为若字符符合满足式(54),则可将字符调整为若不满足以上条件,且符合条件(i=2或(i>2且i<6且ui+1=1且ui-1=-1)),则可将字符调整为若不满足以上条件,且符合条件(i=6或(i>2且i<6且ui+1=-1且ui-1=1)),则可将字符调整为对完成字符位置修正后,置将元素ki从集合K中剔除,并重新执行步骤11.2,同时若字符符合满足式(51),则将该字符下标添加至集合K中;不断调整集合K中元素所对应的字符,直至集合K为空;

i!=2且i!=6且且ui+1=1且ui-1=1 (54)

步骤11.8:若u0=1且u1=1,则直接跳至步骤12执行,否则对车牌前两个字符进行位置修正,具体为:

步骤11.8.1:若u0=-1且u1=-1,则将字符c1的位置调整为同时置u1=1;

步骤11.8.2:若u0=1且u1=-1,则将字符c1的位置调整为同时置u1=1;

步骤11.8.2:若u0=-1且u1=1,则需根据满足式(55)-(56)进行分情况处理;若字符c0符合满足式(55),则可将字符c0调整为若字符c0符合满足式(56),则可将字符c0调整为否则,可将字符c0调整为

步骤11.9:将字符集C中所有字符ci,i=0,1,…,N-1调整为(ci.a,ci.b,0,htc-1);

步骤12:根据字符集C,确定各个字符在车牌图像区域Dc中的位置,进行字符切割。

所述的一种车牌字符切割方法,其特征在于步骤2中的用基于投影的水平切割方法进行车牌字符区域的精确定位确定车牌字符区域Dc的具体步骤为:

步骤2.1:根据公式(1),得到图像中心区域D1

其中,(x,y)表示区域D1的像素坐标;

步骤2.2:根据公式(2)-(3),得到区域D1中所有行的行像素值集Ph和行黑白跳变数集J,行像素值是指该行黑色像素点个数,黑白跳变是指相邻像素对的灰度值不同,即相邻的两个像素点分别为白色、黑色,或者黑色、白色,行黑白跳变数是该行满足黑白跳边的像素对个数;

其中,px表示区域D1中第x行的行像素值,ptxy表示区域D1中点(x,y)的灰度值,jx表示区域D1中第x行的黑白跳变数;

步骤2.3:确定车牌上边界aL,即从区域D1的中线开始顺序向上遍历区域D1上半区域中的所有行,若第x行满足式(4),则x+1行可以确定为车牌上边界,令aL=x+1;若找不到上边界,则令aL=0;

px>0.8×wh1或px<0.1×wh1或jx<8,其中px∈Ph,jx∈J(4)

步骤2.4:确定车牌下边界bL,即从区域D1的中线开始顺序向下遍历区域D1下半区域中的所有行,若第x行满足式(4),则x-1行可以确定为车牌下边界,令bL=x-1;若找不到下边界,则令bL=ht1-1;

步骤2.5:根据公式(5)确定车牌字符所在区域Dc,根据公式(6)确定区域Dc的高度htc

Dc={(x,y)|x∈[aL,bL],y∈[0,wh1),(x,y)∈D} (5)

htc=bL-aL+1 (6)。

所述的一种车牌字符切割方法,其特征在于步骤3:进行字符切割的具体步骤为:

步骤3.1:确定所有字符的左右边界,具体为:

步骤3.1.1:根据公式(7),得到车牌区域Dc所有列的列像素值集Pv,图像第y列的列像素值py表示y列中黑色像素点的个数;

其中,ptxy表示区域Dc中点(x,y)的灰度值;

步骤3.1.2:顺序遍历列像素值集Pv,确定所有候选字符的满足式(8)的左边界集L={li|i=0,1,…,m}和满足式(9)的右边界集R={ri|i=0,1,…,m};

步骤3.1.3:顺序组合集合L、R中的元素li,ri确定可能字符的左右边界,如果该字符满足式(10),则将该字符(li,ri,0,htc-1)加入到字符集C中;

其中,ptxy表示区域Dc中点(x,y)的灰度值,pci表示li,ri确定字符区域中的黑色像素点个数;

步骤3.2:顺序确定字符集C中所有字符ci的上下边界,i=0,1,…,N-1,具体为:

步骤3.2.1:根据公式(11),得到字符ci所在区域的行像素值集

其中,ptxy表示区域Dc中点(x,y)的灰度值,ci.l表示字符ci的左边界,ci.r表示字符ci的右边界;

步骤3.2.2:顺序遍历行像素值集根据式(12)确定字符ci在垂直方向上的连续字符段集的上边界集Ai={aj|j=0,1,…,mi};根据式(13)确定字符ci在垂直方向上的连续字符段集的下边界集Bi={bj|j=0,1,…,mi},然后将集合A,B中元素两两组合,确定符ci在垂直方向上的连续字符段集Hi={hj|hj=(aj,bj),aj∈Ai,bj∈Bi,j=0,1…,mi};

步骤3.2.3:顺序遍历连续字符段集Hi,找到其中bj-aj最大的字符段,记为hk=(ak,bk),则ak、bk就是字符ci的上下边界,即ci.a=ak,ci.b=bk

本发明针对车牌字符切割过程中可能遇到的各种问题给出了解决方案,显著改善了车牌字符切割的准确率,为后续字符的正确识别提供了保障,与其他方法相比,本发明的优点在于:1)通过分析黑白跳变数和行像素值进行车牌水平切割,并通过切割出来的字符集的上下边界对车牌字符区域进行二次定位,所确定的车牌字符区域更加精确,可以有效避免由于上下边框造成的字符粘连情况;2)根据估算出来的字符宽度进行粘连字符的粗定位,最后通过字符集位置修正的方法,对存在位置偏移的字符进行调整,可以较好的解决字符对粘连问题;3)本发明的字符集筛选步骤是首先找到车牌中间字符,然后从中间字符开始往两边按照交替遍历的顺序进行字符判断,这种方式可以避免对容易误判的边框切割块进行访问,从而快速的找到正确的7个字符;4)本发明给出了字符集位置修正的方案,对存在污渍粘连的较宽字符块、存在缺失的较窄字符块,存在位置偏移的粘连字符块进行位置调整,使字符集定位更加准确;5)本发明对容易遗漏的汉字字符给出了修复方案;6)本发明用于定位和分析的字符参考宽度、中心点距离都是用基于统计的方法动态获取的,更加精确。

附图说明

图1为根据步骤1得到的白底黑字的车牌二值化图像;

图2为根据步骤2.1确定的车牌图像中心区域D1

图3:根据步骤2.2-2.4确定的车牌区域Dc

图4:根据步骤3得到的字符集定位结果;

图5:根据步骤4重新定位确定的车牌区域Dc

图6:执行步骤5之前的字符集定位结果;

图7:根据步骤5进行字符集重新定位后得到的字符集定位结果;

图8:执行步骤6之前的字符集定位结果;

图9:根据步骤6进行断裂字符修复后得到的字符集定位结果;

图10:执行步骤7之前的字符集定位结果1;

图11:根据步骤7进行粘连字符切分后得到的字符集定位结果1;

图12:执行步骤7之前的字符集定位结果2;

图13:根据步骤7进行粘连字符切分后得到的字符集定位结果2;

图14:执行步骤7之前的字符集定位结果3;

图15:根据步骤7进行粘连字符切分后得到的字符集定位结果4;

图16:执行步骤9之前的字符集定位结果;

图17:根据步骤9进行字符筛选后得到的字符集定位结果;

图18:执行步骤11之前的字符集定位结果1;

图19:根据步骤11进行字符位置修正后得到的字符集定位结果1;

图20:执行步骤11之前的字符集定位结果2;

图21:根据步骤11进行字符位置修正后得到的字符集定位结果2;

图22:执行步骤11之前的字符集定位结果3;

图23:根据步骤11进行字符位置修正后得到的字符集定位结果3;

图24:执行步骤11之前的字符集定位结果4;

图25:根据步骤11进行字符位置修正后得到的字符集定位结果4;

图26:执行步骤11之前的字符集定位结果5;

图27:根据步骤11进行字符位置修正后得到的字符集定位结果5。

具体实施方式

下面结合实例来详细阐述本发明,因为本发明涉及车牌切割过程中多个问题的处理,无法通过单一实例进行说明,因此下面将通过多张车牌进行算法的说明。

本发明的一种车牌字符切割方法,其特征在于包括如下步骤:

步骤1:获得经过车牌定位、倾斜校正、灰度、滤波和二值化算法处理后的白底黑字的车牌二值化图像D,其中图像的宽度为wh1,高度为ht1,单位为像素;

根据步骤1得到的白底黑字的车牌二值化图像D,如图1所示。

步骤2:用基于投影的水平切割方法进行车牌字符区域的精确定位,确定车牌字符区域Dc,具体为:

步骤2.1:根据公式(1),得到图像中心区域D1

以图1车牌为例,根据步骤2.1得到的用于水平切割的图像中心区域D1,为图2灰色线条中央的区域。

步骤2.2:根据公式(2)-(3),得到区域D1中所有行的行像素值集Ph和行黑白跳变数集J,行像素值是指该行黑色像素点个数,黑白跳变是指相邻像素对的灰度值不同,即相邻的两个像素点分别为白色、黑色,或者黑色、白色,行黑白跳变数是该行满足黑白跳边的像素对个数;

其中,px表示区域D1中第x行的行像素值,ptxy表示区域D1中点(x,y)的灰度值,jx表示区域D1中第x行的黑白跳变数;

步骤2.3:确定车牌上边界aL,即从区域D1的中线开始顺序向上遍历区域D1上半区域中的所有行,若第x行符合满足式(4),则x+1行可以确定为车牌上边界,令aL=x+1;若找不到上边界,则令aL=0;

步骤2.4:确定车牌下边界bL,即从区域D1的中线开始顺序向下遍历区域D1下半区域中的所有行,若第x行符合满足式(4),则x-1行可以确定为车牌下边界,令bL=x-1;若找不到下边界,则令bL=ht1-1;

px>0.8×wh1或px<0.1×wh1或jx<8;px∈Ph,jx∈J (4)

步骤2.5:根据公式(5)确定车牌字符所在区域Dc,根据公式(6)确定区域Dc的高度htc

Dc={(x,y)|x∈[aL,bL],y∈[0,wh1),(x,y)∈D} (5)

htc=bL-aL+1 (6)

以图2所示车牌为例,根据步骤2.2-2.5进行车牌字符区域的定位,得到的车牌字符区域Dc为图3灰色线条中央的区域。

步骤3:进行字符切割,得到字符集C={ci|ci=(li,ri,ai,bi);i=0,1,…,N-1},其中,li,ri,ai,bi分别表示字符ci的左右上下边界,N表示集合C中元素的个数,具体为:

步骤3.1:确定所有字符的左右边界,具体为:

步骤3.1.1:根据公式(7),得到车牌区域Dc所有列的列像素值集Pv,图像第y列的列像素值py表示y列中黑色像素点的个数;

其中,ptxy表示区域Dc中点(x,y)的灰度值;

步骤3.1.2:顺序遍历列像素值集Pv,确定所有候选字符的满足式(8)的左边界集L={li|i=0,1,…,m}和满足式(9)的右边界集R={ri|i=0,1,…,m};

步骤3.1.3:顺序组合集合L、R中的元素li,ri确定可能字符的左右边界,如果该字符符合满足式(10),则将该字符(li,ri,0,htc-1)加入到字符集C中;

其中,ptxy表示区域Dc中点(x,y)的灰度值,pci表示li,ri确定字符区域中的黑色像素点个数;

步骤3.2:顺序确定字符集C中所有字符ci,i=0,1,…,N-1的上下边界,具体为:

步骤3.2.1:根据公式(11),得到字符ci所在区域的行像素值集

其中,ptxy表示区域Dc中点(x,y)的灰度值;

步骤3.2.2:顺序遍历行像素值集根据满足式(12),确定字符ci在垂直方向上的连续字符段集的上边界集Ai={aj|j=0,1,…,mi},根据满足式(13),确定字符ci在垂直方向上的连续字符段集的下边界集Bi={bj|j=0,1,…,mi},然后将集合A,B中元素两两组合,确定符ci在垂直方向上的连续字符段集Hi={hj|hj=(aj,bj),aj∈Ai,bj∈Bi,j=0,1…,mi};

步骤3.2.3:顺序遍历连续字符段集Hi,找到其中bj-aj最大的字符段,记为hk=(ak,bk),则ak、bk就是字符ci的上下边界,即ci.a=ak,ci.b=bk

以图3所示车牌为例,根据步骤3,对由步骤2得到的车牌字符区域Dc进行字符定位,字符集的定位结果如图4所示,红框表示每个字符区域的边界。

步骤4:根据字符集C重新调整车牌字符区域Dc,具体为:

步骤4.1:计算出字符集C对应的字符宽度集W和字符的最适宽度具体为:

步骤4.1.1:根据公式(14),得到字符集C对应的字符宽度集W;

W={wi|wi=ci.r-ci.l+1,ci∈C,i=0,1,…,N-1} (14)

步骤4.1.2:根据公式(15)-(16),得到字符宽度集W',N'w表示集合W'中元素的个数;

wa=cN-1.r-c0.l+1;cN-1,c0均∈C (15)

其中,wa表示最右侧字符的右边界和最左侧字符的左边界的距离;

步骤4.1.3:将字符宽度集W'中元素按照从小到大的顺序进行排序,然后不断剔除掉W'中最大和最小的元素,直至W'中元素的个数小于5,根据公式(17)得到集合W'中元素的平均值,记为aw0

步骤4.1.4:根据公式(17)-(19),计算出集合W'中所有元素的方差集Vw和标准差sw

Vw={vi|vi=(wi-aw)2,wi∈W',i=0,1,…,N'w-1} (18)

其中,aw表示W'中所有字符宽度的平均值;

步骤4.1.5:若标准差sw<0.6且N'w>1,则跳至步骤4.2执行;若标准差sw<0.6且N'w=1,则跳至步骤4.2执行;若标准差sw≥0.6,则继续执行步骤4.1.6;

步骤4.1.6:剔除掉W'中对应方差最大的元素,然后返回步骤4.1.4执行;

步骤4.2:根据公式(20)得到字符集C1,字符集C1中元素个数为N1

步骤4.3:统计出集合C1中满足ci.a=0的字符个数Na以及满足ci.b=htc-1的字符个数Nb

步骤4.4:若则根据公式(21)计算出车牌上边界a,否则令a=0;若则根据公式(22)计算得出车牌上边界b,否则令b=htc-1;若且则直接跳至步骤6执行;

步骤4.5:根据公式(23)调整车牌所在区域Dc,根据公式(24)更新区域Dc的高度htc

Dc={(x,y)|x∈[a,b],y∈[0,wh1),(x,y)∈Dc} (23)

htc=b-a+1 (24)

以图5车牌为例,图中绿线为步骤2确定的车牌字符区域的上下边界,而灰色线条为步骤4重新定位确定的车牌字符区域的上下边界可以看出,因为两次定位结果的区域下边界是重叠的,所以在图中一红绿交替的线标出,可以看出经过步骤4的重新定位得到的车牌字符区域Dc更加精确。

步骤5:对步骤4确定的车牌区域Dc,根据步骤3重新进行字符集定位,得到新的字符集C={ci=(li,ri,ai,bi)|i=0,1,…,N-1},N表示集合C中元素的个数;

以图5所示车牌为例,由步骤3处理得到的字符集定位结果如图6所示,由于上下边框的干扰,存在多个粘连字符;对步骤4确定的更加精确的车牌字符区域进行字符集定位,得到的字符集定位结果如图7所示,定位结果不再存在粘连字符。

步骤6:解决字符断裂问题,具体为:

步骤6.1:根据步骤4.1,得到字符集C对应的字符宽度集W和字符最适宽度

步骤6.2:计算得到字符集C对应的字符中心点间距集合M和最适字符中心点间距具体为:

步骤6.2.1:根据公式(25),得到字符中心点间距集合M,集合M的元素个数为Nm

步骤6.2.2:根据公式(26),得到中心点间距集合M′,并根据公式(27),得到集合M′中元素的平均值,记为am0

步骤6.2.3:根据公式(27)-(29),得到集合M′中所有元素的方差集Vm和标准差sm

Vm={vi|vi=(mi-am)2,mi∈W',i=0,1,…,Nm-1} (28)

其中,am表示M′中所有字符宽度的平均值;

步骤6.2.4:若集合M′中元素的个数3,则更新am0=am;

步骤6.2.5:若标准差sm<1.2且Nm>1,则跳至步骤6.3执行;若标准差sm<1.2且Nm=1,则跳至步骤6.3执行;若标准差sm≥1.2,则继续执行步骤6.2.6;

步骤6.2.6:剔除掉集合M′对应方差最大的元素,然后返回步骤6.2.3执行。

步骤6.3:根据字符对的中心点间距、字符高度和字符宽度分析出断裂字符和错误字符,并实现断裂字符的修复和错误字符的剔除,具体为:顺序遍历集合M中除首尾元素外的元素mi,i=1,2,…,Nm-2,若则ci和ci+1是断裂字符对或存在错误字符,需进一步根据满足式(30)-(34)判断字符对属于何种情况,若满足式(32),则需要剔除字符ci;若满足式(33),则需要剔除字符ci+1;若满足式(33),则字符ci和ci+1可以进行合并;

hx=cx.b-cx.a+1;cx∈C,x=0,1,…,N-1 (30)

Y(x,y)=cy.r-cx.l+1;cx,cy∈C,x=0,1,…,N-1,y=0,1,…,N-1 (31)

其中,hx表示字符cx的高度,Y(x,y)表示集合C中字符cx的左边界和字符cy的右边界之间的距离;

步骤6.4:对字符集C进行更新,得到解决了断裂问题后的字符集C,字符集C中元素的个数为N;

以图8所示车牌为例,在经过步骤5处理后得到的字符集定位结果中,第5个字符“0”因为断裂被切割成两个字符;经过步骤6算法的处理,字符集的定位结果如图9所示,断裂字符“0”修复成功。

步骤7:解决字符粘连问题,具体为:

步骤7.1:根据步骤4.1,得到字符集C对应的字符宽度集W和字符最适宽度

步骤7.2:根据步骤6.2,得到字符集C对应的字符中心点间距集合M和最适字符中心点间距

步骤7.3:顺序遍历字符集C中所有字符ci,i=0,1,…,N-1,若字符ci符合满足式(38),则字符ci可能是粘连字符,进一步根据满足式(40)-(43)判断该字符属于何种字符粘连情况,再进行分情况处理:

A.若字符ci符合满足式(40),则认为该字符是错误字符,不进行分割;

B.若字符ci符合满足式(41),则认为该字符是二字符粘连字符,需要进一步根据满足式(44)-(46)判断该字符是何种二字符粘连情况,再进行分情况处理:

a.若字符ci符合满足式(44),则认为该字符是两个“1”字符粘连的情况,可将字符ci分割为和两个字符;

b.若字符ci符合满足式(44),则认为该字符为“1”字符和非“1”字符粘连的情况,可将字符ci分割为和两个字符;

c.若字符ci符合满足式(45),则认为该字符为非“1”字符和“1”字符粘连的情况,可将字符ci分割为和两个字符;

d.若字符ci满足则认为该字符为两个非“1”字符粘连的情况,可将字符ci分割为和两个字符;

C.若字符ci符合满足式(42),则认为该字符是三字符粘连字符,可将字符ci分割为三个字符;

D.若字符ci符合满足式(42),则认为该字符是四字符粘连字符,可将字符ci分割为四个字符;

(i=0或i=N-1)且(hi<0.6×htc或ti>0.8×wi×htc);wi∈W (40)

其中,di表示字符ci左侧字符的右边界与其右侧字符的左边界的距离,dLi表示字符ci左边界与其左侧字符右边界的距离,dRi表示字符ci右边界与其右侧字符左边界的距离,ti表示字符ci中黑色像素点的个数,hi根据公式(30)计算得到,表示字符ci的高度;

步骤7.4:对字符集C进行更新,得到解决了字符粘连问题后的字符集C,字符集C中元素的个数为N;

以图10所示车牌为例,该车牌存在二字符粘连字符,第4和第5个字符没有切分成功,经过步骤7粘连字符切分算法的处理后,字符集的定位结果如图11所示,粘连字符成功切分,且定位较为准确;以图12所示车牌为例,该车牌存在二字符粘连和三字符粘连字符,经过步骤7粘连字符切分算法的处理后,字符集的定位结果如图11所示,粘连字符成功切分,但是第一个字符的定位存在偏差,后续将通过步骤11的位置修正算法进行字符位置的修正;以图14所示车牌为例,该车牌存在四字符粘连字符,经过步骤7粘连字符切分算法的处理后,字符集的定位结果如图15所示,粘连字符成功切分,但个别字符的定位存在偏差,后续将通过步骤11的位置修正算法进行字符位置的修正。

步骤8:若N>7,则需要进行字符筛选,转至步骤9执行;否则,直接转至步骤10执行;

以图16所示车牌为例,该车牌定位确定了9个切割块,因此需要进行字符筛选。

步骤9:筛选出正确的7个字符,具体为:

步骤9.1:根据步骤4.1,得到字符集C对应的字符宽度集W和字符最适宽度

步骤9.2:根据步骤6.2,得到字符集C对应的字符中心点间距集合M和最适字符中心点间距

步骤9.3:根据步骤3.2,更新字符集C中所有字符的上下边界;

步骤9.4:确定中心字符cf,cf为字符集C中下标为f的字符,具体为:顺序遍历中心点距离集合M,找到第一个满足的元素,则f可由公式(47)确定;

步骤9.5:筛选出正确的7个字符,保存至字符集C2中,具体为:

步骤9.5.1:若字符cf不符合满足式(48),则认为该字符为正确的字符,将其保存至字符集C2中;

步骤9.5.2:顺序交替的遍历字符集C中位于字符cf两边的字符ci,若字符ci不符合满足式(48),则认为字符ci为正确字符,将其保存至字符集C2中;其中,字符的遍历方式为顺序交替的遍历字符cf两边的字符,即所遍历字符的下标顺序为f-1,f+1,f-2,f+2…,如果完成一侧字符的遍历,则结束交替遍历,继续进行另一侧字符的顺序遍历;每分析完一个字符,需要判断判别式lc+rc+tc=7是否正确,若正确,则默认剩余未判断的字符都为正确字符,直接顺序加到集合C2中;其中,lc表示字符cf左侧未分析的字符数量,rc表示字符cf右侧未分析的字符数量,tc表示当前字符集C2中正确字符的数量;

其中,hi根据公式(30)计算得到,表示字符ci的高度;

步骤9.5.3:对字符集C2中字符按照ci.l从小到大的顺序进行排序,并更新C=C2

以图16所示车牌为例,根据步骤9进行字符筛选,首先可以确定遍历起点字符cf为第5个字符“3”,然后顺序交替遍历字符cf两边字符,分析保留正确的7个字符,最终的筛选结果如图13所示,首尾的错误字符成功被剔除。

步骤10:若N<6,则表示车牌字符切割失败,不再执行下面的步骤;否则,继续执行步骤11;

步骤11:找到字符集C中位置存在位置偏差的字符进行位置修正,实现字符的精确定位,集合U{ui|i=0,1,…,N-1}表示字符集C中字符位置的正确性,ui=-1表示字符ci位置存在偏差,ui=1表示字符ci位置正确,初始ui都为-1,算法的具体过程为:

步骤11.1:根据步骤4.1,得到字符集C对应的字符宽度集W和字符最适宽度

步骤11.2:根据步骤6.2,得到字符集C对应的字符中心点间距集合M和最适字符中心点间距

步骤11.3:若N=6且则认为是第一个字符缺失的情况,估算出第一个字符的位置为并将其加到字符集C的最前端,并重新执行步骤11.1和步骤11.2;

步骤11.4:顺序遍历字符集C,找到字符宽度合理的非粘连字符,即若字符ci满足!Z(i)且则认为该字符位置正确,令ui=1,其中Z(i)返回为true表示ci是由粘连算法分割出来的字符;

步骤11.5:顺序遍历字符集C,若字符ci符合满足式(49),则将该字符下标添加集合K中;

步骤11.6:顺序遍历集合K,若字符符合满足式(50),则置ui=1,并将元素ki从集合K中剔除,同时若字符符合满足式(49),则将该字符下标添加至集合K中,不断分析集合K中元素所对应的字符,直至集合K为空;

步骤11.7:首先对车牌后五个字符进行位置修正,具体为:

步骤11.7.1:顺序遍历字符集C,若字符ci符合满足式(51),则将该字符下标添加集合K中;

步骤11.7.2:顺序遍历集合K,若字符符合满足式(52),则可将字符调整为若字符符合满足式(53),则可将字符调整为若字符符合满足式(54),则可将字符调整为

若不满足以上条件,且符合条件(i=2或(i>2且i<6且ui+1=1且ui-1=-1)),则可将字符调整为若不满足以上条件,且符合条件(i=6或(i>2且i<6且ui+1=-1且ui-1=1)),则可将字符调整为对完成字符位置修正后,置将元素ki从集合K中剔除,并重新执行步骤11.2,同时若字符符合满足式(51),则将该字符下标添加至集合K中;不断调整集合K中元素所对应的字符,直至集合K为空;

i!=2且i!=6且且ui+1=1且ui-1=1 (54)

步骤11.8:若u0=1且u1=1,则直接跳至步骤12执行,否则对车牌前两个字符进行位置修正,具体为:

步骤11.8.1:若u0=-1且u1=-1,则将字符c1的位置调整为同时置u1=1;

步骤11.8.2:若u0=1且u1=-1,则将字符c1的位置调整为同时置u1=1;

步骤11.8.2:若u0=-1且u1=1,则需根据满足式(55)-(56)进行分情况处理;若字符c0符合满足式(55),则可将字符c0调整为若字符c0符合满足式(56),则可将字符c0调整为否则,可将字符c0调整为

步骤11.9:将字符集C中所有字符ci,i=0,1,…,N-1调整为(ci.a,ci.b,0,htc-1);

以图18所示车牌为例,该车牌的第一个字符被误剔除,经过步骤11处理后,字符集的定位结果如图19所示,第一个字符修复成功;以图20所示车牌为例,因为“皖”字是左右偏旁的字,定位时只切割出字符的右部,存在字符缺失,经过步骤11处理后,字符集的定位结果如图21所示,“皖”字修复成功;以图22所示车牌为例,该车牌的第6个字符“7”因为本身残缺导致定位不准确,经过步骤11处理后,字符集的定位结果如图23所示,字符“7”的定位更加精确;以图24所示车牌为例,该车牌第一个和最后一个字符存在杂质粘连,导致字符定位过宽,经过步骤11处理后,字符集的定位结果如图25所示,粘连的杂质剔除成功;以图26所示车牌为例,该车牌最后两个字符是由步骤7的粘连字符切分算法处理得到的字符,字符的定位存在偏差,经过步骤11处理后,字符集的定位结果如图27所示,定位修正了存在定位偏差的字符。

步骤12:根据字符集C,确定各个字符在车牌图像区域Dc中的位置,进行字符切割。

本说明书实施方法中所列举的处理对象,仅用于说明本发明的实现过程,本发明所能处理的对象情况并非仅限于所举实例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1