一种基于投影的车牌字符切割方法转让专利

申请号 : CN201611131250.4

文献号 : CN106650729B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 高飞汪敏倩吴宗林

申请人 : 浙江浩腾电子科技股份有限公司

摘要 :

一种基于投影的车牌字符切割方法,属于计算机视觉和智能交通技术领域。它先进行车牌水平切割再进行垂直切割,对存在粘连情况的字符进行重新分割的时候,选取的字符分割宽度为已经切割得到的字符中确定不存在粘连情况的字符图像的平均宽度,对粘连情况处理之后存在字符图像大于7个的,提取在车牌图像中最靠近中间位置的7个字符,因为两边可能受污渍干扰错认为字符,大大提高了字符分割正确率;对第1个中文字符进行再处理,根据其他6个字符的平均宽度重新进行定位得到第一个中文字符图像,可以避免中文字符左右偏旁导致字符中间断裂的情况。

权利要求 :

1.一种基于投影的车牌字符切割方法,其特征在于包括如下步骤:

步骤1:对车牌图像进行二值化,使二值化的车牌为白底黑字,然后进行倾斜矫正,对矫正后的图片大小归一化,二值化图像的高度为height;

步骤2:对步骤1获得的车牌图像进行水平切割,形成新的图像levelCutImage;

步骤3:对步骤2得到的图像levelCutImage进行垂直切割,具体步骤如下:

步骤3.1:创建一个存放车牌字符图像的集合charList,计算图像levelCutImage在width1/2处的竖直扫描线上的黑色像素点总数count1,如果count1>0,执行步骤3.2,否则直接执行步骤3.3,其中width1为图像levelCutImage的宽度;

步骤3.2:从图像levelCutImage中提取中间的字符图像,存入charList中,具体步骤如下:步骤3.2.1:从图像levelCutImage的width1/2处开始,逐列向右扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符右切割线cL1的位置;

步骤3.2.2:从图像levelCutImage的width1/2处开始,逐列向左扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符左切割线cL2的位置;

步骤3.2.3:从图像levelCutImage中提取矩形区域(cL2,0,cL1-cL2,height1)对应的部分作为字符图像charImage,如果charImage中总的黑色像素点个数大于预先设定的阈值,则把charImage添加到charList中,否则不做处理,其中height1为图像levelCutImage的高度;

步骤3.3:从图像levelCutImage的中间往右提取一个还没有提取到的字符图像,存入charList中,具体步骤如下:步骤3.3.1:从图像levelCutImage的width1/2处往右还没有扫描到的地方开始,往右逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1>0,则把此时扫描线的位置记为字符左切割线cL2的位置,继续往右逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符右切割线cL1的位置;

步骤3.3.2:从图像levelCutImage中提取矩形区域(cL2,0,cL1-cL2,height1)内的部分作为字符图像charImage,如果charImage中总的黑色像素点个数大于预先设定的阈值,则把charImage添加到charList中,否则不做处理;

步骤3.4:从图像levelCutImage的中间往左提取一个还没有提取到的字符图像,存入charList中,具体步骤如下:步骤3.4.1:从图像levelCutImage的width1/2处往左还没有扫描到的地方开始,往左逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1>0,则把此时扫描线的位置记为字符右切割线cL1的位置,继续往左逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符左切割线cL2的位置;

步骤3.4.2:从图像levelCutImage中提取矩形区域(cL2,0,cL1-cL2,height1)内的部分作为字符图像charImage,如果charImage中总的黑色像素点个数大于预先设定的阈值,则把charImage插入到charList头部,否则不做处理,继续进入步骤3.3,直到charList中元素个数不小于7个或者图像levelCutImage左右两边都已经扫描结束,则停止循环;

步骤4:对charList中存在字符粘连的图像进行拆分,直到在charList中找不到图像宽度大于widthAvg的图像为止;

步骤5:保证charList中的图像总数为7个,具体步骤如下:

步骤5.1:如果charList中的图像总数小于7,则说明切割失败,如果charList中的图像总数等于7,则直接进入步骤6,如果charList中的图像总数大于7,则进入步骤5.2;

步骤5.2:根据charList中每个字符图像在levelCutImage图像中的左右边界位置,在charList中找到一个在levelCutImage中离width1/2处的竖直线最近的字符图像,以这个字符图像为中心,在charList中分别往左往右选取3个字符图像,把charList中除了这7个字符图像以外的其他图像都删除;

