✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
个人主页:海神之光
代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、车牌识别简介

摘 要:为改进车牌识别的精确度,在 MATLAB 平台下通过 GUI 图形用户界面,调用相应算子与算法对图像进行调整与优化。通过对图像进行粗定位、灰度化、倾斜矫正、二值化处理等对车牌图像进行预处理,并利用阈值分割、形态学处理等方法进行车牌定位。对多种算法进行比较,选择适当的图像处理方法,结合投影函数分割图像,以及图像矩归一化法实现字符归一化、语音播报车牌识别结果等功能,共同组成车牌识别系统。测试结果表明,该系统对车牌识别的精确度由 95% 提高到 96.5%,识别性能较好。

0 引言
随着科技的发展与信息时代的到来,数字图像处理技术已走进人们的日常生活。数字图像处理是指将图像信号转换成数字信号并采用计算机等硬件设备进行处理的过程[1-2],其涉及的内容主要包括图像二值化与灰度化、图像变换与形态学处理等,同时车牌识别技术作为该领域的重要应用方向之一,选择合适的软件进行图像识别与处理是必不可少的。MATLAB 作为一款强大的数学软件,同时也是国际控制界公认的标准计算软件[3-4],由于其不需要定义数组维数,而且有矩阵对应的库函数,所以在图像处理领域相对其它高级语言更加简便,且效率较高。图像处理算法通常是依靠矩阵运算实现的,因此可选择 MATLAB作为图像处理工具。很多学者对此进行了研究,但相关成果仍具有一定局限性。如文献[5]只是针对车牌字符识别进行简单的图像处理实验;文献[6]对车牌图像进行字符
识别,但效果不佳。基于文献[7]研究,本文采用基于 GUI的图形操作系统,采用层层推进的方式对车牌图像进行识别与处理。同时受到文献[8]的启发,本文运用语音播报的方式对结果进行输出,并对车牌进行精确定位。

1 车牌识别系统设计
系统首先通过图片选择功能选定一幅要处理的图片,然后进行图像识别,最后对识别的车牌进行语音播报,相应流程如图 1 所示。

针对识别模块,图像识别处理流程又大致分为对图像进行粗定位、图像灰度化、倾斜矫正处理、二值化处理、形态学处理等,最后得到精准定位的图像。具体流程如图 2所示。

本系统采用 GUI 图形处理系统处理车辆图片,从中提取车牌号码,系统可显示运行时间,且界面简洁、操作简便。系统主界面如图 3 所示。

2 车牌识别系统测试
2.1 粗定位处理
由于车牌大都是以蓝底作为背景,所以系统首先对一幅图片的横坐标和纵坐标方向设置蓝色边界阈值;然后根据设置的长宽比得到车牌图像初步边界。车牌号码一般是白色的,因此设置白色像素点变量,之后进行统计;接下来根据长宽比与白蓝比提取车牌图像;最后根据图像像素面积、设置阈值对提取的图像进行二次修正。定位处理效果如图 4 所示。

2.2 灰度化处理
一般将彩色图像转化为灰色图像的过程称为灰度化处理,是一个降维处理过程[9-10]。灰度变换是数字图像处理中常用的图像增强技术[11]。目前大部分彩色图像采用RGB 颜色模式,图像处理时要分别对 R、G、B 3 个分量进行相应处理。其实灰度图像也可反映图像形态特征,是一种R、G、B 3 个分量都相同的特殊彩色图像,各像素点仅表现为一种颜色[12]。因此,处理彩色图像要先进行图像灰度化处理,以减少图像计算量,然后通过灰度变换增强图像对比度。常见的图像灰度化算法有:①最大值法。可使转化后 R、G、B 的值等于转化前 3 个值中最大的一个,该方法转换的灰度图亮度较高;②平均值法。可使转化后 R、G、B 的值为转化前 R、G、B 的平均值,该方法转换的灰度图较为柔和。因此,本文采取加权平均值法对图像进行灰度处理,公式如下: R = G = B = (wR R + wGG + wB B) 3 (1) 式中,wR、wG、wB 代表 R、G、B 权值,不同值会生成不同的灰度图像。通过人的视觉对颜色敏感度进行颜色权值排序,为 wG > wR > wB,能得到较易识别的灰度图像。通常 当 wR = 0.299, wG = 0.587, wB = 0.114 时 得 到 的 灰 度 图 效果最好,处理效果如图 5 所示。

