前言
本设计基于MATLAB与数字图像处理实现对于车牌的定位,分割与识别。大家可用于课程设计等。
如需要帮助与指导,技术解答,欢迎私信留言!
识别过程介绍
由于识别的图像为我国现行的车牌,具有较强的规范性,借助车牌的先验知识进行针对性设计。本设计主要分为四个模块:图像预处理模块、车牌定位及分割模块、字符分割模块、字符识别模块。并设计了相应的GUI处理界面。
1、图像预处理
由于拍摄时间,角度,光线各不相同,故先对图像行进灰度化处理以及二值化处理,往往会显示出图像重点,增强对比度,便于接下来的操作。并采用边缘提取等操作来对车牌进行定位以及分割。这里采用方案是roberts算子,对两个方向进行边缘提取,其中,阈值设置为0.15。经过边缘提取后的图片如图所示:

2、车牌定位与提取模块
在完成边缘提取后,除了车牌的边缘,往往还会有车身等其他图像边缘。此时通过腐蚀操作,对提取出的边缘进行腐蚀,进一步去除掉细小的边缘以及其他影响因素,紧接着,再对图像进行膨胀操作,此时,车牌部分就会被标注出来。再与原图对比即可提取出车牌部位。车牌位置以及提取出的车牌如下图所示:


3、字符分割模块
由先验知识可知,一张车牌共有七个字符,所以共需要切除七次,故将切割字符的程序封装为一个函数,以避免主程序的冗余。
关于字符切割函数:主要利用的是先验知识,通过先验知识知道,每两个字符之间都是有固定间距的,从字符最左侧开始,逐列统计每列的像素数,直到没有字符(即空白区域),则该列就是字符的最右侧。经过切割后的字符如下图所示:

4、字符识别模块
用了字符模板的方式来进行识别。基本原理是使用差运算。将切割下来的字符与字符模板进行差运算,统计两幅图片不同点的个数,并保存下来,找到图片差别最少的图像,根据字库,对应到识别的字符,完成识别。
GUI界面构建
使用MATLAB完成整个程序界面的构建,并将全部流程融入到界面中。此外,还添加了系统信息用于确定处理系统的处理过程,并且添加了历史数据可以将过去提取的信息进行保存。

结语
本设计主要是针对数字图像处理的一次练习与应用,其识别精度较差,只有拍摄角度,拍摄光线均较为理想时才会有较高的识别精度。若希望得到更高的识别精度,可以通过深度学习等方式实现。可参见另外一篇文章:
- 基于深度学习的车牌识别
填坑中,敬请期待···
部分代码展示
%%
clear;
close all;
clc;
%% 自动弹出提示框读取图像
[filename filepath] = uigetfile('.jpg', '输入一个需要识别的图像');
file = strcat(filepath, filename);
img = imread(file);
figure;
imshow(img);
title('车牌图像');
%% 灰度处理
img1 = rgb2gray(img); % RGB图像转灰度图像
figure;
subplot(1, 2, 1);
imshow(img1);
title('灰度图像');
subplot(1, 2, 2);
imhist(img1);
title('灰度处理后的灰度直方图');
%% 边缘提取
img4 = edge(img1, 'roberts', 0.15, 'both');% 对两个方向进行边缘提取,阈值选取为0.15
figure('name','边缘检测');
imshow(img4);
title('roberts算子边缘检测');
%% 图像腐蚀
se=[1;1;1];
img5 = imerode(img4, se);%使用提取的边缘图片进行腐蚀
figure('name','图像腐蚀');
imshow(img5);
title('图像腐蚀后的图像');
%% 平滑图像,图像膨胀
se = strel('rectangle', [30, 30]);
img6 = imclose(img5, se); %图像膨胀
figure('name','平滑处理');
imshow(img6);
title('平滑图像的轮廓');
%% 从图像中删除所有少于2350像素8邻接
img7 = bwareaopen(img6, 2350);
figure('name', '移除小对象');
imshow(img7);
title('从图像中移除小对象');
最后——毕设,课设帮助
由于篇幅有限,仅进行了部分展示,希望对大家有所帮助!
如需要帮助与指导,技术解答,欢迎私信留言!
本文详细介绍了基于MATLAB的车牌识别系统,包括图像预处理、车牌定位与提取、字符分割和识别模块。通过GUI界面实现全程操作,适用于课程设计。尽管识别精度有限,但提供了一个基础实践平台,为进一步提升(如深度学习)奠定了基础。
&spm=1001.2101.3001.5002&articleId=123885569&d=1&t=3&u=c3b78adf4b6042df8ff0ddcbfb7f8cb0)
1万+

被折叠的 条评论
为什么被折叠?