步骤6:对charList中第一个字符图像进行再处理,具体处理步骤如下:

步骤6.1:计算charList中除了第一个字符图像以外的其他6个字符图像的平均宽度,记为avgWidth;

步骤6.2:记第一个字符图像在levelCutImage中的右切割线cL1等于charList中第一个字符在levelCutImage中右边界的位置,左切割线cL2=cL1-avgWidth;

步骤6.3:从levelCutImage中选取矩形区域(cL2,0,cL1-cL2,height1)内的部分图像作为第一个字符图像,替换charList中的第一个字符图像。

2.根据权利要求1所述的一种基于投影的车牌字符切割方法,其特征在于步骤2中的对车牌图像进行水平切割的具体步骤如下:步骤2.1:从步骤1获得的车牌图像的height/2处开始,逐行向上扫描,直到在扫描线上车牌图像的黑色像素点总数count

步骤2.2:从步骤1获得的车牌图像的height/2处开始,逐行向下扫描,直到在扫描线上车牌图像的黑色像素点总数count

步骤2.3:去除步骤1获得的车牌图像中cutLine1以上的部分图像和cutLine2以下的部分图像,留下车牌图像中间部分形成新的图像levelCutImage。

3.根据权利要求1所述的一种基于投影的车牌字符切割方法,其特征在于步骤4中对charList中存在字符粘连的图像进行拆分的具体步骤如下:步骤4.1:根据公式(1)计算车牌字符图像平均宽度widthAvg;

widthAvg=width1/7 (1)

步骤4.2:统计charList中图像宽度小于widthAvg的图像的个数记为num,计算charList中图像宽度小于widthAvg的图像的宽度之和记为widthSum,根据公式(2)重新计算widthAvg的值;

步骤4.3:在charList中找到一个图像宽度大于widthAvg的图像记为tempImg,记该图像在charList中的索引值为i,在charList中把该图像移除;

步骤4.4:把tempImg从右往左按照字符宽度widthAvg进行分割,每分割出一个字符图像,则把该字符图像插入到charList中索引值i处,分割到最左边一个字符图像的时候,如果该图像宽度不小于widthAvg/2,则插入到charList中索引值i处,否则舍弃,然后重新进入步骤4.3,直到在charList中找不到图像宽度大于widthAvg的图像为止。

说明书 :

一种基于投影的车牌字符切割方法

技术领域

[0001] 本发明属于计算机视觉和智能交通技术领域,具体涉及一种基于投影的车牌字符切割方法。

背景技术

