《一种车牌字符分割方法.pdf》由会员分享,可在线阅读,更多相关《一种车牌字符分割方法.pdf(13页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102496019 A (43)申请公布日 2012.06.13 CN 102496019 A *CN102496019A* (21)申请号 201110405227.0 (22)申请日 2011.12.08 G06K 9/34(2006.01) (71)申请人 银江股份有限公司 地址 310030 浙江省杭州市西湖区西湖科技 经济园西园八路 2 号 G 座 申请人 浙江银江交通技术有限公司 杭州银江智慧交通技术有限公司 (72)发明人 俞胜锋 王辉 吴越 徐志江 孟利民 张标标 杜克林 王毅 (74)专利代理机构 杭州宇信知识产权代理事务 所 ( 普通合伙 ) 33。
2、231 代理人 张宇娟 (54) 发明名称 一种车牌字符分割方法 (57) 摘要 本发明公开了一种车牌字符分割方法, 包括 如下步骤 : S10 : 车牌倾斜校正 ; S11 : 车牌上下边 框去除 ; S12 : 车牌字符分割 ; S13 : 字符大小归一 化。本发明车牌字符分割方法克服了已有车牌字 符分割方法受车牌背景影响大、 分割错误率高、 计 算量大、 执行时间长的不足, 其基于垂直投影和字 符中心间距的车牌字符分割, 先利用垂直投影法 实现车牌字符的粗分割, 然后根据车牌的字符中 心间距、 车牌字符宽度以及车牌先验知识找到车 牌的第一个或者第二个字符分割区域, 实现汉字 字符的合并和。
3、数字和英文字符的细分割。本发明 车牌字符分割方法计算复杂度低, 抗干扰能力强, 能够从复杂背景中分割出字符, 具有很高的可靠 性。 (51)Int.Cl. 权利要求书 3 页 说明书 7 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 7 页 附图 2 页 1/3 页 2 1. 一种车牌字符分割方法, 其特征在于, 包括如下步骤 : S10 : 车牌倾斜校正 ; S11 : 车牌上下边框去除 ; S12 : 车牌字符分割 ; S13 : 字符大小归一化。 2. 如权利要求 1 所述的车牌字符分割方法, 其特征在于 : 所述步骤 S10 。
4、包括有如下步 骤 : S100 : 对已经定位得到的原始灰度车牌图像进行 Canny 边缘检测 ; S101 : 对已完成Canny边缘检测的车牌图像使用概率Hough变换检测直线, 并计算出车 牌的倾斜角度 ; S102 : 根据步骤 S101 所得到的车牌倾斜角度对原始灰度车牌图像进行相应角度的旋 转, 以得到水平灰度车牌图像。 3. 如权利要求 2 所述的车牌字符分割方法, 其特征在于 : 所述步骤 S11 包括有如下步 骤 : S110 : 对步骤S102中得到的水平灰度车牌图像使用Otsu阈值法进行二值化, 得到二值 车牌图像 ; S111 : 利用灰度跳变法去除二值车牌图像的车牌上。
5、下边框。 4. 如权利要求 3 所述的车牌字符分割方法, 其特征在于 : 所述步骤 S12 包括有如下步 骤 : S120 : 对去除车牌上下边框后的二值车牌图像进行垂直投影后再进行粗分割 ; S121 : 利用字符中心间距和车牌先验知识对粗分割后的车牌图像进行细分割。 5. 如权利要求 4 所述的车牌字符分割方法, 其特征在于 : 在所述步骤 S102 中, 采用双 线性插值算法对原始灰度车牌图像进行旋转。 6. 如权利要求 5 所述的车牌字符分割方法, 其特征在于 : 在所述步骤 S110 中, 按图像 的灰度特性, 使用 Otsu 算法将图像分成背景和前景两部分。 7. 如权利要求 6 。
6、所述的车牌字符分割方法, 其特征在于 : 所述步骤 S111 包括如下步 骤 : S1110 : 从二值图像的二分之一处开始向上扫描, 统计每一行的黑白跳变数, 如果其值 小于 14, 则说明该行已经不是字符区域, 把它作为字符区域的首行 ; S1111 : 从二值图像的二分之一处开始向下扫描, 统计每一行的黑白跳变数, 如果其值 小于 14, 则说明该行已经不是字符区域, 把它作为字符区域的末行 ; S1112 : 首行和末行之间的区域即为字符区域, 这样就去除了上下边框的影响。 8. 如权利要求 7 所述的车牌字符分割方法, 其特征在于 : 所述步骤 S120 包括如下步 骤 : S120。
7、0 : 从去除车牌上下边框后的二值车牌图像的左边开始列扫描, 当黑色像素数小于 一定阈值 T 时, 则记录下这个列号 a, 放入数组 ColNo2i ; S1201 : 如果黑色像素数大于一定阈值, 则记录下这个列号 b, 放入数组 ColNo2i+1 ; 结合步骤 S1200 得到的 a, 就可以确定第一个分割区域, a 和 b 分别为分割区域的左、 右边 界 ; 权 利 要 求 书 CN 102496019 A 2 2/3 页 3 S1202 : 按照上述步骤 S1200、 步骤 S1201 继续扫描下去, 直到扫描完所有列后, 数组 ColNoi 中的偶数位置存放的是分割区域的左边界, 。
8、奇数位置存放的是分割区域的右边 界。 9. 如权利要求 8 所述的车牌字符分割方法, 其特征在于 : 所述步骤 S121 包括如下步 骤 : S1210 : 检查粗分割出来的区域数量, 如果数量少于7则进入后续步骤S1211 ; 如果数量 大于 15 则分割失败, 退出程序 ; 而如果在 7 和 15 中间则进入后续步骤 S1212 ; S1211 : 增大阈值后再进行一次粗分割, 并检查区域数量, 如果数量少于 7 或者大于 15 则分割失败, 退出程序 ; S1212 : 检查各个分割区域的宽度, 与设定阈值 MaxThresholdWidth 比较, 如果大于这 个阈值则再次增加阈值后对。
9、图像再进行一次粗分割 ; 如果没有进行粗分割, 则直接进入后 续步骤 S1214。 S1213 : 检查分割出来的区域数量, 如果大于 15, 则分割失败, 退出程序 ; S1214 : 检 查 各 个 分 割 区 域 的 宽 度,如 果 还 存 在 有 区 域 的 宽 度 大 于 MaxThresholdWidth, 则分割失败, 退出程序 ; S1215 : 统计各个分割区域内的白色像素点数量, 如果分割区域内的白色像素点数量小 于某一阈值 ThresholdNo, 则放弃该区域, 从而可以过滤掉一些小的干扰点以及第二和第三 字符之间的那个分隔点 ; S1216 : 检查每个分割区域的宽度。
10、, 如果其宽度小于某一阈值, 则把它去除, 此操作可以 去掉一些干扰分割区域, 但保证不会把字符 “1” 去除 ; S1217 : 检查分割区域数量 : 如果少于 7 个, 则分割失败, 退出程序 ; S1218 : 搜索下一个区域宽度在 height/2-height/10-1.5 和 height/2+height/10+1.5 之间的分割区域 , 如果搜索不到, 则分割失败, 退出程序 ; S1219 : 检查分割区域 的中心位置与下一个分割区域中心位置的水平距离, 检查其 是否等于 T1 车牌高度 *57/90 或者等于 T2 车牌高度 *79/90 ; 如果等于 T1, 则把分割区 。
11、域 作为第一个车牌字符区域, 并进入步骤 S1220 ; 如果等于 T2, 则把分割区域 作为车 牌第二个字符区域, 进入步骤 S1221 ; 如果与 T1 和 T2 都不符合, 则搜索下一个区域宽度满 足一定范围的分割区域 , 重复执行步骤 S1219 ; S1220 : 找到的分割区域 为第一个车牌字符区域, 判断其后面的分割区域数量, 如果 数量大于等于 6, 则顺序读取后面六个区域即组成了车牌字符区域, 分割结束, 退出程序 ; 如果数量小于 6, 则分割失败, 退出程序 ; S1221 : 找到的分割区域 为第二个字符区域, 说明汉字可能是由两部分或者三部分 组成, 则检查后面的分割。
12、区域数量, 如果少于 5 个, 则分割失败, 退出程序 ; S1222 : 检查区域 前面的分割区域数量, 如果小于 2, 则分割失败, 退出程序 ; 如果等 于 2, 进入步骤 S1223 ; 如果大于等于 3, 进入步骤 S1224 ; S1223 : 合并区域 前面两个区域, 并检查合并后的区域宽度, 如果其宽度在 height/2-height/10-1.5 和 height/2+height/10+1.5 之间, 且合并区域与区域 的中心 水平距离大致为车牌高度 *57/90, 则认为合并后的区域即为汉字区域, 接着顺序读取区域 后面的五个区域, 组成车牌字符区域, 分割结束, 退出。
13、程序 ; 如果不满足上面其中一个要 权 利 要 求 书 CN 102496019 A 3 3/3 页 4 求, 则分割失败, 退出程序 ; S1224 : 先合并区域 前面两个区域, 并检查合并后的区域宽度, 如果其宽度在 height/2-height/10-1.5 和 height/2+height/10+1.5 之间, 且合并区域与区域 的 中心水平距离大致为车牌高度 *57/90, 则认为合并后的区域即为汉字区域, 接着顺序 读取区域 后面的五个区域, 组成车牌字符区域, 分割结束, 退出程序 ; 如果合并后的 宽度大于 height/2+height/10+1.5, 则分割失败, 退。
14、出程序 ; 如果合并后的宽度小于 height/2-height/10-1.5, 则进入步骤 S1225 ; S1225 : 合并区域 前面三个区域, 并检查合并后的区域宽度 ; 如果其宽度在 height/2-height/10-1.5 和 height/2+height/10+1.5 之间, 且合并区域与区域 的中心 水平距离大致为车牌高度 *57/90, 则认为合并后的区域即为汉字区域 ; 接着顺序读取区域 后面的五个区域, 组成车牌字符区域, 分割结束, 退出程序 ; 如果不满足上面其中一个要 求, 则分割失败, 退出程序。 权 利 要 求 书 CN 102496019 A 4 1/7。
15、 页 5 一种车牌字符分割方法 技术领域 0001 本发明属于智能交通方面的车牌识别技术领域, 具体地说, 是涉及一种车牌字符 分割方法。 背景技术 0002 随着各国公路建设的迅速发展和汽车数量的不断增加, 交通管理的任务日趋 繁重, 利用计算机汽车车牌识别技术, 自动检测与识别汽车车牌号在现代交通监控中具 有非常重要的作用。车牌检测与识别技术是数字图像处理与模式识别技术在智能交通 (Intelligent Transportation System, ITS) 领域中的重要研究课题之一, 其对智能交通 系统的发展和交通业的发展起着重要的推动作用, 更具有广阔的市场前景。 0003 如图 1。
16、 所示, 车牌检测与识别技术分为四个步骤 : 车牌定位、 车牌校正、 字符分割 和字符识别。车牌字符分割是车牌检测与识别技术中的重要组成部分, 只有有效地完成分 割才能进一步提取出目标字符特征并进行识别。 0004 目前常用的车牌字符分割方法有投影法、 连通域法和聚类分析法等。 其中, 投影法 是目前最常用的车牌字符分割方法, 其思想是根据字符的特点, 把二值化后的车牌图像进 行垂直方向的投影。 因为字符的像素点多而集中, 且每个车牌字符之间有一定的空隙隔开。 这样投影下来得到的投影图像应该有七个相对集中的投影峰值群, 然后根据峰值间的最低 点进行分割就可得到车牌的字符。 由于字符块在竖直方向。
17、上的投影不仅在字符间取得局部 最小值, 而且在字符内的间隙也能取得局部最小值, 因此传统的投影分割方法很容易把汉 字分割成两部分或者三部分, 导致分割错误。 另外, 车牌左右边框和二三字符间的间隔点也 都会干扰到投影分割, 导致分割错误 ; 且对不同光照条件下所拍摄图像中字符分割效果差, 抗干扰能力差。 0005 连通域法是将图像水平线上的目标像素作为起始点, 通过区域生长提取出图像中 包含这些初始点的全部连通域。由于车牌中的字母和数字都是一笔写成的, 即只包括一个 连通分支, 因此每个连通域即为一个字符, 图像中剩余部分 ( 区域生长过程中没有访问过 的部分 ) 将作为噪声去除。该方法对于去。
18、除噪声干扰要求很高, 因为字符和车牌边缘粘连 的现象十分普遍 ( 特别是通过第二和第六字符处的铆钉 ), 这将导致把多个字符作为一个 字符提取, 导致分割错误。另外, 许多汉字在二值化后包括多个连通域, 而数字和字母在二 值化后会出现笔划断裂的现象, 因此用此方法会丢失部分字符信息, 字符分割很容易发生 错误。 0006 聚类分析法是利用模式识别中聚类分析算法来实现车牌字符分割。 它能较好地解 决汉字不连通的问题, 较好地解决了车牌字符分割中存在的噪声干扰, 车牌磨损造成字符 粘连等问题。另外, 其通过改变预设类心的坐标, 可以较好地处理一些新式车牌。但是该方 法的程序逻辑设计复杂, 循环嵌套。
19、较多, 实时处理时间过长。同时为了提高预设类心的精 度, 对车牌的宽度有一定的限制。 0007 可见现有技术车牌字符分割方法存在诸多缺陷 : 传统投影法和连通域法受车牌背 说 明 书 CN 102496019 A 5 2/7 页 6 景的影响较大, 当车牌字符受到污染时其分割错误率很高, 从而直接影响到后面的车牌字 符识别 ; 而聚类分析法则虽能克服一些稍复杂的背景, 但是其计算量大, 对计算机的速度要 求比较高 ; 执行时间长, 比较耗时, 且对于宽边距车牌图像, 容易将边距分割成字符, 造成误 判。 0008 故, 实有必要进行研究, 提供一种具有良好的实时性, 计算复杂度低, 能从复杂车。
20、 牌背景中准确分割出字符的技术方案。 发明内容 0009 为解决上述问题, 本发明的目的在于提供一种具有良好的实时性, 计算复杂度低, 能从复杂车牌背景中准确分割出字符的车牌字符分割方法。 0010 为实现上述目的, 本发明的技术方案为 : 0011 一种车牌字符分割方法, 包括如下步骤 : 0012 S10 : 车牌倾斜校正 ; 0013 S11 : 车牌上下边框去除 ; 0014 S12 : 车牌字符分割 ; 0015 S13 : 字符大小归一化。 0016 进一步地, 所述步骤 S10 包括有如下步骤 : 0017 S100 : 对已经定位得到的原始灰度车牌图像进行 Canny 边缘检测。
21、 ; 0018 S101 : 对已完成Canny边缘检测的车牌图像使用概率Hough变换检测直线, 并计算 出车牌的倾斜角度 ; 0019 S102 : 根据步骤 S101 所得到的车牌倾斜角度对原始灰度车牌图像进行相应角度 的旋转, 以得到水平灰度车牌图像。 0020 进一步地, 所述步骤 S11 包括有如下步骤 : 0021 S110 : 对步骤S102中得到的水平灰度车牌图像使用Otsu阈值法进行二值化, 得到 二值车牌图像 ; 0022 S111 : 利用灰度跳变法去除二值车牌图像的车牌上下边框。 0023 进一步地, 所述步骤 S12 包括有如下步骤 : 0024 S120 : 对去。
22、除车牌上下边框后的二值车牌图像进行垂直投影后再进行粗分割 ; 0025 S121 : 利用字符中心间距和车牌先验知识对粗分割后的车牌图像进行细分割。 0026 本发明车牌字符分割方法克服了已有车牌字符分割方法受车牌背景影响大、 分割 错误率高、 计算量大、 执行时间长的不足, 其基于垂直投影和字符中心间距的车牌字符分 割, 先利用垂直投影法实现车牌字符的粗分割, 然后根据车牌的字符中心间距、 车牌字符宽 度以及车牌先验知识找到车牌的第一个或者第二个字符分割区域, 实现汉字字符的合并和 数字和英文字符的细分割。 本发明车牌字符分割方法计算复杂度低, 抗干扰能力强, 能够从 复杂背景中分割出字符,。
23、 具有很高的可靠性。 附图说明 0027 图 1 为现有技术中车牌检测与识别流程图。 0028 图 2 为本发明字符分割流程图。 说 明 书 CN 102496019 A 6 3/7 页 7 0029 图 3 为本发明以 7 位字符为例的原始灰度车牌图像。 0030 图 4 为图 3Canny 边缘检测之后的车牌图像。 0031 图 5 为图 3 概率 Hough 变换检测到的直线。 0032 图 6 为图 3 倾斜校正之后的车牌图像。 0033 图 7 为图 3Otsu 法二值化后的车牌图像。 0034 图 8 为图 3 去除上下边框之后的车牌图像。 0035 图 9 为图 3 字符分割后的。
24、车牌图像。 0036 图 10 为图 3 分割出来并归一化后的车牌字符图示。 具体实施方式 0037 为了使本发明的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对 本发明进行进一步详细说明。 应当理解, 此处所描述的具体实施例仅仅用以解释本发明, 并 不用于限定本发明。 0038 请参照图 2 所示, 本发明车牌字符分割方法包括以下步骤 : 0039 S10 : 车牌倾斜校正 ; 0040 S11 : 车牌上下边框去除 ; 0041 S12 : 车牌字符分割 ; 0042 S13 : 字符大小归一化。 0043 其中, 0044 步骤 S10 车牌倾斜校正包括有如下步骤 : 。
25、0045 S100 : 对已经定位得到的原始灰度车牌图像进行 Canny 边缘检测 ; 0046 S101 : 对已完成Canny边缘检测的车牌图像使用概率Hough变换检测直线, 并计算 出车牌的倾斜角度 ; 0047 S102 : 根据步骤 S101 所得到的车牌倾斜角度对原始灰度车牌图像进行相应角度 的旋转, 以得到水平灰度车牌图像。 0048 步骤 S11 车牌上下边框去除包括有如下步骤 : 0049 S110 : 对步骤S102中得到的水平灰度车牌图像使用Otsu阈值法进行二值化, 得到 二值车牌图像 ; 0050 S111 : 利用灰度跳变法去除二值车牌图像的车牌上下边框。 005。
26、1 步骤 S12 车牌字符分割包括有如下步骤 : 0052 S120 : 对去除车牌上下边框后的二值车牌图像进行垂直投影后再进行粗分割 ; 0053 S121 : 利用字符中心间距、 车牌字符宽度和车牌先验知识对粗分割后的车牌图像 进行细分割。 其中, 车牌先验知识主要包括实际车牌字符的宽高比和车牌第一、 二个字符不 包括字符 “1” 。 0054 请参照图 3 至图 10 所示, 本发明实施例以车牌京 LR8251 为例进行说明。 0055 S10 : 车牌倾斜校正 0056 在理想情况下, 车牌图像应该是一个矩形, 但是由于拍摄时受到镜头与牌照角度, 车辆运动, 路面状况等的影响, 车牌照。
27、经常会出现一定程度的倾斜, 也有可能产生变形。倾 斜的车牌会接着影响到车牌的垂直投影, 进而间接造成字符分割错误。 因此, 有必要对倾斜 说 明 书 CN 102496019 A 7 4/7 页 8 的车牌图像进行校正。车牌倾斜校正体具体如下 : 0057 S100 : 对已经定位得到的原始灰度车牌图像进行 Canny 边缘检测。车牌的倾斜角 度是根据车牌上下边框的倾斜度来计算的, 所以此处使用 Canny 边缘检测法突出原始灰度 车牌图像的边缘, 以便于下一步检测边框直线。本实施例中使用了 Intel 公司的开源计算 机视觉库 OpenCV, Canny 边缘检测的函数原型如下 : 0058。
28、 void cvCanny(const CvArr*image, CvArr*edges, double threshold1, double threshold2, int aperture_size 3) ; 0059 其中 image 代表输入图像, edges 代表输出图像, threshold1 和 threshold 当中的 小阈值用来控制边缘链接, 大的阈值用来控制边缘的初始分割, aperture_size 为 Sobel 算 子内核大小。本实施例中采用的函数及参数如下 : 0060 cvCanny(image, edges, 50, 200, 3) ; 0061 完成 Can。
29、ny 边缘检测之后车牌图像的效果如图 4 所示。 0062 S101 : 对完成Canny边缘检测的车牌图像使用概率Hough变换检测直线, 并计算出 车牌的倾斜角度。直线检测通常是利用传统的 Hough 变换算法, 但是这种算法需要对整幅 图像的每个像素进行扫描计算, 计算量大, 处理时间长 ; 本发明中采用了概率 Hough 变换来 检测图像中的直线, 以减少计算时间。概率 Hough 变换在 OpenCV 中的函数原型如下 : 0063 CvSeq*cvHoughLines2(CvArr*image, void*line_storage, int method, double rho, 。
30、double theta, int threshold, double param1 0, double param2 0) ; 0064 其中, image 为输入图像, line_storage 为检测到的线段存储仓, method 是 Hough 变换变量, rho 为与像素相关单位的距离精度, theta 为弧度测量的角度精度, threshold 为 阈值参数, param1 为最小线段长度, param2 表示在同一条直线上进行碎线段连接的最大间 隔。本实施例中采用的函数及参数如下 : 0065 cvHoughLines2(image, lines_storage, CV_HOUG。
31、H_PROBABILISTIC, 1, CV_PI/180, 80, 30, 10) ; 0066 在采用该函数检测到线段之后, 计算出各个线段的斜率和倾斜角度, 并从小于 30 度的倾斜角度中选择最大的角度作为车牌的倾斜角度。概率 Hough 变换检测到的线段如图 5 所示。 0067 S102 : 根据检测到的倾斜角度对原始灰度车牌图像, 进行相应角度的旋转, 得到水 平灰度车牌图像。本实施例中采用双线性插值算法对原始灰度车牌图像进行旋转, 能够保 留旋转图像中的细节, 其旋转后的效果如图 6, 可见旋转后车牌字符没有发生变形。 0068 S11 : 车牌上下边框去除 0069 车牌经过倾。
32、斜校正后还会存在上下边框的干扰, 如果不去除, 将会对字符切割和 识别带来不利影响。车牌上下边框的去除具体如下 : 0070 S110 : 对得到的水平灰度车牌图像使用 Otsu 阈值法进行二值化, 得到二值车牌图 像。 本实施例中, 按图像的灰度特性, 将图像分成背景和前景两部分。 Otsu阈值法通过计算 最大类间方差而获得分割门限, 在较为理想的 “双峰条件下” , 用 Otsu 阈值法能够得到较好 的分割效果。OpenCV 中的二值化函数原型如下 : 0071 void cvThreshold(const CvArr*src, CvArr*dst, double threshold, d。
33、oublemax_ value, int threshold_type) ; 说 明 书 CN 102496019 A 8 5/7 页 9 0072 其中, src 为原始数组, dst 为输出数组, threshold 为阈值, max_value 为使用 CV_ THRESH_BINARY 和 CV_THRESH_BINARY_INV 的最大值, threshold_type 为阈值类型。本实施 例中使用的函数及参数如下 : 0073 cvThreshold(src, dst, 100, 255, CV_THRESH_OTSU) ; 0074 如图7所示, 其为利用Otsu阈值法对经过校正。
34、的灰度车牌图像进行二值化后得到 的二值图像。 0075 S111 : 利用灰度跳变法去除二值车牌图像的车牌上下边框。 根据车牌先验知识, 经 过二值化后的车牌上有 7 个字符, 每个字符的跳变点数至少为 2, 在字符区域, 其水平黑白 跳变点总数大于 14, 而非字符区域则不满足这个特征。所以可以利用黑白跳变法来去除车 牌上下边框, 其包括如下步骤 : 0076 S1110 : 从二值图像的二分之一处开始向上扫描, 统计每一行的黑白跳变数, 如果 其值小于 14, 则说明该行已经不是字符区域, 把它作为字符区域的首行 ; 0077 S1111 : 从二值图像的二分之一处开始向下扫描, 统计每一。
35、行的黑白跳变数, 如果 其值小于 14, 则说明该行已经不是字符区域, 把它作为字符区域的末行 ; 0078 S1112 : 首行和末行之间的区域即为字符区域, 这样就去除了上下边框的影响。 0079 如图 8 所示, 其示出了去除边框运算后车牌图像的效果图。 0080 S12 : 车牌字符分割 0081 S120 : 对去除车牌上下边框后的二值车牌图像进行垂直投影后再进行粗分割。其 中, 具体步骤如下 : 0082 S1200 : 从去除车牌上下边框后的二值车牌图像的左边开始列扫描, 当黑色像素数 小于一定阈值 T( 本实施例中取 2), 则记录下这个列号 a, 放入数组 ColNo2i ;。
36、 0083 S1201 : 如果黑色像素数大于一定阈值(本实施例中取2), 则记录下这个列号b, 放 入数组 ColNo2i+1 ; 结合步骤 S1200 得到的 a, 就可以确定第一个分割区域, a 和 b 分别为 分割区域的左、 右边界 ; 0084 S1202 : 按照上述步骤 S1200、 步骤 S1201 继续扫描下去, 直到扫描完所有列后, 数 组 ColNoi 中的偶数位置存放的是分割区域的左边界, 奇数位置存放的是分割区域的右 边界。 0085 S121 : 利用字符中心间距和车牌先验知识对粗分割后的车牌图像进行细分割。以 国内普通小轿车的实际车牌高度为例, 国内普通小轿车的实。
37、际车牌高度为 140mm, 宽度为 440mm ; 实际字符高度为90mm, 除 “1” 以外, 其他单个字符的实际宽度为45mm ; 实际字符中心 间距为 57mm( 二三字符中心间距为 79mm)。因此实际字符宽高的比例为 1 2, 实际字符中 心间距与车牌字符高度的比例为 57 90 和 79 90( 二三字符中心间距与车牌字符高度 的比例)。 所以在知道车牌字符高度的情况下, 就可根据实际车牌宽高比和字符中心间距与 车牌字符高度的比例确定字符的宽度范围和字符中心间距的范围。 利用以上的字符中心间 距与车牌先验知识就可以实现车牌字符的细分割, 其具体包括如下步骤 : 0086 S1210。
38、 : 检查粗分割出来的区域数量。如果数量少于 7 则进入后续步骤 S1211 ; 如 果数量大于 15 则分割失败, 退出程序 ; 而如果在 7 和 15 中间则进入后续步骤 S1212。 0087 S1211 : 增大阈值后再进行一次粗分割, 并检查区域数量。如果数量少于 7 或者大 于 15 则分割失败, 退出程序。 说 明 书 CN 102496019 A 9 6/7 页 10 0088 S1212 : 检查各个分割区域的宽度, 与设定阈值 MaxThresholdWidth( 该阈值可以 根据定位到的车牌高度 (height) 来确定, 本实施例中取为 height/2+height/。
39、10+2.5) 比 较。 如果大于这个阈值则再次增加阈值后对图像再进行一次粗分割 ; 如果没有进行粗分割, 则直接进入后续步骤 S1214。 0089 S1213 : 检查分割出来的区域数量。如果大于 15, 则分割失败, 退出程序。 0090 S1214 : 检 查 各 个 分 割 区 域 的 宽 度。 如 果 还 存 在 有 区 域 的 宽 度 大 于 MaxThresholdWidth, 则分割失败, 退出程序。 0091 S1215 : 统计各个分割区域内的白色像素点数量。如果分割区域数量少于 7 个, 则 分割失败, 退出程序 ; 如果分割区域内的白色像素点数量小于某一阈值 Thre。
40、sholdNo( 本实 施例中取为height*2), 则放弃该区域。 从而可以过滤掉一些小的干扰点以及第二和第三字 符之间的那个分隔点。 0092 S1216 : 检查每个分割区域的宽度。如果其宽度小于某一阈值 ( 这里设为 height/10-0.5), 则把它去除。此操作可以去掉一些干扰分割区域, 但保证不会把字符 “1” 去除。 0093 S1217 : 检查分割区域数量 : 如果少于 7 个, 则分割失败, 退出程序。 0094 S1218 :搜 索 下 一 个 区 域 宽 度 满 足 一 定 范 围 ( 这 里 取 为 (height/2-height/10-1.5, height。
41、/2+height/10+1.5) 的分割区域 , 如果搜索不到, 则 分割失败, 退出程序。 0095 S1219 : 检查分割区域 的中心位置与下一个分割区域中心位置的水平距离, 检 查其是否等于 T1 车牌高度 *57/90 或者等于 T2 车牌高度 *79/90。如果等于 T1, 则把 分割区域 作为第一个车牌字符区域, 并进入步骤 S1220 ; 如果等于 T2, 则把分割区域 作为车牌第二个字符区域, 进入步骤 S1221 ; 如果与 T1 和 T2 都不符合, 则搜索下一个区域 宽度满足一定范围的分割区域 , 重复执行步骤 S1219。 0096 S1220 : 找到的分割区域 。
42、为第一个车牌字符区域 ( 汉字区域 ), 判断其后面的分 割区域数量, 如果数量大于等于 6, 则顺序读取后面六个区域即组成了车牌字符区域, 分割 结束, 退出程序 ; 如果数量小于 6, 则分割失败, 退出程序。 0097 S1221 : 找到的分割区域 为第二个字符区域, 说明汉字可能是由两部分或者三 部分组成, 则检查后面的分割区域数量, 如果少于 5 个, 则分割失败, 退出程序。 0098 S1222 : 检查区域 前面的分割区域数量。如果小于 2, 则分割失败, 退出程序 ; 如 果等于 2, 进入步骤 S1223 ; 如果大于等于 3, 进入步骤 S1224。 0099 S122。
43、3 : 合并区域前面两个区域, 并检查合并后的区域宽度。 如果其宽度满足一 定范围 ( 本实施例中取为 (height/2-height/10-1.5, height/2+height/10+1.5), 且合并 区域与区域 的中心水平距离大致为车牌高度 *57/90, 则认为合并后的区域即为汉字区 域。接着顺序读取区域 后面的五个区域, 组成车牌字符区域, 分割结束, 退出程序 ; 如果 不满足上面其中一个要求, 则分割失败, 退出程序。 0100 S1224 : 先合并区域前面两个区域, 并检查合并后的区域宽度。 如果其宽度满足 一定范围 ( 本实施例中取为 (height/2-height。
44、/10-1.5, height/2+height/10+1.5), 且合 并区域与区域 的中心水平距离大致为车牌高度 *57/90, 则认为合并后的区域即为汉字 区域。接着顺序读取区域 后面的五个区域, 组成车牌字符区域, 分割结束, 退出程序 ; 如 说 明 书 CN 102496019 A 10 7/7 页 11 果合并后的宽度大于 (height/2+height/10+1.5), 则分割失败, 退出程序 ; 如果合并后的 宽度小于 (height/2-height/10-1.5), 则进入步骤 S1225。 0101 S1225 : 合并区域前面三个区域, 并检查合并后的区域宽度。 如。
45、果其宽度满足一 定范围 ( 本实施例中取为 (height/2-height/10-1.5, height/2+height/10+1.5), 且合并 区域与区域 的中心水平距离大致为车牌高度 *57/90, 则认为合并后的区域即为汉字区 域。接着顺序读取区域 后面的五个区域, 组成车牌字符区域, 分割结束, 退出程序 ; 如果 不满足上面其中一个要求, 则分割失败, 退出程序。 0102 如图 9 所示, 其示出了字符分割后的车牌图像。 0103 S13 : 字符大小归一化 0104 车牌图像的大小不一往往导致分割出来的字符也大小不一, 为了有助于后续的字 符识别, 还需要对切割下来的字符大。
46、小进行归一化。本实施例中把字符归一化到 36x20 大 小。在 OpenCV 中, 改变图像大小的函数原型如下 : 0105 Void cvResize(const CvArr*src, CvArr*dst, int interpolation CV_INTER_ LINEAR) ; 0106 src 为输入图像, dst 为输出图像, interpolation 为插值方法。本实施例中使用 的函数及参数如下 : 0107 cvResize(src, dst, CV_INTER_NN)。 0108 如图 10 所示, 其示出了分割出来并归一化后的车牌字符图示。 0109 以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内所作的任何修改、 等同替换和改进等, 均应包含在本发明的保护范围之内。 说 明 书 CN 102496019 A 11 1/2 页 12 图 1 图 2 图 3图 4图 5 图 6 图 7 图 8图 9 说 明 书 附 图 CN 102496019 A 12 2/2 页 13 图 10 说 明 书 附 图 CN 102496019 A 13 。