基于matlab车牌的定位与分割识别程序概要

合集下载

基于MATLAB的车牌识别程序详解..精要

基于MATLAB的车牌识别程序详解..精要
预处理部分,将采集到的图像转换为灰度图像, 便于后面处理,同时显示原图的图片以及处理好的灰度图片。
(2)图像增强与边缘检测 figure(2),subplot(1,2,2),imhist(I1;title('灰度图直方图');)%显 示图像直方图,图像增强处理,直方图均衡 I2=edge(I1,'robert',0.15,'both');%将灰度图像用Robert算子计算, 间距0.15,方向水平,垂直两个方向,图像边缘处理,利用Robert算 子运算 figure(3),imshow(I2)%显示边缘处理后的;title('robert算子边缘检 测') se=[1;1;1];%创造一个维度矩阵,用于腐蚀单位扫描 I3=imerode(I2,se);%将I3灰度腐蚀,se为腐蚀算子 figure(4),imshow(I3);title('腐蚀后图像');%对裁剪好的图像进行 图像增强处理,利用腐蚀处理 se=strel('rectangle',[25,25]);%构建一个25为边长的正方形结构体 图
(一)图像预处理 收集到的图片一般为彩色图片,由于彩色图片占用存储容
量大,处理时间长,因此需要对图像进行灰度转换,将彩色图像转 换为灰度图像,灰度图像只保留亮度信息,方便使用,也为后面的 对图像进行二值化处理提供方便。
程序:I1=rgb2gray(I); rgb2gray,MATLAB中灰度图像转换函数,原图及处理后的
PX1=PX1+1; end %从上至下截取一段区域,区域上限位PY1 PX2=x; while ((Blue_x(1,PX2)<3)&&(PX2>PX1))

基于MATLAB的车牌智能识别设计

基于MATLAB的车牌智能识别设计

基于MATLAB的车牌智能识别设计摘要:车牌智能识别技术是智能交通系统中的重要组成部分,能够提高交通管理效率和安全性。

本文基于MATLAB平台,设计了一种车牌智能识别系统,通过图像处理和模式识别技术实现车牌号码的准确识别。

该系统能够实现对车辆行驶过程中的车牌信息进行实时提取和识别,具有较高的准确性和稳定性,可以有效应用于停车场管理、交通违法抓拍等领域。

关键词:车牌智能识别;MATLAB;图像处理;模式识别一、引言随着汽车数量的快速增长,交通拥堵和交通管理成为社会发展中的一大难题。

为了提高交通管理效率和安全性,智能交通系统得到了广泛的关注和应用。

车牌智能识别技术作为智能交通系统中的重要组成部分,能够实现对车辆行驶过程中的车牌信息进行实时提取和识别,为交通管理和监控提供了重要的支持。

二、相关技术及方法1. 图像处理技术图像处理技术是车牌智能识别系统中的核心技术之一,主要包括灰度化、二值化、边缘检测、形态学处理等操作。

灰度化是将彩色图像转换为灰度图像,简化了图像信息的处理;二值化将灰度图像转换为二值图像,方便进行特征提取和分割操作;边缘检测可以准确提取车牌的轮廓信息;形态学处理可以用于去除图像中的噪声点和填充孔洞,提高字符的连通性。

2. 字符分割与特征提取字符分割是指将车牌图像中的字符分离出来,是车牌识别的关键步骤之一。

在字符分割后,需要进行字符的特征提取,包括字符的大小、形状、像素点分布等特征。

这些特征可以用于字符的识别和分类,提高识别的准确性和鲁棒性。

3. 模式识别算法模式识别算法是车牌智能识别系统中的另一个核心技术,主要包括基于模板匹配的模式识别、基于统计学习的模式识别、基于深度学习的模式识别等方法。

这些算法能够对字符进行准确的识别和分类,为车牌智能识别系统提供了强大的分析和识别能力。

三、车牌智能识别系统设计基于MATLAB平台,设计的车牌智能识别系统主要包括图像预处理、字符分割与特征提取、模式识别和结果输出四个主要模块。

基于MATLAB的车牌识别系统的设计毕业设计

基于MATLAB的车牌识别系统的设计毕业设计

毕业设计基于MATLAB的车牌识别系统的设计摘要:汽车车牌的识别系统是现代智能交通管理的重要组成部分之一。

车牌识别系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。

车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识别等五大核心部分。

本文主要介绍图像预处理、车牌定位、字符分割三个模块的实现方法。

本文的图像预处理模块是将图像灰度化和用Roberts算子进行边缘检测的步骤。

车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车牌彩色信息的彩色分割法来完成车牌部位分割。

字符的分割采用的方法是以二值化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分割。

本文即是针对其核心部分进行阐述并使用MATLAB软件环境中进行字符分割的仿真实验。

关键词:MATLAB、图像预处理、车牌定位、字符分割一、发展背景车辆的牌照是机动车的识别标志,在交通管理中有着重要的作用。

通过汽车车牌识别系统可以监控车辆的信息和行驶状况,可以最迅速的实现车辆控制以及交通状况的调控,所以对于现代智能交通至关重要。

该系统主要有两大模块:图像处理模块和字符识别模块。

本文主要对图像处理模块进行设计和研究。

图像处理模块的质量好坏更是衡量整个系统成功与否的关键。

MATLAB语言对于图像的处理非常方便,能够直接调用编好的函数,为整个系统提供了保障。

二、系统框架结构以及流程汽车车牌自动识别系统主要包括触发拍照、图像采集、图像预处理、车牌定位、字符分割、字符识别、输出结果等单元。

触发拍照:该单元会自动检测车辆在指定区域的存在,现有的成熟技术的有线圈触发、视频触发、红外触发、雷达触发以及激光触发。

其中线圈触发和视频触发得到了广泛的应用。

图像采集:该单元是指道路上安装的摄像头在检测到有车辆通过的同时进行拍照并借助网络传送到汽车自动识别系统。

图像预处理:该单元是指车牌识别系统对拍摄的汽车图片进行灰度化和边缘检测等处理。

基于某matlab车牌地定位与分割识别程序

基于某matlab车牌地定位与分割识别程序

