基于形态学和HSV分离蓝色区域的车牌分割技术
2018-10-12田枥文齐文琴
田枥文,齐文琴,李 欢
(成都理工大学 信息科学与技术学院,四川 成都 610059)
车牌是汽车非常重要的一部分。车牌相当于车的身份证,是辨别一个车子的主人关键。因此车牌识别也变得尤为重要。
停车场的车牌商业化的识别会大大减少人工费用,减少人们手动化操作,增加了商家的收益。但是在识别之前需要进行车牌分割。一个好的分割算法,能有效地减少识别效能。本文主要介绍一种车牌分割的算法,通过OpenCV提供的部分api功能,结合自己的算法计算出车牌位置,进行合理切割。
1 设计思路
OpenCV是一种跨平台的计算机视觉库,可以运用在多个平台。由于它对多个语言提供了接口,所以在工具上选择OpenCV来执行下面的操作。
1.1 需切割图片的基本情况
本文设置的图片是针对停车场车牌的自动识别切割,所以摄像头位置方向是直击车牌附近。实测中,对于距离稍微远一些或者全身车子照有部分图片实测成功。车牌因为很特殊,对于大部分车牌来说成蓝色,这种情况对于切割具有很大的帮助。
1.2 api设想
最初的想法是利用均值漂移,但是实测情况不好,均值漂移无法准确确定具体位置,而且计算量过于庞大,对于停车场使用的分割需求非常大的情况是不利的。另外一种是使用本身的分割算法grabcut,这个前景后景需要手工找寻前景后景,但是车牌的环境是不定性的,目标位置所以也有不定性,在露天的情况下还需要对天气环境,以及镜头的清晰程度进行多方面的考虑。于是进一步考虑使用形态学变换可以进行有效的分割。
1.3 准确思路
形态学变换是OpenCV重要的一个操作工具。形态学变换主要是可以用来消除不必要的噪音,以及分割出一副图像中相对比较独立的元素,或者把一些互邻的元素相互连接起来,所以形态学变换在这方面对分割相当的有效。本文主要用到腐蚀膨胀,利用转换hsv的方法找寻剩余蓝色的位置,最后利用角度矫正、切割得到。
2 实施办法
2.1 第一步:图像的初步处理
万能第一步,首先要使用高斯滤波来初始灰度化的图片。可以使用权值灰度化的方法,这样可以使车牌部分灰度值更深[1]。高斯滤波最重要的作用在于降低一些图片不该有的噪声。在车子现有的图片中可以看到,车子反光是最需要处理的一处,而高斯滤波可以有效地减少反光产生的噪音。随后需要对图片边缘检测,为后面的图像腐蚀膨胀做基础,canny算子的方向性保障了边缘强度的估计,它有一定的能力降噪并且有效地保持若边缘。
2.2 第二步:膨胀腐蚀
使用多次膨胀腐蚀可以达到的效果如图1所示。因为车牌都是以横向的位置排列顺序,所以使用横轴方向的膨胀,使想要的字符都可以顺利联通起来,但是设想如果一直使用膨胀将会有许多小块的碎片,这时就需要进行多次的腐蚀来将它去除,然后再进行几次膨胀,让几次膨胀和腐蚀次数相同,便于图像回复原形态大小[2]。
腐蚀膨胀后,截取此空白部分,将图像转换成HSV利用蓝色的特点,可以提取蓝色的部分。经多图多次实验的得出,蓝色色调(H)为90~120,而饱和度(S)为90~160,明度(V)为80~255。将图像截取到蓝色区域期间(见图2)。
图1 膨胀腐蚀后效果
2.3 车牌矫正
当然这样下来的图片并不是正向的,存在倾斜,这时就需要对图片进行角度矫正,角度矫正采取霍夫直线变换,找寻图片中的直线。另一种方法是街区后利用黑色区域计算角度。但是使用后者对于其他图片不能全部适用,所以选择前者。其次是要充分考虑如何选择合适的参数,按照比例找寻参数是非常重要的一点,按照原有图片比例计算,车牌标准长度为440 mm,一个字母或数字长度45 mm,中间一点为10 mm。
图2 提取蓝色区域后效果
找到合适参数,计算出一条直线后,找到两个点计算角度,并截取为小图(见图3)。
图3 校正后截取的小图
2.4 截取
经过一系列的处理后难免会出现一些不必要的噪声黑点,使用二值化将图像变为黑白的图片便于后续切割。但是二值化后在多张图片处理后都发现黑点变多了,如果不提前消除会有很大的影响。所以继续使用膨胀和闭操作进行适当调试,由于噪声多是竖直方向的较多,所以使用y方向的膨胀。
最后进行截取。笔者的考虑是进行白色区域检测,然后利用显示车牌与图片大小的比例进行有效切割。开始遇上黑色点,当遇上白色点记录初始位置推出循环进行下一轮循环,然后持续遇见白色的点都进行跳出循环。一直持续,遇到白色的点结束时记录结束位置,然后将两点位置切割下来。
最后最重要的问题在于有偏旁的汉字和点的处理,于是按照实际比例设计了上限和下限。车牌上点的大小为10 mm乘以图片宽度和440 mm的比例,如果小于这个值的两点距离,予以按比例截取权限。若大于这个值且小于一个单汉字的比例,则不给予权限切割且按照原比例切割。这样就可以有效避免偏旁分离的和点的问题(见图4)[3]。
图4 分割后的部分图
3 结语
3.1 结论
此算法运用了很多OpenCV的标准库,但在hsv中的截取蓝色部分和图像校正,以及后面的单字分割进行了部分改进。在许多标准库中函数的参数进行实验并校正部分参数使完美运行。经过几轮测试,成功率高达90%,能达到预期的效果。
3.2 改进
在不成功的样品里有几种情况,一种是图片太大,所以在后续的改进中可以使用图像金字塔的格式将图片向下采样,减小图片的大小。
由于图片分割是给后来的图像识别做素材,所以后面的情况将会把所有的图片的大小调整成一致便于机器学习。
3.3 展望
图片分割是一个很成熟的技术,在各个领域都有应用。不过在实现算法的同时还应该减少运算时间,减少内存消耗。在未来,还将对分割后的车牌进行机器学习,让它达到真正识别功能。