一、前言
随着我国经济的快速发展,汽车拥有量的急剧增加,公路交通成为我国重要的交通运输途径,是国家大力发展的基础设施之一。因此,交通管理的现代化和智能化就越来越显得重要和亟迫。利用电子信息技术来提高管理效率、交通效率和打造安全的智能交通系统已成为当前交通管理发展的主题。实现交通管理现代化和智能化的核心技术之一就是车牌自动识别技术。与传统的车辆管理方法相比,它大大提高了管理效率和水平,节省了人力、物力,实现了车辆管理的科学化、规范化,对交通治安起到了保障作用,拥有广泛的应用前景。
现在正值暑假期间,楼主在家复习图像处理的基础知识,准备为今年的秋招增加一点砝码,为了巩固知识点以及联系的作用,就看文献以及查找资料制作了一个车牌识别的系统,这个车牌的识别系统是基于matlab的,程序实现起来比较的简单,做的也比较粗糙,所以准确率来说相对低了很多,但是整体的框架以及一些步骤用来复习知识点以及项目参考是可以的,所以想要追求高识别率以及覆盖率的童鞋不要抱太大的希望哦,哈哈哈哈嗝!!!
二、结果预览
三、程序框图
四、代码分析
1.图像的预处理
这个部分的处理是为了减小、去除原始图像的噪声的影响,同时将原始图像中想要提取的部分得到加强,便于后面的处理。首先,彩色图像的数据量较大并且底色不同的话会对实验结果造成误差,所以我们先将原始图像转为灰度图像;其次,转为灰度图像之后,我们要对灰度图像进行加强并均匀化,灰度的加强可以直接使用histeq直接加强,也可以使用imadjust对于想要加强的部分进行加强操作;最后,我们对加强之后的灰度图进行边缘检测,我这边用到的边缘检测的方法是sobel,其实,在边缘检测方面,canny边缘检测是检测的首选,但是,我一直在尝试的过程中发现,canny检测完后出来的边界的线条过于多,对于下一步的处理造成影响,因此选用了sobel检测,执行完之后的结果如下图所示。
global picture;
picture = imread(pictureName);
picture2Gray = rgb2gray(picture); %转为灰度图像
figure,
subplot(1, 3, 1),imshow(picture);title('原始图像');
subplot(1, 3, 2),imshow(picture2Gray);title('原始图像的灰度图');
subplot(1, 3, 3),imhist(picture2Gray);title('原始图像的灰度直方图');colorbar;
% grayEn = imadjust(picture2Gray, [], [0.25, 0.75], 2); %灰度图增强
grayEn = histeq(picture2Gray); %灰度图均匀化
figure,
subplot(1, 2, 1), imshow(grayEn);title('灰度增强之后的图像');
subplot(1, 2, 2), imhist(grayEn);title('灰度增强之后的直方图');
%边缘检测
grayEn = imfilter(grayEn, fspecial('average', 3)); %均值平滑增强之后的灰度图像
pictureOut = edge(grayEn, 'sobel');
figure,
imshow(pictureOut), title('sobel边缘检测