MATLAB实现车牌识别

2023-05-02 16:01:42 浏览数 (2)

车牌识别主要包括三个主要步骤:车牌区域定位、车牌字符分割、车牌字符识别。

本项目通过对拍摄的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程来进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌区域定位。车牌字符分割是为了方便后续对车牌字符进行匹配,从而对车牌进行识别。

车牌定位与字符识别技术以计算机图像处理、模式识别等技术为基础,通过对原图像进行预处理及边缘检测等过程来实现对车牌区域的定位,再对车牌区域进行图像裁剪、归一化、字符分割及保存,最后将分割得到的字符图像输入训练好的神经网络模型,输出匹配结果。

本项目以BP神经网络模型为基础,属于误差后向传播的神经网络,是神经网络中使用最广泛的一类,通过输入层、隐层和输入层三层网络的层间全互联方式,具有较高的运行效率和识别准确率。

正常情况下经过字符提取后会得到七个字符,接着利用深度学习去识别这七个字符。本次采用的深度学习是训练网络是由输入层(通道是20*20*1),两个卷积层和两个最大池化层交替连接后再接一个卷积层,全连接层,softmax层,分类层组成(卷积层后都有ReLU)。

建立好网络后,找到了一共16152张车牌样本字符数据,包含数字1-9,字母A-Z和所有省份的简称汉字。因为汉字的数据集不好收集,有些汉字因为出现的次数少,难以收集,例如“藏”,所以数据集会较小,但都保持20张以上。接着利用MATLAB的imageDatastore函数,加载数字样本数据作为图像数据存储,此方法可以在卷积神经网络的训练过程中高效分批读取图像。加载好的数据分为训练数据与验证数据两部分,其中训练数据占总数据的70%。接着指定训练选项,其中参数包含使用具有动量的随机梯度下降(SGDM)训练网络,初始学习率,最大训练轮数等。

结合自己设置的网络进行调参即可。设置好训练选项后使用训练数据训练网络。训练好后可以自行验证一下,然后导出训练好的网络模型。提供的示例训网络模型为cnn_net.mat文件,在MATLAB中导入此网络即可使用。

将训练好的网络导入工作区,再将其与从车牌区域提取出来的字符一一识别得出结果。

项目运行效果如下图所示:

0 人点赞