2.3 图片倾斜矫正与二值化处理
由于处理车牌图像时车牌可能出现倾斜的情况,所以需要对图像进行倾斜校正处理。常见的倾斜校正方法有基于投影的倾斜校正,但该方法一般需要提前知道图像大概的倾斜状况,然后选定角度进行投影计算,否则会加大运算量;此外还有 Hough 变换的倾斜校正与外接矩形的倾斜校正,通过实验发现,后者在整体速度和效果上要优于前者。为了找到两个图像之间的几何对应关系,通常会计算包含平面变换(例如平移、旋转、缩放、投影、仿射)的单应矩阵[13],该过程称为几何变换。在使用外接矩形的倾斜校正方法处理图像过程中,可使用基于连通域聚集的方式提取所需对象,形成外接矩形,然后通过选取长边与水平方向的夹角 θ,以图像左下角为圆心,利用几何变换将图像顺时针旋转 θ 角度。其几何变换公式如下:

二值化处理的目的是将需要识别的目标与背景分离开,其算法一般分为两种:传统的非机器学习方法和基于图像分割的深度学习方法[14]。本系统采用灰度阈值变换方法,选取合适的阈值将背景与车牌号分离,最后获得二值化图像。灰度阈值变换可将一幅灰度图像转换成黑白二值图像。用户指定一个可起分界线作用的灰度值,如果图像中某像素灰度值小于该灰度值,则将该像素灰度值设置为 0,否则设置为 255。这个起分界线作用的灰度值称为阈值,灰度的阈值变换也常被称为阈值化或二值化。灰度阈值变换的函数表达式如下:

2.4 图像形态学处理与精确定位
图像形态学处理是应用最广泛的图像技术之一,其目的主要是提取图像中对识别有意义的图像分量,能够抓住图像最本质的形状特征。图像形态学处理的主要运算方法包括:膨胀、腐蚀、开运算以及闭运算等[15]。图像经过腐蚀运算后可使边缘变得杂乱[16]。膨胀是指一个集或对象目标从其原来的形状扩大的过程[17]。腐蚀能够去除图像边界,而膨胀与其相反,能够扩大图像边界。本系统运用形态学的开运算(先腐蚀后膨胀)进行图像处理,移除车牌图像的连通与孤立像素,使图像轮廓变得更加光滑。使用结构元素 S 对 A 进行开运算,记作 A∘ S,可表示为:

一般来说,开运算可使图像轮廓变得光滑,断开狭窄的连接并消除细毛刺。如图 8 所示,开运算断开了图中两个小区域间的狭窄连接,并去除了右侧物体上部突出的一个小于结构元素的2 × 2 区域(去除细小毛刺)。但与腐蚀不同的是,图像大的轮廓并没有发生整体收缩,物体位置也没有发生任何变
化。本系统使用开运算运行后的图像形态学处理结果如图 9 所示。


2.5 图像车牌分割处理
图像分割是图像处理和计算机视觉中应用的基本技术手段[18],国内外广泛使用的图像分割方法主要包括阈值分割法、聚类分割法、区域生长法、深度学习法等[19]。文献[20]通过对比字符宽度对车牌图像进行分割,但效果不够理想。本系统采用阈值分割方法,针对图像像素灰度值的
不同,选取阈值将图片中的车牌号与背景分割开。常见的阈值分割方法有:①直方图阈值化法。其根据直方图谷底确定阈值,但当图像直方图两个区域峰值相差很远,且图像受噪声影响时,该算法则不适用;②迭代选择阈值法。但该算法的阈值迭代选择规则不容易选取;③最小均方误差法。该算法确定阈值时使用的参数非常复杂,而且对图像有正态分布的要求;④最大类间方差法。该方法不需要
人为设定其它参数,是一种自动选择阈值的方法,而且能得到较好的结果。最大类间方差法的原理为:对图像进行阈值分割时,选定的分割阈值应使前景区域、背景区域与整幅图像的平均灰度之间差别最大,这种差异用区域的方差表示。该方法不仅适用于包含两个区域的单阈值选择,也适用于多区域的多阈值选择,而且计算简单,不受图像对比度与亮度影响,是阈值分割算法中错分概率最小的一
种算法。




2.6 语音播报
系统会对最后的识别结果进行语音播报,系统中有提前录制好的数字、字母语音素材,系统通过相应函数实现其功能,部分关键代码如下:

function shengyin=fasheng(jieguoyuyin)sound(audioread(‘结果语音 .wav’),46000);pause(2);

3 结语
本文采用 GUI 图形处理系统进行车牌识别,并通过语音播报读出结果,可令使用者更方便地使用。测试结果表明,系统对车牌识别的精确度可由 95% 提高到 96.5%。由于字符笔划包含丰富的角点信息,后期还可采用角点字符检测方法提取出图像中的字符信息,并尝试使用神经网络算法,以期提高识别精确度至 97% 以上。