[0002] 随着智能交通领域的不断发展,目前在道路交通监控、自动收费系统、小区车辆管理系统及安全监测等方面都需要对车牌进行准确得识别。车牌识别技术一般是每个字符分开识别,所以要在识别之前进行车牌字符的准确切割。
[0003] 当前有许多车牌字符切割的方法,其中与本发明较接近的技术方案为:专利(许毅杰。申请号:201310263494.8,名称:一种基于灰度直方图二值化的车牌字符分割方法)提出一种基于灰度直方图二值化的车牌字符分割方法,该方法首先利用车牌图像的灰度直方图和灰度均值计算得到合适的二值化阈值对车牌图像进行二值化,然后对二值化之后的图像进行水平方向投影分割得到二值化图像中间部分,对水平切割后的二值化图像进行垂直方向投影分割得到字符,根据标准字符宽度对得到的字符进行粘连情况处理,这种方法没有考虑很多复杂的情况,比如车牌两边的污渍很可能被错误的当做车牌字符,而且中国车牌第一个中文字存在左右偏旁的关系,也可能被错误的当做两个字符;专利(俞胜锋,王辉,吴越,徐志江,孟利民,张标标,杜克林,王毅。申请号:201110405227.0,名称:一种车牌字符分割方法)提出了一种新的车牌字符分割方法,该方法先根据水平方向上灰度跳变小于14判断车牌上下切割线,去除上下边框,然后利用垂直投影法对字符进行粗分割,最后根据字符中心间距、字符宽度和实际车牌字符宽高比等信息先确定第一第二个字符的区域,然后确定其他字符区域,该方法主要是对存在粘连情况的车牌很容易切割失败,抗干扰能力比较弱;专利(张卡,尼秀明,何佳,范浩。申请号:201510658142.1,名称:一种基于典型位置的车牌字符分割方法)提出一种基于典型位置的车牌字符分割方法,该方法首先通过水平投影曲线定位到车牌字符的上下边缘位置,进行水平切割,然后对分类器训练车牌2-3字符位置区域,利用该分类器在车牌图像中找到2-3字符位置,推导出其他字符左右边界,根据预测的边界位置在垂直投影曲线中找到附近的曲线突变的位置确定为字符左右边缘进行字符切割,该方法需要多次在车牌图像中预测车牌字符2-3位置,然后进行概率计算,比较耗时,而且根据2-3字符位置推测其他字符左右边界会有一定的偏差,车牌字符间距本身就比较近,所以在垂直投影曲线上相邻字符的左右边界在曲线上的突变位置也是很近的,容易导致分割不精确;文献(古利超。车辆图像中的车牌定位及字符分割算法研究[D]。重庆:重庆大学,2012)提出了一种投影和连通区域相结合的字符分割方法,先对二值化车牌图像进行连通区域检测,然后进行水平投影和垂直投影,确定字符宽高,对于宽高小于字符宽高的相邻连通区域进行合并,最后在各个连通区域加矩形边框提取字符,该方法简单,但是抗噪能力弱,容易受到车牌污渍的影响导致分割错误;文献(白建华。车牌字符分割及识别算法研究[D]。西安:西安电子科技大学,2010)提出了一种车牌字符分割算法,该算法也是先进行水平投影进行车牌水平切割,去除上下边框,然后利用垂直投影进行字符切割,然后对粘连字符根据两个字符中心点或者字符宽高比进行分割,最后对断裂字符进行处理,即切割得到的相邻两个字符宽度之和等于标准字符宽度,则两个字符认为是断裂的进行合并,该方法没有对字符以外的污渍区域进行处理,容易把字符左右两边的污渍当做字符,导致正确的字符缺失;文献(迟晓君,孟庆春。基于投影特征值的车牌字符分割算法[J]。计算机应用研究,2006,4:256-257)提出了一种基于投影特征值的车牌字符分割算法,该算法首先对二值化车牌进行垂直投影,根据每列像素点灰度值之和计算一个特征值,由先验知识确定第一个字符分割点在车牌第二和第三个字符之间作为起始点,然后在垂直投影图中向左向右分别扫描,扫描到投影图中大于特征值的波峰就可以确定一个字符分割点,然后对分割好的字符进行水平分割,该算法运用先验知识算出车牌第二和第三个字符之间的位置作为起点位置,很有可能算出的位置会与实际有偏差,这对之后其他字符的分割都会产生影响,而且对于存在粘连情况或者有污渍的车牌都会容易分割错误,抗噪能力弱,对于存在左右偏旁的中文字,则很容易会被分割成两个字符。
[0004] 综上所述,当前车牌字符切割的方法存在着如下不足:(1)受到车牌上污渍的影响导致字符分割错误,抗干扰能力弱;(2)对车牌字符粘连的情况没有考虑,容易分割错误;(3)对于存在左右偏旁的中文字容易分割成两个或多个字符;(4)计算复杂,耗时;(5)由先验知识推导位置不精确,导致字符分割得不精确。

发明内容

