基于python车牌识别 || 车牌字符分割

车牌字符分割重要性

  • 无法做端到端的车牌识别,于是,为了识别准确率更高,我们需要对字符进行精准分割,并且极可能的牌除各种干扰。

以下将分为三部分进行车牌字符分割

1.图片预处理
  • 目的是为了排除一些干扰,比如光线等。

    首先我们对原车牌进行灰度处理,因为灰度化后的图像将由三通道变为单通道,单通道的数据处理起来就会简单许多,对后序处理和运算速度都有很大的好处,然后在对其进行高斯滤波,得到处理过后的图片:
    基于python车牌识别 || 车牌字符分割
    基于python车牌识别 || 车牌字符分割
    由于在这里有三种车牌:黄底,蓝底,绿底。所以在这里由我们给出固定阈值进行二值化显然不合理,但是不管是什么颜色底的车牌都有一个共同的特点,就是背景和字符在车牌中所占比例肯定是不一样的。在这里,我使用了一种OSTU算法对其进行二值化,OTSU算法是由日本学者OTSU于1979年提出的一种对图像进行二值化的高效算法,是一种自适应的阈值确定的方法,又称大津阈值分割法,是最小二乘法意义下的最优分割。
    基于python车牌识别 || 车牌字符分割

2.水平分割
  • 找出上下边框,尽可能的排除干扰,为分割做准备

    在前面对车牌进行二值化过后,现图片中只有两个像素点,0和255,我们对每一行的像素点的值进行统计,从而得到水平投影图,如图13。进行水平投影是为了找到字符的上边界和下边界,从而对字符进行精准分割。取一个合适阈值,对字符所在区域进行判别。
    基于python车牌识别 || 车牌字符分割

3.竖直分割
  • 找出每个字符具体所在位置

    与水平投影操作类似,先得到垂直投影图,如图14。再取一个阈值,对每个字符进行分割。考虑到0和U的特殊性,这个阈值需要取得小一点,才能正确的得到完整的0和U。我们并没有用峰波和峰底进行分割,因为用峰波或者峰底的方法会使得分割出来的字符干扰信息会很多,对于我们识别正确率有很大的影响,我们在这里采用阈值的方法对其进行分割。
    基于python车牌识别 || 车牌字符分割

4.结果展示
  • 分割结果展示
    基于python车牌识别 || 车牌字符分割
  • 定位情况
    基于python车牌识别 || 车牌字符分割