4 参考文献:
[1] XU L M,LIU H J. Overview of digital image processing technology[J].Software Guide,2016,15(3):181-182.徐黎明,刘航江. 数字图像处理技术研究综述[J]. 软件导刊,2016,
15(3):181-182.
[2] SUDHAGAR S,SAKTHIVEL M,DANIEL S A A. Application of im⁃age processing to radiographic image for quantitative assessment offriction stir welding quality of aluminium 2024 alloy[J]. Measure⁃ment,2020,152:107294. 孙 淳:基于 GUI图形处理系统的车牌识别 · 213 ·软 件 导 刊 2021 年
[3] ZHANG G C,WAN S P,HE J R. Digital image processing technology
and application in MATLAB[J]. Software,2019,40(11):139-142.
张广才,万守鹏,何继荣. 数字图像处理技术与MATLAB应用[J].软件,2019,40(11):139-142.
[4] CHEN F,GUAN L H. Application of modular teaching model in matlab software course[J]. Journal of Changchun University,2019,29(10):111-115.
陈锋,关丽红. 模块化教学模式在Matlab软件课程中的应用[J]. 长春大学学报,2019,29(10):111-115.
[5] ZHANG Y. The design and implementation of license plate image recognition based on MATLAB[J]. Information,2019(11):79-81.
张一. 基于MATLAB车牌图像识别的设计与实现[J]. 信息通信,2019(11):79-81.
[6] ZHANG P,LU S Q,XU H F. Research on license plate location technology based on MATLAB[J]. Science,2019(32):38-39.
张萍,陆淑勤,徐海峰. 基于MATLAB的车牌定位技术研究[J]. 科技视界,2019(32):38-39.
[7] SONG H,PEIYUE L. A MATLAB based graphical user interface(GUI)for quickly producing widely used hydrogeochemical diagrams[J]. Geochemistry,2019,80(4):125550.
[8] LI Y,LUO Z B. Design of a smart logistics vehicle control system[J].Journal of Jilin Teachers Institute of Engineering and Technology,2019,35(12):107-109.
李昱,罗忠宝. 智能物流车控制系统设计[J]. 吉林工程技术师范学院学报,2019,35(12):107-109.
[9] JOSÉ M P,ERNESTO M,GERMÁN O,et al. Freezing front velocity estimation using image processing techniques[J]. Measurement,2020,151:107085.
[10] A F L. Reserch on color image grayscale based on normalized product correlation matching[D]. Lanzhou:Lanzhou University,2018.
马方龙. 基于归一化积相关匹配的彩色图像灰度化研究[D]. 兰 州:兰州大学,2018. [11] HONGMEI Z,ZHIGAO Z,ZHILI P. Application and implementation of image point operation in gray scale transformation[C]. Proceedings of the 2015 International Conference on Electronic Science and Automation Control,2015:281-284.
[12] GUO L. Research on color image grayscale algorithm based on RGB color space[D]. Xi’an:Shaanxi Normal University,2017.
郭丽. 基于RGB颜色空间的彩色图像灰度化算法研究[D]. 西安:陕西师范大学,2017.
[13] PANDEY A,PATI U C. Image mosaicing:a deeper insight[J]. Image and Vision Computing,2019,89:236-257.
[14] XIAO H,LIN L,RONG L,et al. Binarization of degraded document images with global-local U-Nets[J]. Optik,2020,203:164025.
[15] QIAN Y. MATLAB-based Image morphological processing technology and application[J]. Journal of Neijiang Normal University,2019,
34(10):51-55.
钱月. 基于MATLAB的图像形态学处理技术与应用[J]. 内江师范学院学报,2019,34(10):51-55.
[16] ZHANG F G,LI K,DI S K,et al. Application of MATLAB in digital
image processing[J]. Computer Technology and Development,2019,29(11):216-220.
张飞鸽,李凯,翟少康,等. MATLAB在数字图像处理中的应用[J]. 计算机技术与发展,2019,29(11):216-220.
[17] GE Y,ZHAO R,GAO Z J. Research of image inpainting methods based on total variation model and dilation[J]. Information Technology and Network Security,2014,33(18):39-41,44.
葛艳,赵瑞,高占江. 基于TV模型和膨胀的图像修复方法研究[J].微型机与应用,2014,33(18):39-41,44.
[18] ZHENGMENG J,YIMENG W,LIHUA M,et al. A Retinex-based total variation approach for image segmentation and bias correction[J]. Applied Mathematical Modelling,2020,79:52-67.
[19] WANG Q P,ZHANG Z X,ZHU X F. Comprehensive summary of Image segmentation[J]. Information Recording Materials,2019,20(7):12-14.
王秋萍,张志祥,朱旭芳. 图像分割方法综述[J]. 信息记录材料,2019,20(7):12-14.
[20] MIU X X,SHEN X Q,DONG M Y,et al. Design of license plate recognition system based on MATLAB[J]. Technology Vision,2019(32):19-20.
缪鑫芯,沈雪琴,董梦影,等. 基于MATLAB的车牌识别系统设计[J]. 科技视界,2019(32):19-20.

