车牌字符分割重要性
- 无法做端到端的车牌识别,于是,为了识别准确率更高,我们需要对字符进行精准分割,并且极可能的牌除各种干扰。
以下将分为三部分进行车牌字符分割
1.图片预处理
-
目的是为了排除一些干扰,比如光线等。
首先我们对原车牌进行灰度处理,因为灰度化后的图像将由三通道变为单通道,单通道的数据处理起来就会简单许多,对后序处理和运算速度都有很大的好处,然后在对其进行高斯滤波,得到处理过后的图片:
由于在这里有三种车牌:黄底,蓝底,绿底。所以在这里由我们给出固定阈值进行二值化显然不合理,但是不管是什么颜色底的车牌都有一个共同的特点,就是背景和字符在车牌中所占比例肯定是不一样的。在这里,我使用了一种OSTU算法对其进行二值化,OTSU算法是由日本学者OTSU于1979年提出的一种对图像进行二值化的高效算法,是一种自适应的阈值确定的方法,又称大津阈值分割法,是最小二乘法意义下的最优分割。
2.水平分割
-
找出上下边框,尽可能的排除干扰,为分割做准备
在前面对车牌进行二值化过后,现图片中只有两个像素点,0和255,我们对每一行的像素点的值进行统计,从而得到水平投影图,如图13。进行水平投影是为了找到字符的上边界和下边界,从而对字符进行精准分割。取一个合适阈值,对字符所在区域进行判别。
3.竖直分割
-
找出每个字符具体所在位置
与水平投影操作类似,先得到垂直投影图,如图14。再取一个阈值,对每个字符进行分割。考虑到0和U的特殊性,这个阈值需要取得小一点,才能正确的得到完整的0和U。我们并没有用峰波和峰底进行分割,因为用峰波或者峰底的方法会使得分割出来的字符干扰信息会很多,对于我们识别正确率有很大的影响,我们在这里采用阈值的方法对其进行分割。
4.结果展示
- 分割结果展示
- 定位情况
完整程序链接
- https://download.csdn.net/download/ytzh88/12586962
- 该项目通过pycharm建立,直接打开,安装相应的包就可,主要是tensorflow,keras等。效果还算可以,有问题的私聊,我看到会及时解答的。