车牌识别系统

前言

车牌识别在视觉领域可以说是一个基础的项目,一般通过字符匹配和神经网络两种方法进行车牌识别。本文我们介绍基于神经网络和SVM的车牌识别,并在视频中进行多车牌识别,车牌识别的准确率取决于视频的精度,由于我找的视频质量堪忧,所以在精度上存在不足,但是在单张图片中识别精度还是非常可以的。

系统效果展示

从视频中可以看出,首先导入了一个视频,然后对视频中的三个车辆进行裁剪,对它们裁剪过后的图像进行识别,将识别结果和车牌定位显示到界面中。SVM和CNN都可以实现上面的效果。

基于深度学习的车牌识别(重点)

基于深度学习的车牌识别是现在比较流行的一个方法。在这一节我们家介绍如何使用深度学习对车牌进行识别。

基本流程

1. 图像预处理
图像的预处理主要是找到一次车牌的大概位置。基本的流程是
首先加载原始的图片,对得到的图片进行灰度化以及均值模糊化,这样柔化了一些噪声,并且减少了数据量可以方便后面进行处理。
然后我们使用算法对车牌的垂直边缘进行检测。检测完成之后将原始的图片从rgb格式转换成和hsv,在垂直化的图片中找到蓝色的区域(hsv和sobel相乘)
最后我们将得到的图片进行二值化,再进行一个并运算将包含垂直边缘区域连成一个整体。图片范围小的话可以只识别到车牌的区域,效果如下:
在这里插入图片描述

2.车牌定位
接下来我们记就需要将车牌从这些区域中找出来。
1)获取轮廓:通过上面的图片来获取整个车的框架。
2)排除不可能是车牌的一些轮廓。
3)通过背景色进一步排除非车牌区域
这里主要用到漫水填充算法(类似PS的魔术棒),通过在矩形区域生成种子点,种子点的颜色必须是蓝色或黄色,在填充后的掩模上绘制外接矩形,再依次判断这个外接矩形的尺寸是否符合车牌要求,最后再把矩形做仿射变换校准位置。做漫水填充的目的有两个,第一个是预处理的时候车牌轮廓可能有残缺,做完漫水填充后可以把剩余的部分补全,第二个目的是进一步排除非车牌区域。
在这里插入图片描述

车牌过滤

这一步的目标就是从定位后疑似车牌图片中选出真正的车牌。这里我用卷积神经网络来处理是否为车牌的二分类问题,,这里要注意模型参数的标准差设置小一些,模型收敛还是比较快,效果也还不错。当然模型也有可能会误判,比如模型把两张疑似车牌图片都判定为车牌,那就取和车牌相似度最高的作为最终选择。
在这里插入图片描述

字符分割

水平投影:将二值化的车牌图片水平投影到Y轴,得到连续投影最长的一段作为字符区域,因为车牌四周有白色的边缘,这里可以把水平方向上的连续白线过滤掉。
垂直投影:因为字符与字符之间总会分隔一段距离,因此可以作为水平分割的依据,分割后的字符宽度必须达到平均宽度才能算作一个字符,这里可以排除车牌第2、3字符中间的“.”。
在这里插入图片描述

字符识别

这一步的目的是把上面的字符图像块识别出来并输出车牌文本字符,这里我依然用了卷积神经网络,这里的类别比较多,包括数字、字母、汉字,但是做法和车牌过滤的二分类差不多,网络输出67维向量,取概率最大的作为输出结果。
在这里插入图片描述
如果你在学习基础流程时候还有一些不懂的地方请参照:

https://blog.csdn.net/GK_2014/article/details/84779166

训练过程与结果

车牌判别网络

1.正样本数据集
在这里插入图片描述

2.搭建一个卷积神经网络
在这里插入图片描述
3.训练结果
在这里插入图片描述

字符识别网络

1.数据集
在这里插入图片描述
2.网络架构
在这里插入图片描述

3.训练结果
在这里插入图片描述
可以看到只要图片质量好的话识别率可以非常高的。

基于SVM的车牌识别

基本流程

车牌的检测和识别的应用非常广泛,比如交通违章车牌追踪,小区或地下车库门禁。在对车牌识别和检测的过程中,因为车牌往往是规整的矩形,长宽比相对固定,色调纹理相对固定,常用的方法有:基于形状、基于色调、基于纹理、基于文字特征等方法,近年来随着深度学习的发展也会使用目标检测的一些深度学习方法。基于SVM的车牌识别主要的流程如下图所示:
1.在原图中检测车牌号
在这里插入图片描述
2.裁剪车牌号
在这里插入图片描述
3.分割车牌做识别
在这里插入图片描述
文本叙述流程:
1.输入原始图片,通过二值化,边缘检测,和基于色调的颜色微调等办法检测出原图中的车牌号的位置;

2.把检测到的车牌(ROI)裁剪,为车牌号的识别做准备;

3.基于裁剪的车牌号,使用直方图的波峰波谷分割裁剪的车牌号(如上图中的第3步)

4.训练机器学习模型做车牌识别,这里训练了2个SVM,一个SVM用来识别省份简称(如 鲁),另一个SVM用来识别字母和数字。

项目架构

在这里插入图片描述

总结

由于svm是用别人训练好的模型进行识别的,所以自己修改了话可动性不是很强。但是深度学习的方法可以对模型的loss和网络架构进行调整,并且提供数据集,值得参考。鉴于复现代码有一定的难度,所以我花了一点时间整理了以上的两个项目(附加一个开源的图片车牌识别),将三个源码和讲解视频打包好,保证在环境ok情况下通过视频可以完整的运行出结果。如果需要的话请QQ联系我2425497621。
附上SVM的github地址和运行讲解视频
https://github.com/liupeng678/License-Plate-Recognition-System
。。。。待更新

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