⛄二、部分源代码

function varargout = Main(varargin)
% MAIN MATLAB code for Main.fig
% MAIN, by itself, creates a new MAIN or raises the existing
% singleton*.
%
% H = MAIN returns the handle to a new MAIN or the handle to
% the existing singleton*.
%
% MAIN(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in MAIN.M with the given input arguments.
%
% MAIN(‘Property’,‘Value’,…) creates a new MAIN or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Main_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Main_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Main

% Last Modified by GUIDE v2.5 12-May-2009 23:58:18

% Begin initialization code – DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @Main_OpeningFcn, …
‘gui_OutputFcn’, @Main_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code – DO NOT EDIT

% — Executes just before Main is made visible.
function Main_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Main (see VARARGIN)

% Choose default command line output for Main
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes Main wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% — Outputs from this function are returned to the command line.
function varargout = Main_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

% — Executes on selection change in listbox1.
function listbox1_Callback(hObject, eventdata, handles)
% hObject handle to listbox1 (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,‘String’)) returns listbox1 contents as cell array
% contents{get(hObject,‘Value’)} returns selected item from listbox1

% — Executes during object creation, after setting all properties.
function listbox1_CreateFcn(hObject, eventdata, handles)
% hObject handle to listbox1 (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles empty – handles not created until after all CreateFcns called

% Hint: listbox controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

% — Executes on selection change in listbox2.
function listbox2_Callback(hObject, eventdata, handles)
% hObject handle to listbox2 (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,‘String’)) returns listbox2 contents as cell array
% contents{get(hObject,‘Value’)} returns selected item from listbox2

% — Executes during object creation, after setting all properties.
function listbox2_CreateFcn(hObject, eventdata, handles)
% hObject handle to listbox2 (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles empty – handles not created until after all CreateFcns called

% Hint: listbox controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

% — Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
%———————-入停车场—————————–
[filename,filepath]=uigetfile(‘.jpg’,‘采集入库车牌’);% 直接自动读入%
file=strcat(filepath,filename); %strcat函数:连接字符串;把filepath的字符串与filename的连接,即路径/文件名
I=imread(file);
axes(handles.axes1)
imshow(I)
title(‘原图’)
I1=rgb2gray(I);
I2=edge(I1,‘roberts’,0.15,‘both’);
se=[1;1;1];
I3=imerode(I2,se);
se=strel(‘rectangle’,[25,25]);
I4=imclose(I3,se);
I5=bwareaopen(I4,2000);
[y,x,z]=size(I5);
myI=double(I5);
tic
white_y=zeros(y,1);
for i=1:y
for j=1:x
if(myI(i,j,1)==1)
white_y(i,1)= white_y(i,1)+1;
end
end
end
[temp MaxY]=max(white_y);
PY1=MaxY;
while ((white_y(PY1,1)>=5)&&(PY1>1))
PY1=PY1-1;
end
PY2=MaxY;
while ((white_y(PY2,1)>=5)&&(PY2<y))
PY2=PY2+1;
end
IY=I(PY1:PY2,:;
white_x=zeros(1,x);
for j=1:x
for i=PY1:PY2
if(myI(i,j,1)==1)
white_x(1,j)= white_x(1,j)+1;
end
end
end

PX1=1;
while ((white_x(1,PX1)❤️)&&(PX1<x))
PX1=PX1+1;
end
PX2=x;
while ((white_x(1,PX2)❤️)&&(PX2>PX1))
PX2=PX2-1;
end
PX1=PX1-2;
PX2=PX2+3;
dw=I(PY1:PY2-8,PX1:PX2,:);
axes(handles.axes2)
imshow(dw)
title(‘车牌定位’)
t=toc; %识别时间
a=dw; %定位的车牌
b=rgb2gray(a);
g_max=double(max(max(b)));
g_min=double(min(min(b)));
T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值
[m,n]=size(b);
d=(double(b)>=T); % d:二值图像

% 滤波
h=fspecial(‘average’,3);
d=im2bw(round(filter2(h,d)));
axes(handles.axes3)
imshow(d)
title(‘车牌区域二值化’)

⛄三、运行结果

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]呙润华,苏婷婷,马晓伟.BP神经网络联合模板匹配的车牌识别系统[J].清华大学学报(自然科学版),2013,53(9):1221-1226.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合