[0005] 针对当前车牌字符切割方法难以解决的不足,本发明提出了一种基于投影的车牌字符切割方法。
[0006] 所述的一种基于投影的车牌字符切割方法,其特征在于包括如下步骤:
[0007] 步骤1:对车牌图像进行二值化,使二值化的车牌为白底黑字,然后进行倾斜矫正,对矫正后的图片大小归一化,二值化图像的高度为height;
[0008] 步骤2:对步骤1获得的车牌图像进行水平切割,形成新的图像levelCutImage;
[0009] 步骤3:对步骤2得到的图像levelCutImage进行垂直切割,具体步骤如下:
[0010] 步骤3.1:创建一个存放车牌字符图像的集合charList,计算图像levelCutImage在width1/2处的竖直扫描线上的黑色像素点总数count1,如果count1>0,执行步骤3.2,否则直接执行步骤3.3,其中width1为图像levelCutImage的宽度;
[0011] 步骤3.2:从图像levelCutImage中提取中间的字符图像,存入charList中,具体步骤如下:
[0012] 步骤3.2.1:从图像levelCutImage的width1/2处开始,逐列向右扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符右切割线cL1的位置;
[0013] 步骤3.2.2:从图像levelCutImage的width1/2处开始,逐列向左扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符左切割线cL2的位置;
[0014] 步骤3.2.3:从图像levelCutImage中提取矩形区域(cL2,0,cL1-cL2,height1)对应的部分作为字符图像charImage,如果charImage中总的黑色像素点个数大于预先设定的阈值,则把charImage添加到charList中,否则不做处理,其中height1为图像levelCutImage的高度;
[0015] 步骤3.3:从图像levelCutImage的中间往右提取一个还没有提取到的字符图像,存入charList中,具体步骤如下:
[0016] 步骤3.3.1:从图像levelCutImage的width1/2处往右还没有扫描到的地方开始,往右逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1>0,则把此时扫描线的位置记为字符左切割线cL2的位置,继续往右逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符右切割线cL1的位置;
[0017] 步骤3.3.2:从图像levelCutImage中提取矩形区域(cL2,0,cL1-cL2,height1)内的部分作为字符图像charImage,如果charImage中总的黑色像素点个数大于预先设定的阈值,则把charImage添加到charList中,否则不做处理;
[0018] 步骤3.4:从图像levelCutImage的中间往左提取一个还没有提取到的字符图像,存入charList中,具体步骤如下:
[0019] 步骤3.4.1:从图像levelCutImage的width1/2处往左还没有扫描到的地方开始,往左逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1>0,则把此时扫描线的位置记为字符右切割线cL1的位置,继续往左逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符左切割线cL2的位置;
[0020] 步骤3.4.2:从图像levelCutImage中提取矩形区域(cL2,0,cL1-cL2,height1)内的部分作为字符图像charImage,如果charImage中总的黑色像素点个数大于预先设定的阈值,则把charImage插入到charList头部,否则不做处理,继续进入步骤3.3,直到charList中元素个数不小于7个或者图像levelCutImage左右两边都已经扫描结束,则停止循环;
[0021] 步骤4:对charList中存在字符粘连的图像进行拆分,直到在charList中找不到图像宽度大于widthAvg的图像为止;
[0022] 步骤5:保证charList中的图像总数为7个,具体步骤如下:
[0023] 步骤5.1:如果charList中的图像总数小于7,则说明切割失败,如果charList中的图像总数等于7,则直接进入步骤6,如果charList中的图像总数大于7,则进入步骤5.2;
[0024] 步骤5.2:根据charList中每个字符图像在levelCutImage图像中的左右边界位置,在charList中找到一个在levelCutImage中离width1/2处的竖直线最近的字符图像,以这个字符图像为中心,在charList中分别往左往右选取3个字符图像,把charList中除了这7个字符图像以外的其他图像都删除;
[0025] 步骤6:对charList中第一个字符图像进行再处理,具体处理步骤如下:
[0026] 步骤6.1:计算charList中除了第一个字符图像以外的其他6个字符图像的平均宽度,记为avgWidth;
[0027] 步骤6.2:记第一个字符图像在levelCutImage中的右切割线cL1等于charList中第一个字符在levelCutImage中右边界的位置,左切割线cL2=cL1-avgWidth;
[0028] 步骤6.3:从levelCutImage中选取矩形区域(cL2,0,cL1-cL2,height1)内的部分图像作为第一个字符图像,替换charList中的第一个字符图像。
[0029] 所述的一种基于投影的车牌字符切割方法,其特征在于步骤2中的对车牌图像进行水平切割的具体步骤如下:
[0030] 步骤2.1:从步骤1获得的车牌图像的height/2处开始,逐行向上扫描,直到在扫描线上车牌图像的黑色像素点总数count
[0031] 步骤2.2:从步骤1获得的车牌图像的height/2处开始,逐行向下扫描,直到在扫描线上车牌图像的黑色像素点总数count
[0032] 步骤2.3:去除步骤1获得的车牌图像中cutLine1以上的部分图像和cutLine2以下的部分图像,留下车牌图像中间部分形成新的图像levelCutImage。
[0033] 所述的一种基于投影的车牌字符切割方法,其特征在于步骤4中对charList中存在字符粘连的图像进行拆分的具体步骤如下:
[0034] 步骤4.1:根据公式(1)计算车牌字符图像平均宽度widthAvg;
[0035] widthAvg=width1/7  (1)
[0036] 步骤4.2:统计charList中图像宽度小于widthAvg的图像的个数记为num,计算charList中图像宽度小于widthAvg的图像的宽度之和记为widthSum,根据公式(2)重新计算widthAvg的值;
[0037]
[0038] 步骤4.3:在charList中找到一个图像宽度大于widthAvg的图像记为tempImg,记该图像在charList中的索引值为i,在charList中把该图像移除;
[0039] 步骤4.4:把tempImg从右往左按照字符宽度widthAvg进行分割,每分割出一个字符图像,则把该字符图像插入到charList中索引值i处,分割到最左边一个字符图像的时候,如果该图像宽度不小于widthAvg/2,则插入到charList中索引值i处,否则舍弃,然后重新进入步骤4.3,直到在charList中找不到图像宽度大于widthAvg的图像为止。
[0040] 通过使用本发明的方法切割车牌字符,与现有技术相比,其有益效果如下:
[0041] 1)本发明通过先进行车牌水平切割再进行垂直切割,可以避免上下污渍对于字符分割的影响,且字符垂直切割从中间往两边切,切满7个字符则停止切割,避免把车牌左右边框误认为字符,以及避免左右污渍干扰;
[0042] 2)本发明在对存在粘连情况的字符进行重新分割的时候,选取的字符分割宽度为已经切割得到的字符中确定不存在粘连情况的字符图像的平均宽度,更加符合实际情况,提高字符分割正确率;
[0043] 3)本发明对粘连情况处理之后存在字符图像大于7个的,提取在车牌图像中最靠近中间位置的7个字符,因为两边可能受污渍干扰错认为字符,大大提高了字符分割正确率;
[0044] 4)本发明通过对第1个中文字符进行再处理,根据其他6个字符的平均宽度重新进行定位得到第一个中文字符图像,可以避免中文字符左右偏旁导致字符中间断裂的情况。