基于Matlab的车牌定位与分割经典算法I=imread('car.jpg'); %读取图像figure(); subplot(3,2,1),imshow(I), title('原始图像');I1=rgb2gray(I);%转化为灰度图像subplot(3,2,2),imshow(I1),title('灰度图像');I2=edge(I1,'robert',0.09,'both');%采用robert算子进行边缘检测subplot(3,2,3),imshow(I2),title('边缘检测后图像');se=[1;1;1]; %线型结构元素I3=imerode(I2,se); %腐蚀图像subplot(3,2,4),imshow(I3),title('腐蚀后边缘图像');se=strel('rectangle',[25,25]); 矩形结构元素I4=imclose(I3,se);%图像聚类、填充图像subplot(3,2,5),imshow(I4),title('填充后图像');I5=bwareaopen(I4,2000);%去除聚团灰度值小于2000的部分subplot(3,2,6),imshow(I5),title('形态滤波后图像');[y,x,z]=size(I5);I6=double(I5);Y1=zeros(y,1);for i=1:yfor j=1:xif(I6(i,j,1)==1)Y1(i,1)= Y1(i,1)+1;endendend[temp MaxY]=max(Y1);figure();subplot(3,2,1),plot(0:y-1,Y1),title('行方向像素点灰度值累计和'),xlabel('行值'),ylabel('像素');%求的车牌的行起始位置和终止位置PY1=MaxY;while ((Y1(PY1,1)>=50)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while ((Y1(PY2,1)>=50)&&(PY2<y))PY2=PY2+1;endIY=I(PY1:PY2,:,:);X1=zeros(1,x);for j=1:xfor i=PY1:PY2if(I6(i,j,1)==1)X1(1,j)= X1(1,j)+1;endend endsubplot(3,2,2),plot(0:x-1,X1),title('列方向像素点灰度值累计和'),xlabel('列值'),ylabel('像数');%求的车牌的列起始位置和终止位置PX1=1;while ((X1(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;while ((X1(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPX1=PX1-1;PX2=PX2+1;%分割出车牌图像%dw=I(PY1:PY2,PX1:PX2,:);subplot(3,2,3),imshow(dw),title('定位剪切后的彩色车牌图像')4.2 车牌字符分割确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像。

基于MATLAB的车牌识别程序详解..精要

基于MATLAB的车牌识别程序详解..精要
本系统应用图像处理技术、车牌分割技术、字符特征 提取方法、神经网络识别技术,模板匹配的方法来解决 车辆牌照识别问题。完整的车牌识别系统包括图像采集、 图像处理、车牌定位、字符分割、字符识别、数据库、 数据库支持模块等模块步骤:图像预处理,图像增强, 图像去噪,图像切割,图像提取等几个步骤。
(1)车牌区域内字符的纹理特征。 (2)车牌的格式标准和字符标准信息。 (3)车牌区域水平或者垂直投影特征。 (4)车牌区域的位置特点。 (5)车牌的彩色信息。 (6)频谱特征。
处理方法主要分为两大块:行定位与列定位。具体方法如下: 获取特征图像 要想从一整幅包括车身,背景等其他相对于车牌来说属于干扰因素
相关的MATLAB 指令: h=fspecial(‘average’,3); ;%平均值的设定 d=im2bw(round(filter2(h,d)));%平均滤波
(四)、图像的边缘检测:
边缘是图像的最本特征,边缘检测在计算机视觉、图像分析等应 用中起着重要的作用,使图像识别与分析的重要环节。边缘存在于 目标与背景、目标与目标、区域与区域之间因此它是图像分割、形 状特征、纹理特征的基础。缘具有方向与幅度两个特征。沿边缘走 向,像素变化比较平缓。而垂直于边缘走向,则像素变化剧烈。这 种剧烈可能呈现阶跃状,也可能呈现斜坡状。边缘的上的像素的一 阶导数较大; 二阶导数在边缘检测处值为零,呈现零交叉。这种特 点使得边缘检测可以利用数学方法获得,经典的边缘检测算子有 Roberts、Sobel、Prewitt、LoG、Canny算子。
(一)图像预处理 收集到的图片一般为彩色图片,由于彩色图片占用存储容
量大,处理时间长,因此需要对图像进行灰度转换,将彩色图像转 换为灰度图像,灰度图像只保留亮度信息,方便使用,也为后面的 对图像进行二值化处理提供方便。

基于matlab车牌的定位与分割识别程序概要

基于matlab车牌的定位与分割识别程序概要

基于Matlab 的车牌定位与分割 经典算法I 二imread('car.jpg');I1=rgb2gray(l);%转化为灰度图像subplot(3,2,2),imshow(I1),title('灰度图像');I2=edge(I1,'robert',0.09,'both');%采用 robert 算子进行边缘检测 subplot(3,2,3),imshow(I2),title('边缘检测后图像');%读取图像figure 。

; subplot(3,2,1),imshow(l), title('原始图像');边绿检浪I 启图像se=[1;1;1]; %线型结构元素 I3=imerode(l2,se);%腐蚀图像subplot(3,2,4),imshow(l3),title('腐蚀后边缘图像');se=strel('recta ngle',[25,25]);矩形结构元素 I4=imclose(l3,se);%图像聚类、填充图像 subplot(3,2,5),imshow(I4),title('填充后图像');一5Hbwa「eaopen(一4200S % 卅弗W HM W 血、」丿-H 2000subp_0f(326二M X N H si z e (_5=_6Hdoub_e(_5xYlHzeros(y3_fonyf o r li-r xif(l6(i,j,1)==1)Y 1(i,1)= Y1(i,1)+1;endend[temp MaxY]=max(Y1);figure。

;subplot(3,2,1),plot(0:y-1,Y1),title('行方向像素点灰度值累计和'), xlabel('行值'),ylabel('像素');行值%求的车牌的行起始位置和终止位置PY 仁Max Y;while ((Y 1(PY1,1)>=50)&&(PY 1>1))PY 1=P Y1-1;endPY 2=Max Y;while ((Y 1(PY2,1)>=50)&&(PY2<y))endPY 2=P Y2+1;endIY=I(P Y1:P Y2,:,:);X1= zeros(1,x);for j=1:xfor i=PY1:PY2if(l6(i,j,1)==1)X1(1,j)= X1(1,j)+1;endend endsubplot(3,2,2),plot(0:x-1,X1),title('列方向像素点灰度值累计和'), xlabel('列值'),ylabel('像数');歹U方向像素点衣度值黒计环CT1OC%求的车牌的列起始位置和终止位置PX仁1;while ((X1(1,PX1)<3)&&(PX1<x))PX1= PX1+1;endPX2=x;O 2OD 400 600 800歹UfSwhile ((X1(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPX仁PX1-1;PX2=PX2+1;%分割出车牌图像%dw=l(P Y1:P Y2,PX1:PX2,:);subplot(3,2,3),imshow(dw),title('定位剪切后的彩色车牌图像')定位剪切后的耘色车牌图像4.2车牌字符分割确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像。

基于Matlab的车牌识别(完整版)

基于Matlab的车牌识别(完整版)

基于Matlab的车牌识别摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展。

本文从预处理、边缘检测、车牌定位、字符分割、字符识别五个方面,具体介绍了车牌自动识别的原理。

并用MATLAB软件编程来实现每一个部分,最后识别出汽车车牌。

一、设计原理车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。

车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。

其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。

某些车牌识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。

一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。

当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。

车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。

二、设计步骤总体步骤为:基本的步骤:a.车牌定位,定位图片中的车牌位置;b.车牌字符分割,把车牌中的字符分割出来;c.车牌字符识别,把分割好的字符进行识别,最终组成车牌号码。

车牌识别过程中,车牌颜色的识别依据算法不同,可能在上述不同步骤实现,通常与车牌识别互相配合、互相验证。

(1)车牌定位:自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定车牌区域是整个识别过程的关键。

首先对采集到的视频图像进行大范围相关搜索,找到符合汽车车牌特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为车牌区域,并将其从图象中分割出来。

车牌识别matlab实验报告

车牌识别matlab实验报告

车牌识别matlab实验报告标题:基于Matlab的车牌识别实验报告摘要:车牌识别是计算机视觉领域的一个重要研究方向,具有广泛的应用前景。

本实验基于Matlab平台,设计并实现了一个简单的车牌识别系统。

实验采用了图像处理和模式识别的技术,通过对车牌图像的预处理、字符分割和字符识别等步骤,成功地实现了对车牌的自动识别。

实验结果表明,该系统在不同场景下的车牌识别效果良好。

一、引言随着交通问题的日益突出,车牌识别技术在交通管理、安防等领域得到广泛应用。

车牌识别系统的核心是对车牌图像进行处理和分析,从中提取出车牌的信息。

本实验旨在利用Matlab平台,实现一个简单的车牌识别系统,并对其性能进行评估。

二、实验方法1. 数据收集:收集包含不同角度、光照条件和车牌类型的车牌图像,并建立一个图像库。

2. 图像预处理:对采集到的车牌图像进行预处理,包括图像增强、灰度化、二值化等操作,以减小光照和噪声对后续处理的影响。

3. 车牌定位:利用边缘检测和形态学处理等方法,对预处理后的图像进行车牌定位,提取出车牌区域。

4. 字符分割:对提取到的车牌区域进行字符分割,将车牌中的字符单独切割出来,以便后续的字符识别。

5. 字符识别:利用模式识别算法,对字符进行识别。

本实验采用了支持向量机(SVM)算法进行训练和分类。

6. 性能评估:对实验结果进行评估,包括准确率、召回率和F1值等指标。

三、实验结果与讨论经过实验测试,我们的车牌识别系统在不同场景下表现出良好的性能。

在收集的测试集上,系统的准确率达到了90%,召回率为85%。

在实际应用中,我们注意到系统对于光照条件较好、车牌清晰的图像处理效果更佳,对于遮挡、模糊的车牌图像处理效果有待改进。

四、结论本实验基于Matlab平台,设计并实现了一个简单的车牌识别系统。

通过图像预处理、车牌定位、字符分割和字符识别等步骤,我们成功地实现了对车牌的自动识别。

实验结果表明,该系统在不同场景下的车牌识别效果良好,并能够较为准确地提取出车牌中的字符信息。

车牌识别matlab源程序基于颜色的车牌定位和分割技术研究与实现function

车牌识别matlab源程序基于颜色的车牌定位和分割技术研究与实现function

车牌识别matlab源程序基于颜色的车牌定位和分割技术研究与实现function车牌识别matlab 源程序基于颜色的车牌定位和分割技术研究与实现function [seg] = character_segmentation(bw); % character_segmentation: Returns the digit segments in the supplied binary image. % The function uses the "segment" function, keeping only the seven % segments in the result with largest area, and in case less than seven % segments were found, it attempts to recall the function, making the % separation between the already found segments clearer (by cleaning the % bits which are there. DIGIT_WIDTH = 18; MIN_AREA = 250; load global_var.mat; plot_vector(sum(bw), 4, Character Segmentation - Columns Sum Graph:, debug2); seg = segment(bw, DIGIT_WIDTH, MIN_AREA); [x y] = size(seg); % If we got less than 7 digits, we try to make the sepration between them % clearer by cleaning the bits between them, and we call the "segment" % function again: if x < 7 for i = 1 : x bw(:,seg(i,2))=0; end; seg = segment(bw, DIGIT_WIDTH, MIN_AREA); end; % Keeping in the results the seven segments with the largest area: area = []; for i = 1 : x pic = bw(:, seg(i,1) : seg(i,2), :); area(i) = bwarea(pic); end; area1 = sort(area); seg = seg; for j = 1:(length(area1)-7) i = find(area == area1(j)); len = length(area); if i == 1 area = [area(2:len)]; seg = [seg(:,2:len)]; elseif i == len area = [area(1:i-1)]; seg = [seg(:,1:i-1)]; else area = [area(1:i-1) area(i+1:len)]; seg = [seg(:,1:i-1) seg(:,i+1:len)]; end; end; seg = seg; return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% %%%% %%%%%%%%%%%%%%%% %%%%%%%%%%% function [segmentation] = segment(im, digit_width, min_area); % segment: Segment the pictures in digitimages according to the variable % "digit_width" and returns a matrix containing the two bounds of the each % digit segment. The function keeps in the result only segment whose % "rectangular" areas is more than "min_area". segmentation = []; % Summing the colums of the pic: t = sum(im); % Getting the segments in the pic: seg = clean(find_valleys(t, 2, 1, digit_width), 3); % Keeping in the result only the segments whose rectangular areas is more than min_area: j = 1; for i = 1 : (length(seg) - 1) band_width = seg(i+1) - seg(i); maxi = max(t(1, seg(i):seg(i+1))); if(maxi * band_width > min_area) segmentation(j, 1) = seg(i); segmentation(j, 2) = seg(i+1); j = j + 1; end; end; return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% %%%% %%%%%%%%%%%%%%%% %%%%%%%%%%% function [s] = find_valleys(t, val, offset, digit_width); % find_valleys: Uses the method named peak-to-valleyin order to segment the % pictures in digit images getting the two bounds of the each digit segment % according to the statistical parameter digit_width = 18. % The function is recursive; it uses the vector of the sums of the columns % in the LP binary image supplied in the parameter "t". % The function passes over the graph corresponding to this vector from left % to right, bottom-up, incrementing at each recursive step the height that % is examined on the graph (val). It checks the bandwidth of the first part % of the signal: if it is greater than DIGIT_WIDTH, the function is % recursively called after incrementing the height which is examined on % the graph, (val). Otherwise, if the bandwidth is good, the two bounds of % the signal with this bandwidth are taken as a digit segment, and the % function is recursively called for the part of the image which is at % the right side of the digit segment just found. This is done until the %whole width of the picture has been passed over. % Determining the points which are inferior to the examined hieght: s = find(t < val); % If no more than one point is found, incrementing val and recursively calling the function again. if(length(s) < 2) s = find_valleys(t, val + 1, offset, digit_width); return; end; % If no point is found terminating: if length(s) == 0 return; end; % Arranging the boundaries, so that if we have a big value at the beginning % or the end of the picture the algorithm still works: in this case, the % algorithmincludes also those points. if((t(1,1) >= val) & s(1) ~= 1) s = [1 s]; end; if((t(1, length(t)) >= val) & s(length(s)) ~= length(t)) s = [s length(t)]; end; % Updating the real coordinates according to offset: s = add(s, offset - 1); % Cleaning points which are very close each other keeping only one of them. s = clean(s, 3); % While there is a bad segment in "s", (starting from the left side): while bad_segm(s, digit_width) == 1 for i = 1: (length(s) - 1) if (s(i + 1) - s(i)) > digit_width % The subvector which does not correspond to a valid digit % segemnt: sub_vec = t(1, s(i) - offset + 1 : s(i+1) - offset + 1); % Recursively, separating this bad segment in two or more valid % digit segments: s = [s(1 : i) find_valleys(sub_vec, val + 1, s(i), digit_width) s(i+1 : length(s))]; end; end; end;return; %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%% %%%% %%%%%%%%%%%%%% %%%%%%%%%%%%% function [bool] = bad_segm(s, digit_width); % bad_segm: Returns true (1) iff there is a bad digit segment in s, namely, % two points that ar distant one from the other by more than "digit_width". if length(s) == 0 bool = 0; return; end; tmp = s(1); bool = 0; for i = 2 : length(s) if(s(i) - tmp) > digit_width bool = 1; return; end; tmp = s(i); end;return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% %%%% %%%%%%%%%%%%%%%% %%%%%%%%%%% function [t] = clean(s, val); % clean: Cleans form the vector s all the poins which are distant the one % from the other by less than "val" keeping only one of them. t = []; len = length(s); i = 2; j = 1; while i <= len while(s(i) - s(i-1) <= val) i = i + 1; if(i > len) return; end; end; if j == 1 | (s(i-1) - t(j-1)) > val t(j) = s(i-1); j = j + 1; end; t(j) = s(i); j = j + 1; i = i + 1; end; return; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% %%%% %%%%%%%%%%%%%%%% %%%%%%%%%%% function [t] = add(s, val); % add: Adds "val" to each one of the entries in the vector s and returns the new vector. len = length(s); t = []; for i = 1:len t(i) = s(i) + val; end; return;。

基于matlab的蓝色车牌定位与识别---定位

基于matlab的蓝色车牌定位与识别---定位

基于matlab的蓝⾊车牌定位与识别---定位接着昨天的⼯作继续。

定位的过程有些是基于车牌的颜⾊进⾏定位的,⾃⼰则根据数字图像⼀些形态学的⽅法进⾏定位的。

合着代码进⾏相关讲解。

1.相对彩⾊图像进⾏灰度化,然后对图像进⾏开运算。

再⽤⼩波变换获取图像的三个分量。

考虑到车牌的竖直分量较为丰富,选⽤竖直分量进⾏后续操作。

注意下,这⾥的⼀些参数可能和你的图⽚⼤⼩有关,所以要根据实际情况调整。

Image=imread('D:\1_2学习\图像处理\车牌识别\matlab_car_plate-recognization\car_example\car0.jpg');%获取图⽚im=double(rgb2gray(Image));im=imresize(im,[1024,2048]);%重新设置图⽚⼤⼩ [1024,2048]% % 灰度拉伸% % im=imadjust(Image,[0.150.9],[]);s=strel('disk',10);%strei函数Bgray=imopen(im,s);%打开sgray s图像% % figure,imshow(Bgray);title('背景图像');%输出背景图像% %⽤原始图像与背景图像作减法,增强图像im=imsubtract(im,Bgray);%两幅图相减% figure,imshow(mat2gray(im));title('增强⿊⽩图像');%输出⿊⽩图像[Lo_D,Hi_D]=wfilters('db2','d'); % d Decomposition filters[C,S]= wavedec2(im,1,Lo_D,Hi_D); %Lo_D is the decomposition low-pass filter% decomposition vector C corresponding bookkeeping matrix Sisize=prod(S(1,:));%元素连乘%cA = C(1:isize);%cA 49152cH = C(isize+(1:isize));cV = C(2*isize+(1:isize));cD = C(3*isize+(1:isize));%cA = reshape(cA,S(1,1),S(1,2));cH = reshape(cH,S(2,1),S(2,2));cV = reshape(cV,S(2,1),S(2,2));cD = reshape(cD,S(2,1),S(2,2));获取结果2. 对上⾯过程中获取的图像进⾏边沿竖直⽅向检测,再利⽤形态学的开闭运算扩⼤每个竖直⽅向⽐较丰富的区域。

《2024年基于MATLAB的车牌识别系统研究》范文

《2024年基于MATLAB的车牌识别系统研究》范文

《基于MATLAB的车牌识别系统研究》篇一一、引言随着科技的发展,车牌识别系统在交通管理、安全监控、车辆定位等领域的应用越来越广泛。

MATLAB作为一种强大的编程语言和数据处理工具,被广泛应用于图像处理和机器视觉等领域。

本文旨在研究基于MATLAB的车牌识别系统,包括系统的基本原理、实现方法、实验结果和结论。

二、车牌识别系统的基本原理车牌识别系统是一种基于图像处理和机器视觉技术的自动识别系统。

其主要原理包括图像预处理、车牌定位、字符分割和字符识别四个部分。

在MATLAB中,这些过程通过数字图像处理算法、计算机视觉算法以及机器学习算法实现。

(一)图像预处理图像预处理是车牌识别系统的第一步,主要目的是消除图像中的噪声和干扰信息,提高图像的清晰度和对比度,以便后续的图像处理和分析。

常用的预处理方法包括灰度化、二值化、滤波等。

(二)车牌定位车牌定位是车牌识别系统的关键步骤,其主要目的是从图像中准确地检测出车牌的位置。

常用的车牌定位方法包括基于颜色特征的方法、基于形状特征的方法和基于模板匹配的方法等。

在MATLAB中,可以通过边缘检测、Hough变换等方法实现车牌的定位。

(三)字符分割字符分割是将车牌图像中的每个字符分割出来的过程。

常用的字符分割方法包括投影法、连通域法等。

在MATLAB中,可以通过图像形态学操作、阈值分割等方法实现字符的分割。

(四)字符识别字符识别是将分割后的字符进行分类和识别的过程。

常用的字符识别方法包括模板匹配法、神经网络法等。

在MATLAB中,可以通过训练分类器、使用机器学习算法等方法实现字符的识别。

三、车牌识别系统的实现方法在MATLAB中,我们可以通过编写程序实现车牌识别系统的各个步骤。

具体实现方法如下:(一)图像预处理首先,对输入的图像进行灰度化和二值化处理,消除噪声和干扰信息。

然后,通过滤波等操作提高图像的清晰度和对比度。

(二)车牌定位通过边缘检测和Hough变换等方法检测出车牌的轮廓,并确定车牌的位置。

毕业设计论文-基于matlab的车牌识别系统的设计(附程序+详解注释)

毕业设计论文-基于matlab的车牌识别系统的设计(附程序+详解注释)
焦作大学
毕业设计(论文)说明书
作 者:
学 号:
学院(系):
信息工程学院
专 业:
通信技术
题 目: 基于 matlab 的车牌识别系统的设计
主 题:
指导教师:
职称 讲师
2012 年 12 月
焦作大学毕业设计说明书
II
摘要
汽车车牌的识别系统是现代智能交通管理的重要组成部分之一。车牌识别 系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。 车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识 别等五大核心部分。本文主要介绍图像预处理、车牌定位、字符分割三个模块的 实现方法。本文的图像预处理模块是将图像灰度化和用 Roberts 算子进行边缘检 测的步骤。车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车 牌彩色信息的彩色分割法来完成车牌部位分割。字符的分割采用的方法是以二值 化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分 割。本文即是针对其核心部分进行阐述并使用 MATLAB 软件环境中进行字符分割 的仿真实验。
5.实验结果和分析.............................................................................................................22 6.实验总结.........................................................................................................................24 致谢.......................................................................................................................................25 参考文献...............................................................................................................................26 程序附录...............................................................................................................................27

基于matlab的汽车牌照识别系统的设计

基于matlab的汽车牌照识别系统的设计

基于matlab的汽车牌照识别系统的设计摘要:随着公路逐渐普及,我国的公路交通事业发展迅速,所以人工管理方式已经不能满着实际的需要,微电子、通信和计算机技术在交通领域的使用极大地提高了交通管理效率。

汽车牌照的自动识别技术已经得到了广泛使用。

本次试验主要有预处理、边缘提取、车牌定位、字符分割四大模块。

用MATLAB软件编程来实现每一个部分。

关键词: MATLAB 图像处理车牌定位牌照分割1 系统功能介绍和总体设计功能介绍:一、车牌定位(1)图像预处理:对动态采集到的图像进行滤波、边界增强等处理以克服图像干扰;(2)车牌定位:计算边缘图像的投影面积,寻找峰谷点,大致确定车牌位置,再计算此连通域内的宽高比,剔除不在域值范围内的连通域,最后得到的便为车牌区域;二、字符识别(1)字符分割:利用投影检测的字符定位分割方法得到单个的字符;(2)字符数据库:为第6步的字符识别建立字符模板数据库;(3)字符识别:通过基于模板匹配的OCR算法或基于人工神经网络的OCR算法,通过特征对比或训练识别出相关的字符,得到最后的汽车牌照,包括英文字母和数字。

总体设计:车辆牌照识别整个系统主要是由车牌定位和字符分割两部分组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符分割牌照分割和单个字符分割两个模块。

为了便于试验顺利进行,原始图象应具有适当的亮度,较大的对比度和清晰可辩的牌照图象。

但由于该系统的摄像部分工作于开放的户外环境,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机和牌照的矩离和角度以及车辆行驶速度等因素的影响,牌照图象可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图象进行识别前的预处理。

牌照的定位和分割主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将牌照从整个图象中分割出来。

由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。

基于matlab的汽车牌照识别系统的设计

基于matlab的汽车牌照识别系统的设计

基于matlab的汽车牌照识别系统的设计摘要:随着公路逐渐普及,我国的公路交通事业发展迅速,所以人工管理方式已经不能满着实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。

汽车牌照的自动识别技术已经得到了广泛应用。

本次试验主要有预处理、边缘提取、车牌定位、字符分割四大模块。

用MATLAB软件编程来实现每一个部分。

关键词: MATLAB 图像处理车牌定位牌照分割1 系统功能介绍与总体设计功能介绍:一、车牌定位(1)图像预处理:对动态采集到的图像进行滤波、边界增强等处理以克服图像干扰;(2)车牌定位:计算边缘图像的投影面积,寻找峰谷点,大致确定车牌位置,再计算此连通域内的宽高比,剔除不在域值范围内的连通域,最后得到的便为车牌区域;二、字符识别(1)字符分割:利用投影检测的字符定位分割方法得到单个的字符;(2)字符数据库:为第6步的字符识别建立字符模板数据库;(3)字符识别:通过基于模板匹配的OCR算法或基于人工神经网络的OCR算法,通过特征对比或训练识别出相关的字符,得到最后的汽车牌照,包括英文字母和数字。

总体设计:车辆牌照识别整个系统主要是由车牌定位和字符分割两部分组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符分割牌照分割和单个字符分割两个模块。

为了便于试验顺利进行,原始图象应具有适当的亮度,较大的对比度和清晰可辩的牌照图象。

但由于该系统的摄像部分工作于开放的户外环境,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机与牌照的矩离和角度以及车辆行驶速度等因素的影响,牌照图象可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图象进行识别前的预处理。

牌照的定位和分割主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将牌照从整个图象中分割出来。

由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。

基于MATLAB的车牌识别系统

基于MATLAB的车牌识别系统

基于MATLAB的车牌识别系统
MATLAB是一款常用的科学计算软件,它具有强大的图像处理功能,因此可以用来实现一些基于图像的应用,如车牌识别系统。

以下是一个基于MATLAB的车牌识别系统的实现步骤:
1. 图像采集:使用摄像头或者其他图像采集设备获取车牌图像。

2. 图像预处理:对采集到的车牌图像进行预处理,实现图像的
灰度化、噪声去除、边缘检测等操作。

3. 车牌定位:在处理后的图像中,通过车牌的大小、形状以及
颜色等特征,确定车牌的位置和范围。

4. 字符切割:根据车牌的字符间距和字符大小等特征,将车牌
区域的字符进行切割和分离,得到每个字符的图像。

5. 字符识别:利用机器学习算法、神经网络等方法,对切割出
的字符进行识别,确定车牌号码。

6. 结果显示:将识别结果显示在屏幕上,以及保存结果。

需要注意的是,在识别车牌号码的过程中,需要大量的实例图
像和标注数据,用来进行训练和测试。

同时,对于车牌识别系统,
还需要考虑一些实际应用中的问题,如光线、角度、车速等因素对
图像质量的影响。

因此,需要设计合适的算法和方法,充分考虑实
际应用中的各种因素,提高识别准确度和可靠性。

基于matlab的蓝色车牌定位与识别---分割

基于matlab的蓝色车牌定位与识别---分割

基于matlab的蓝⾊车牌定位与识别---分割接着上⾯的⼯作,接下去就该是进⾏字符分割了。

考虑到为了后⾯的字符识别,因此在这部分需要实现的⽬标是需要把车牌的边框全部切除,对重新定位的车牌进⾏垂直⽅向⽔平⽅向调整,保证字符是正的。

最后才是字符的分割。

1.⾸先上下边框切割。

对定位的车牌每⾏作⼀次的差分,计算每⾏的综合,⼩于某个阈值时候将其舍去。

部分代码:[length height]=size(p);% ⽔平⽅向定位for i=1:length % ⽔平⼀阶差分for j=1:height-1revise_row(i,j)=abs(p(i,j)-p(i,j+1));endrevise_row(i,height)=revise_row(i,height-1);endfor i=1:lengthT(i)=sum(revise_row(i,:));endfor i=2:length-1T(i)=1/2*(T(i-1)+T(i)+T(i+1));endT(1)= T(2);T(length)=T(length-1);% 截取⽔平区间left_row=0;right_row=0;threshold_row=max(T);for i=1:lengthif(T(i)>1/6*threshold_row)left_row=i;break;endendfor i=length:-1:1if(T(i)>1/6*threshold_row)right_row=i;break;endendtemp=1;for i=left_row:right_row %截取区间p_row(temp,:)=p1(i,:);temp=temp+1;end左右切割结果图:2 左右边框切割。

对定位的车牌每列作⼀次的差分。

考虑到左右边框的⼀阶总数是两边⼤,中间⼩,因此采⽤获取左右的峰值,当⼩于峰值的摸个阈值时进⾏截取。

部分代码:% 竖直⽅向定位for j=1:height % ⼀阶差分for i=1:length-1revise_column(i,j)=abs(p1(i,j)-p1(i+1,j));endrevise_column(length,j)=0;endfor j=1:heightT(j)=sum(revise_column(:,j));endfor j=2:height-1T(j)=1/3*(T(j-1)+T(j)+T(j+1));endT(1)= T(2);T(height)=T(height-1);[max_peak max_num]=max(T);%求出峰值threshold=0.25*max_peak;%阈值left_peak= T(1);right_peak= T(height);%找到左峰值for j=2:heightif(T(j)>=threshold&(T(j)>=T(j-1))&(T(j)>=T(j+1))&(j<=max_num))left_peak=j;break;endend%找到右峰值if(max_num<1/2*height)threshold=1/2*threshold;endfor j=height-1:-1:2if(T(j)>=threshold&(T(j)>=T(j-1))&(T(j)>=T(j+1))&(j>=max_num))right_peak=j;break;endendleft_valley=1;%⾕底值right_valley=right_peak;%找出左边最⼩值for j=left_peak:-1:2if((T(j)<=T(j-1))&(T(j)<=T(j+1)))left_valley=j;break;endendfor j=right_peak:height-1if((T(j)<=T(j-1))&(T(j)<=T(j+1)))right_valley=j;break;endendtemp=1;for j=left_valley:right_valley %截取部分参数分开,否则仍然按照原图⼤⼩p_array(:,temp)=p_row(:,j);temp=temp+1;end截取图:3 接下来进⾏车牌的⽔平校正。

基于MATLAB的车牌分割与数字识别系统毕业论文

基于MATLAB的车牌分割与数字识别系统毕业论文

学号:南湖学院毕业设计(论文)题目:基于MATLAB的车牌分割与数字识别算法设计作者届别系别机械与电子工程系专业电子信息工程指导老师职称完成时间2013.05摘要车牌识别技术是智能道路交通管理的重要容,其识别的准确性和可靠性直接影响到交通管理系统的性能。

车牌识别技术包括车牌图像获取、车牌定位、车牌分割、车牌校正、车牌字符分割、车牌字符归一化和车牌字符识别,本文重点针对车牌图像的分割和车牌数字的识别进行了算法研究和设计,同时也对其它步骤进行了探讨。

论文首先对获取的车牌图像进行了预处理,包括车牌图像增强、车牌区域提取、车牌几何校正以与车牌字符分割和归一化,然后设计了BP网络算法,最后在MATLAB平台上设计实现了以上各种算法。

实验结果表明,本文中的分割算法能准确的获取字符区域并实现对字符的分割和归一化,经过训练后的BP网络能稳定、可靠的实现对分割后字符的识别,实验结果达到预期要求。

关键词:MATLAB;车牌分割;图像预处理;数字识别AbstractLicense plate recognition technology is an important content of intelligent traffic management, accuracy and reliability identification directly affects the performance of traffic management system. License plate recognition technology include license plate image acquisition, license plate location, license plate segmentation, license plate correction, license plate character segmentation, normalization of license plate character segmentation and license plate character recognition. This paper mainly design and research on the algorithm for license plate image segmentation and license plate number recognition, but also for other steps. Firstly, the thesis get the license plate image preprocessing, including license plate image enhancement, plate region extraction, plate geometric correction and license plate character segmentation and normalization, and then designs the BP network algorithm, finally use the MATLAB platform to design algorithms to implement above. Experimental results show that the segmentation algorithm in this thesis can obtain character area and realize the character segmentation and normalization accurately, after training the BP network can implement the recognition for character segmentation stably and reliably, the experimental reaches expectation.Keywords: MATLAB; License plate segmentation; Image preprocessing; Digital identification目录摘要IABSTRACTI1 绪论11.1引言11.2车牌识别技术概述11.3车牌分割和数字识别的发展历史和现状2 1.4车牌分割和数字识别在车牌识别中的作用31.5本文的主要容与结构安排32 车牌分割方法42.1车牌获取42.2车牌预处理42.3车牌分割73 车牌数字识别方法113.1数字识别概述113.2车牌数字特点113.3基于神经网路的车牌数字识别134 基于MATLAB的算法设计与实现154.1MATLAB概述154.2车牌分割算法设计154.3车牌字符识别算法设计245 总结与展望315.1总结315.2展望31参考文献32致 341 绪论1.1 引言近年来,由于国外的交通迅速发展,车牌识别系统作为数字摄像、计算机信息管理、图像分割和图形识别技术在智能交通领域得到广泛的应用,该项技术成为了智能交通管理系统中不可或缺的重要组成部分,例如道路交通监控、交通事故现场勘察、交通违章自动记录、高速公路超速管理系统、小区智能化管理等各方面,是智能交通管理系统中高效、时效的最重要手段之一[1-2]。

matlab基于阈值分割的车牌定位识别课程设计报告

matlab基于阈值分割的车牌定位识别课程设计报告

matlab基于阈值分割的车牌定位识别课程设计报告1. 引言1.1 概述车牌定位与识别是计算机视觉领域的一个重要研究方向,其在交通管理、安全监控以及智能交通系统等领域具有广泛的应用前景。

基于阈值分割的车牌定位识别方法是一种常用且有效的方法,能够实现对车牌图像的精确定位和准确识别。

本文将介绍基于阈值分割的车牌定位识别课程设计报告,旨在通过深入探讨车牌定位与识别方法及其在Matlab中的实现,提供给读者一个全面而系统的学习参考。

文章内容包括图像预处理、边缘检测算法、车牌区域提取算法等方面,并详尽介绍了字符分割和识别方法。

同时,我们将通过编写Matlab程序来实现所述方法,并进行相关性能评估和结果分析。

1.2 文章结构本文共分为五个部分进行论述。

除引言外,还包括“2. 车牌定位方法”、“3. 车牌字符分割和识别方法”、“4. Matlab实现与结果分析”以及“5. 结论与展望”。

在这些部分中,我们将介绍车牌定位过程中的图像预处理、边缘检测算法,以及车牌区域的提取方法。

同时,我们将详细讨论字符分割、特征提取和识别算法,并展示基于Matlab编写的程序实现过程与结果分析。

最后,我们将在结论部分对本文内容进行总结,并提出可改进之处的展望。

1.3 目的本课程设计报告的目的是通过理论与实践相结合的方式,深入介绍基于阈值分割的车牌定位识别方法及其在Matlab中的实现。

我们希望读者通过学习本报告能够掌握车牌定位与识别技术中各个环节的原理和实现方法,并能够独立完成类似项目的设计与实施。

同时,我们也希望通过对Matlab编程实现过程和结果分析等内容的详细说明,激发读者对该领域深度研究和创新的兴趣。

2. 车牌定位方法2.1 图像预处理:车牌定位的第一步是对输入图像进行预处理,以便提取出车牌区域。

在这个阶段,我们通常采用一系列的图像处理操作来增强车牌的边缘特征,并去除不相关的背景信息。

具体来说,常用的图像预处理技术包括灰度化、高斯滤波、直方图均衡化和二值化。

基于MATLAB平台下的车牌识别系统设计

基于MATLAB平台下的车牌识别系统设计

3、实验改进
3、实验改进
根据实验结果,我们发现车牌定位和字符分割模块是影响系统性能的关键因 素。因此,我们计划从以下两个方面进行改进:
3、实验改进
1、针对车牌定位模块,尝试引入更多的特征提取方法,以便更准确地定位车 牌区域;
2、针对字符分割模块,研究更为稳健的连通域分析方法,减少误分割和漏分 割。
三、实验结果与分析
1、实验设置
1、实验设置
为了评估车牌识别系统的性能,我们构建了一个包含200张车牌图像的数据集, 其中包含了不同的光照条件、车牌位置和尺寸。评估指标主要包括准确率、召回 率和运行时间。
2、实验结果分析
2、实验结果分析
经过大量实验,我们得到了以下结果: 1、车牌定位模块的准确率为95%,召回率为90%;
1、需求分析
3、适应性:系统应能适应不同的环境条件,包括不同的光照条件、车牌位置 和车牌尺寸等;
1、需求分析
4、可靠性:系统应具备一定的可靠性,能够稳定运行,保证识别结果的准确 性。
2、总体设计
2、总体设计
在总体设计阶段,我们将车牌识别系统分解为以下几个模块: 1、车牌定位模块:该模块主要负责寻找并定位车牌区域,排除其他干扰因素;
基于MATLAB平台下的车牌识别 系统设计
01 一、引言
目录
02
二、车牌识别系统设 计
03 三、实验结果与分析
04 四、结论与展望
05 参考内容
一、引言
一、引言
随着社会的快速发展和科技的不断进步,智能化交通管理成为了研究的热点。 车牌识别系统作为智能化交通管理的重要组成部分,能够自动识别车辆身份,提 高交通监管能力和服务质量。本次演示将基于MATLAB平台,设计一套车牌识别系 统,旨在提高车牌识别的准确性和效率,为智能交通管理提供有力支持。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Matlab的车牌定位与分割经典算法I=imread('car.jpg'); %读取图像figure(); subplot(3,2,1),imshow(I), title('原始图像');I1=rgb2gray(I);%转化为灰度图像subplot(3,2,2),imshow(I1),title('灰度图像');I2=edge(I1,'robert',0.09,'both');%采用robert算子进行边缘检测subplot(3,2,3),imshow(I2),title('边缘检测后图像');se=[1;1;1]; %线型结构元素I3=imerode(I2,se); %腐蚀图像subplot(3,2,4),imshow(I3),title('腐蚀后边缘图像');se=strel('rectangle',[25,25]); 矩形结构元素I4=imclose(I3,se);%图像聚类、填充图像subplot(3,2,5),imshow(I4),title('填充后图像');I5=bwareaopen(I4,2000);%去除聚团灰度值小于2000的部分subplot(3,2,6),imshow(I5),title('形态滤波后图像');[y,x,z]=size(I5);I6=double(I5);Y1=zeros(y,1);for i=1:yfor j=1:xif(I6(i,j,1)==1)Y1(i,1)= Y1(i,1)+1;endendend[temp MaxY]=max(Y1);figure();subplot(3,2,1),plot(0:y-1,Y1),title('行方向像素点灰度值累计和'),xlabel('行值'),ylabel('像素');%求的车牌的行起始位置和终止位置PY1=MaxY;while ((Y1(PY1,1)>=50)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while ((Y1(PY2,1)>=50)&&(PY2<y))PY2=PY2+1;IY=I(PY1:PY2,:,:);X1=zeros(1,x);for j=1:xfor i=PY1:PY2if(I6(i,j,1)==1)X1(1,j)= X1(1,j)+1;endend endsubplot(3,2,2),plot(0:x-1,X1),title('列方向像素点灰度值累计和'),xlabel('列值'),ylabel('像数');%求的车牌的列起始位置和终止位置PX1=1;while ((X1(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;while ((X1(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;PX1=PX1-1;PX2=PX2+1;%分割出车牌图像%dw=I(PY1:PY2,PX1:PX2,:);subplot(3,2,3),imshow(dw),title('定位剪切后的彩色车牌图像')4.2 车牌字符分割确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像。

if isrgb(I)I1 = rgb2gray(I); %将RGB图像转化为灰度图像else I1=I;endg_max=double(max(max(I1)));g_min=double(min(min(I1)));T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值[m,n]=size(I1);% d:二值图像%h=graythresh(I1);I1=im2bw(I1,T/256);subplot(3,2,4);imshow(I1),title('二值化车牌图像');I2=bwareaopen(I1,20);subplot(3,2,5);imshow(I2),title('形态学滤波后的二值化图像');[y1,x1,z1]=size(I2);I3=double(I2);TT=1;%%%%%%%去除图像顶端和底端的不感兴趣区域%%%%% Y1=zeros(y1,1);for i=1:y1for j=1:x1if(I3(i,j,1)==1)Y1(i,1)= Y1(i,1)+1 ;endendendPy1=1;Py0=1;while ((Y1(Py0,1)<20)&&(Py0<y1))Py0=Py0+1;endPy1=Py0;while((Y1(Py1,1)>=20)&&(Py1<y1))Py1=Py1+1;endI2=I2(Py0:Py1,:,:);subplot(3,2,6);imshow(I2),title('目标车牌区域');% 分割字符按行积累量%X1=zeros(1,x1);for j=1:x1for i=1:y1if(I3(i,j,1)==1)X1(1,j)= X1(1,j)+1;endendendfigure(5);plot(0:x1-1,X1),title('列方向像素点灰度值累计和'),xlabel('列值'),ylabel('累计像素量');Px0=1;Px1=1;%分割字符for i=1:7while ((X1(1,Px0)<3)&&(Px0<x1))Px0=Px0+1;endPx1=Px0;while (((X1(1,Px1)>=3)&&(Px1<x1))||((Px1-Px0)<10)) Px1=Px1+1;endZ=I2(:,Px0:Px1,:);switch strcat('Z',num2str(i))case 'Z1'PIN0=Z;case 'Z2'PIN1=Z;case 'Z3'PIN2=Z;case 'Z4'PIN3=Z;case 'Z5'PIN4=Z;case 'Z6'PIN5=Z;otherwisePIN6=Z;endfigure(3);subplot(1,7,i);imshow(Z);Px0=Px1;Endfunction inpt = pretreatment(I)%YUCHULI Summary of this function goes here% Detailed explanation goes hereif isrgb(I)I1 = rgb2gray(I);elseI1=I;endI1=imresize(I1,[50 20]);%将图片统一划为50*20大小I1=im2bw(I1,0.9);[m,n]=size(I1);inpt=zeros(1,m*n);%将图像按列转换成一个行向量for j=1:nfor i=1:minpt(1,m*(j-1)+i)=I1(i,j);endend%神经网络进行识别。

close all;clear all;%%%%归一化训练样本%%%%%% I0=pretreatment(imread('0.jpg'));I1=pretreatment(imread('1.jpg'));I2=pretreatment(imread('2.jpg'));I3=pretreatment(imread('3.jpg'));I4=pretreatment(imread('4.jpg'));I5=pretreatment(imread('5.jpg'));I6=pretreatment(imread('6.jpg'));I7=pretreatment(imread('7.jpg'));I8=pretreatment(imread('8.jpg'));I9=pretreatment(imread('9.jpg'));I10=pretreatment(imread('A.jpg'));I11=pretreatment(imread('C.jpg'));I12=pretreatment(imread('G.jpg'));I13=pretreatment(imread('L.jpg'));I14=pretreatment(imread('M.jpg'));I15=pretreatment(imread('R.jpg'));I16=pretreatment(imread('H.jpg'));I17=pretreatment(imread('N.jpg'));P=[I0',I1',I2',I3',I4',I5',I6',I7',I8',I9',I10',I11',I12',I13',I14',I15',I16',I1 7'];%输出样本%%%T=eye(18,18);%%bp神经网络参数设置net=newff(minmax(P),[1000,32,18],{'logsig','logsig','logsig'},'trainrp ');net.inputWeights{1,1}.initFcn ='randnr';yerWeights{2,1}.initFcn ='randnr';net.trainparam.epochs=5000;net.trainparam.show=50;%net.trainparam.lr=0.003;net.trainparam.goal=0.0000000001;net=init(net);%%%训练样本%%%%[net,tr]=train(net,P,T);%%%%%%%测试%%%%%%%%%%I=imread('DSC01323.jpg');I=imread('DSC01344.jpg');dw=location(I);%车牌定位[PIN0,PIN1,PIN2,PIN3,PIN4,PIN5,PIN6]=StringSplit(dw);%字符分割及处理%%%%%%%%%%%测试字符,得到识别数值%%%%PIN0=pretreatment(PIN0);PIN1=pretreatment(PIN1);PIN2=pretreatment(PIN2);PIN3=pretreatment(PIN3);PIN4=pretreatment(PIN4);PIN5=pretreatment(PIN5);PIN6=pretreatment(PIN6);P0=[PIN0',PIN1',PIN2',PIN3',PIN4',PIN5',PIN6'];for i=2:7T0= sim(net ,P0(:,i));T1 = compet (T0) ;d =find(T1 == 1) - 1if (d==10)str='A';elseif (d==11)str='C';elseif (d==12)str='G'; elseif (d==13)str='L';elseif (d==14)str='M'; elseif (d==15)str='R';elseif (d==16)str='H'; elseif (d==17)str='N';elsestr=num2str(d); endswitch icase 2str1=str;case 3str2=str;case 4str3=str;case 5str4=str;case 6str5=str;otherwisestr6=str;endend%显示定位后的分割出的车牌彩图,%%%%%%%识别结果以标题形式显示在图上%%% s=strcat('渝',str1,str2,str3,str4,str5,str6);figure();imshow(dw),title(s);非诚勿扰欢迎下载。

相关文档
最新文档