这个是去年完成一个课程大作业时利用课余时间完成的matlab车牌识别程序,虽然本科阶段也接触过《数字图像处理》这门课,但是当时的学习也停留在了比较浅的阶段,又一直对这个课题挺感兴趣的,于是提交题目时就报了车牌识别。
很早之前的东西了,相对于现在的智能算法以及计算机视觉相关方面的研究,肯定是不够看的,不过这样接触一下也是挺有意思的。
文章目录
正文
什么背景了意义了就不多说了,网上一大堆,这里直接进入正题:
首先,当初一开始也没想从头开始,先在网上找了相关的资料,其中也参考了csdn上的以下资源:
- https://download.csdn.net/download/j_m_chen/10572194
- https://download.csdn.net/download/mrlambert/10192471
- https://download.csdn.net/download/weixin_45062596/11387713
- https://www.cnblogs.com/asks/p/4372736.html
以及一个开源的中文车牌识别系统 EasyPR,一开始的时候想尝试来着,车牌搜集资料时,用了接近两天的时间,尝试在64维WIN10以及Visual Studio 2019 –OpenCV 3.48环境下,调试前面第一个具有学习网络的中文车牌识别系统。
从配置OpenCV编程环境→用小程序测试→下载开源项目→学习手册→载入项目→配置参数→消错补缺→回溯OpenCV版本→配置调试→回溯VS版本→交叉变量调试→陷入调试死循环。其间不断查资料调bug,不断地尝试,最后还是放弃深入学习了。不过作者本身的意思路是没有问题的,在matlab上也可以实现准确率较高的测试。
基本步骤
大体上,车牌识别可以分为以下几个基本环节:
- 图像预处理
- 车牌初步定位
- 图像水平、垂直倾斜角度调整
- 字符分割及归一化
- 字符识别显示结果
具体内容
要是需要上面相关文字叙述的话,也可以在网上找到很多例子,这里直接讲我觉得还比较实用的算法思想,完整的代码会在最后给出。
1.准备工作
搜集整理了不同样式共50张车牌图片,统一编号存放待用:
在程序中实现手动选择测试样本,使得在程序运行后,能够主动打开窗口要求选取需要测试的图片,并且生成对应的展示窗口,具体的语句不再详细描述,原本的注释加上我后来学习时的看懂问题应该不大
%景象匹配与目标识别大作业程序
%2019年12月13日
%Jonny Su
%根据hsv色彩定位法定位车牌,将图像转为HSV模型,获取每个像素点的HSV值,判断是否为蓝色像素点,统计每行每列蓝色像素点的个数,从而获取车牌位置
%根据该位置对原始彩色图像进行剪裁,并进行二值化,滤波、去点处理,为字符分割做准备
%按顺序切割出7个字符,并保存为7张图片
%分别提取图片和模板进行比较,将比较结果最接近的确定为对应模板,并最终显示车牌识别结果
cd D:\AEEEE\Course\图像处理&景象匹配\大作业\program\景象匹配\测试图片 %转换到自己的路径下
% path(path,'测试图片') %修改文件的搜索路径
[pictureName] = uigetfile('*.jpg', '请选择图片'); %手动选取,更直观
tic; %开始计时
I=imread(pictureName); %读入车牌照片
A=isstrprop(pictureName,'digit'); %存储具有编号信息的位置
B=pictureName(A); %提取编号信息
C=str2double(B); %将编号转换为字符串
figure(1),imshow(I),title(['这是',num2str(C),'号样本的原图']); %绘图,并且标注是几号测试对象
代码效果:
2.根据HSV色彩定位法定位车牌
将图像转为HSV模型,获