附图说明

[0045] 图1为本发明实施例选取的用于切割的二值化车牌图像;
[0046] 图2为本发明水平切割后的二值化车牌图像。
[0047] 图3为本发明最终切割得到的车牌字符图像。

具体实施方式

[0048] 下面结合实施例来详细阐述本发明的车牌倾斜矫正方法的具体实施方式。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
[0049] 本发明的一种基于投影的车牌字符切割方法,具体步骤如下:
[0050] 步骤1:对车牌图像进行二值化,使二值化的车牌为白底黑字,然后进行倾斜矫正,对矫正后的图片大小归一化,在本实例中图片大小归一化为长度204像素,宽度54像素,得到如图1所示的结果;
[0051] 步骤2:对步骤1获得的车牌图像进行水平切割,本实例中水平切割的效果图如图2所示,具体步骤如下:
[0052] 步骤2.1:从步骤1获得的车牌图像的height/2处开始,逐行向上扫描,直到在扫描线上车牌图像的黑色像素点总数count
[0053] 步骤2.2:从步骤1获得的车牌图像的height/2处开始,逐行向下扫描,直到在扫描线上车牌图像的黑色像素点总数count
[0054] 步骤2.3:去除步骤1获得的车牌图像中cutLine1以上的部分图像和cutLine2以下的部分图像,留下车牌图像中间部分形成新的图像levelCutImage;
[0055] 步骤3:对图像levelCutImage进行垂直切割,具体步骤如下:
[0056] 步骤3.1:创建一个存放车牌字符图像的集合charList,计算图像levelCutImage在width1/2处的竖直扫描线上的黑色像素点总数count1,如果count1>0,执行步骤3.2,否则直接执行步骤3.3,其中width1为图像levelCutImage的宽度;
[0057] 步骤3.2:从图像levelCutImage中提取中间的字符图像,存入charList中,具体步骤如下:
[0058] 步骤3.2.1:从图像levelCutImage的width1/2处开始,逐列向右扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符右切割线cL1的位置;
[0059] 步骤3.2.2:从图像levelCutImage的width1/2处开始,逐列向左扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符左切割线cL2的位置;
[0060] 步骤3.2.3:从图像levelCutImage中提取矩形区域(cL2,0,cL1-cL2,height1)内的部分作为字符图像charImage,如果charImage中总的黑色像素点个数大于预先设定的阈值,则把charImage添加到charList中,否则不做处理,这个预先设定的阈值主要根据车牌图片大小来设定,图片越大,设定得越大,图片越小,设定得越小,在本实例中该阈值设定为50,其中height1为图像levelCutImage的高度;
[0061] 步骤3.3:从图像levelCutImage的中间往右提取一个还没有提取到的字符图像,存入charList中,具体步骤如下:
[0062] 步骤3.3.1:从图像levelCutImage的width1/2处往右还没有扫描到的地方开始,往右逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1>0,则把此时扫描线的位置记为字符左切割线cL2的位置,继续往右逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符右切割线cL1的位置;
[0063] 步骤3.3.2:从图像levelCutImage中提取矩形区域(cL2,0,cL1-cL2,height1)内的部分作为字符图像charImage,如果charImage中总的黑色像素点个数大于预先设定的阈值,则把charImage添加到charList中,否则不做处理,这个预先设定的阈值跟步骤3.2.3中的一样,在本实例中该阈值设定为50;
[0064] 步骤3.4:从图像levelCutImage的中间往左提取一个还没有提取到的字符图像,存入charList中,具体步骤如下:
[0065] 步骤3.4.1:从图像levelCutImage的width1/2处往左还没有扫描到的地方开始,往左逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1>0,则把此时扫描线的位置记为字符右切割线cL1的位置,继续往左逐列扫描,直到在扫描线上图像levelCutImage的黑色像素点总数count1<1,则停止扫描,此时扫描线的位置记为字符左切割线cL2的位置;
[0066] 步骤3.4.2:从图像levelCutImage中提取矩形区域(cL2,0,cL1-cL2,height1)内的部分作为字符图像charImage,如果charImage中总的黑色像素点个数大于预先设定的阈值,则把charImage插入到charList头部,否则不做处理,这个预先设定的阈值跟步骤3.2.3中的一样,在本实例中该阈值设定为50,继续进入步骤3.3,直到charList中元素个数不小于7个或者图像levelCutImage左右两边都已经扫描结束,则停止循环;
[0067] 步骤4:对charList中存在字符粘连的图像进行拆分,具体步骤如下:
[0068] 步骤4.1:根据公式(1)计算车牌字符图像平均宽度widthAvg;
[0069] widthAvg=width1/7  (1)
[0070] 步骤4.2:统计charList中图像宽度小于widthAvg的图像的个数记为num,计算charList中图像宽度小于widthAvg的图像的宽度之和记为widthSum,根据公式(2)重新计算widthAvg的值;
[0071]
[0072] 步骤4.3:在charList中找到一个图像宽度大于widthAvg的图像记为tempImg,记该图像在charList中的索引值为i,在charList中把该图像移除;
[0073] 步骤4.4:把tempImg从右往左按照字符宽度widthAvg进行分割,每分割出一个字符图像,则把该字符图像插入到charList中索引值i处,分割到最左边一个字符图像的时候,如果该图像宽度不小于widthAvg/2,则插入到charList中索引值i处,否则舍弃,然后重新进入步骤4.3,直到在charList中找不到图像宽度大于widthAvg的图像为止;
[0074] 步骤5:保证charList中的图像总数为7个,具体步骤如下:
[0075] 步骤5.1:如果charList中的图像总数小于7,则说明切割失败,如果charList中的图像总数等于7,则直接进入步骤6,如果charList中的图像总数大于7,则进入步骤5.2;
[0076] 步骤5.2:根据charList中每个字符图像在levelCutImage图像中的左右边界位置,在charList中找到一个在levelCutImage中离width1/2处的竖直线最近的字符图像,以这个字符图像为中心,在charList中分别往左往右选取3个字符图像,把charList中除了这7个字符图像以外的其他图像都删除;
[0077] 步骤6:对charList中第一个字符图像进行再处理,具体处理步骤如下:
[0078] 步骤6.1:计算charList中除了第一个字符图像以外的其他6个字符图像的平均宽度,记为avgWidth;
[0079] 步骤6.2:记第一个字符图像在levelCutImage中的右切割线cL1等于charList中第一个字符在levelCutImage中右边界的位置,左切割线cL2=cL1-avgWidth;
[0080] 步骤6.3:从levelCutImage中选取矩形区域(cL2,0,cL1-cL2,height1)内的部分图像作为第一个字符图像,替换charList中的第一个字符图像,本实例中最终得到如图3所示的字符图像分割结果。