基于matlab-汽车号牌识别系统设计
基于MATLAB的车牌识别系统设计
基于MATLAB的车牌识别系统设计
在1 汽车牌照识别系统总体设计与主要功能模块设计
基于MATLAB 汽车牌照识别系统,主要实现了数字
2 沥青混合料数字2.1 由于汽车长期置于户外环境中,使降低了车牌的
清洁度,另外还有自然光照的条件、照相机与汽车牌照之间的矩离以及角度等因素的影响,汽车牌照
2.2 车牌定位与分割模块
由于本系统采集到的汽车牌照数字同时可通过峰谷分析中车牌的水平、垂直投影确定车牌字符高度的范围,为之后的字符提取打好基础。
如
2.3 字符分割与识别模块
字符提取主要通过对旋转后的车牌进行水平投影和垂直投影分析,计算出汽车牌照字符的高度、宽度、字符顶行、字符尾行以及字符的中心位置来进行实现。
由于汽车车牌字符间的间隔较大,较少出现字符粘连现象,所以本文采用查找连续有文字区域的方法实现字符分割。
通过字符分割,得到单个字符,其中包三大类汉字、字母和数字。
由于分割得到的单个字符大小不一,所以需要对单个字符进行归一化处理,防止因为牌照倾斜导致的单个字符在位置和大小上的误差。
目前字符识别主要有两种识别方法:模板匹配法和神经网络法。
本文主要是运用模板匹配法对分割出来的字符进行识别。
字符提取、分割和识别的效果如
3 结语
本文主要以数字图像处理技术在汽车牌照识别中的应用为基础,基于MATLAB 平台开发了汽车牌照识别系统。
并给出了汽车牌照识别系统的总体。
基于MATLAB的车牌智能识别设计
基于MATLAB的车牌智能识别设计摘要:车牌智能识别技术是智能交通系统中的重要组成部分,能够提高交通管理效率和安全性。
本文基于MATLAB平台,设计了一种车牌智能识别系统,通过图像处理和模式识别技术实现车牌号码的准确识别。
该系统能够实现对车辆行驶过程中的车牌信息进行实时提取和识别,具有较高的准确性和稳定性,可以有效应用于停车场管理、交通违法抓拍等领域。
关键词:车牌智能识别;MATLAB;图像处理;模式识别一、引言随着汽车数量的快速增长,交通拥堵和交通管理成为社会发展中的一大难题。
为了提高交通管理效率和安全性,智能交通系统得到了广泛的关注和应用。
车牌智能识别技术作为智能交通系统中的重要组成部分,能够实现对车辆行驶过程中的车牌信息进行实时提取和识别,为交通管理和监控提供了重要的支持。
二、相关技术及方法1. 图像处理技术图像处理技术是车牌智能识别系统中的核心技术之一,主要包括灰度化、二值化、边缘检测、形态学处理等操作。
灰度化是将彩色图像转换为灰度图像,简化了图像信息的处理;二值化将灰度图像转换为二值图像,方便进行特征提取和分割操作;边缘检测可以准确提取车牌的轮廓信息;形态学处理可以用于去除图像中的噪声点和填充孔洞,提高字符的连通性。
2. 字符分割与特征提取字符分割是指将车牌图像中的字符分离出来,是车牌识别的关键步骤之一。
在字符分割后,需要进行字符的特征提取,包括字符的大小、形状、像素点分布等特征。
这些特征可以用于字符的识别和分类,提高识别的准确性和鲁棒性。
3. 模式识别算法模式识别算法是车牌智能识别系统中的另一个核心技术,主要包括基于模板匹配的模式识别、基于统计学习的模式识别、基于深度学习的模式识别等方法。
这些算法能够对字符进行准确的识别和分类,为车牌智能识别系统提供了强大的分析和识别能力。
三、车牌智能识别系统设计基于MATLAB平台,设计的车牌智能识别系统主要包括图像预处理、字符分割与特征提取、模式识别和结果输出四个主要模块。
基于MATLAB的车牌识别系统的设计毕业设计
毕业设计基于MATLAB的车牌识别系统的设计摘要:汽车车牌的识别系统是现代智能交通管理的重要组成部分之一。
车牌识别系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。
车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识别等五大核心部分。
本文主要介绍图像预处理、车牌定位、字符分割三个模块的实现方法。
本文的图像预处理模块是将图像灰度化和用Roberts算子进行边缘检测的步骤。
车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车牌彩色信息的彩色分割法来完成车牌部位分割。
字符的分割采用的方法是以二值化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分割。
本文即是针对其核心部分进行阐述并使用MATLAB软件环境中进行字符分割的仿真实验。
关键词:MATLAB、图像预处理、车牌定位、字符分割一、发展背景车辆的牌照是机动车的识别标志,在交通管理中有着重要的作用。
通过汽车车牌识别系统可以监控车辆的信息和行驶状况,可以最迅速的实现车辆控制以及交通状况的调控,所以对于现代智能交通至关重要。
该系统主要有两大模块:图像处理模块和字符识别模块。
本文主要对图像处理模块进行设计和研究。
图像处理模块的质量好坏更是衡量整个系统成功与否的关键。
MATLAB语言对于图像的处理非常方便,能够直接调用编好的函数,为整个系统提供了保障。
二、系统框架结构以及流程汽车车牌自动识别系统主要包括触发拍照、图像采集、图像预处理、车牌定位、字符分割、字符识别、输出结果等单元。
触发拍照:该单元会自动检测车辆在指定区域的存在,现有的成熟技术的有线圈触发、视频触发、红外触发、雷达触发以及激光触发。
其中线圈触发和视频触发得到了广泛的应用。
图像采集:该单元是指道路上安装的摄像头在检测到有车辆通过的同时进行拍照并借助网络传送到汽车自动识别系统。
图像预处理:该单元是指车牌识别系统对拍摄的汽车图片进行灰度化和边缘检测等处理。
基于Matlab的车牌识别(完整版)
基于Matlab的车牌识别摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展。
本文从预处理、边缘检测、车牌定位、字符分割、字符识别五个方面,具体介绍了车牌自动识别的原理。
并用MATLAB软件编程来实现每一个部分,最后识别出汽车车牌。
一、设计原理车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。
车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。
其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。
某些车牌识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。
一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。
当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。
车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。
二、设计步骤总体步骤为:基本的步骤:a.车牌定位,定位图片中的车牌位置;b.车牌字符分割,把车牌中的字符分割出来;c.车牌字符识别,把分割好的字符进行识别,最终组成车牌号码。
车牌识别过程中,车牌颜色的识别依据算法不同,可能在上述不同步骤实现,通常与车牌识别互相配合、互相验证。
(1)车牌定位:自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定车牌区域是整个识别过程的关键。
首先对采集到的视频图像进行大范围相关搜索,找到符合汽车车牌特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为车牌区域,并将其从图象中分割出来。
基于Matlab的车牌识别系统设计论文 【完整】.
中国矿业大学模式识别--------------------------------------------------------------------------------------------------------------------------------------------------------------------——基于matlab的车牌识别系统设计指导教师: 梁志贞周世斌姓名:田凯班级:信科10-1班学号: 08103476时间:二〇一三年六月目录1 绪论 (2)1.1 车牌号识别研究背景 (2)1.2 车牌号识别技术研究现状和趋势 (3)1.3 车牌识别研究内容 (4)2 车牌识别系统设计原理概述 (5)3 车牌识别系统程序设计 (7)3.1 图像读取及车牌区域提取 (7)3.2 字符切割 (14)3.3字符识别 (17)4 仿真结果及分析 (19)4.1 车牌定位及图像读取及其图像处理 (19)4.2 车牌字符分割及其图像处理 (20)4.3 车牌字符识别及其图像处理 (21)5 结论 (21)附录:程序清单 (22)1 绪论1.1 车牌号识别研究背景随着我国公路交通事业的发展,车辆的数量正在迅速增长,在给出行提供方便的同时,车辆管理上存在的问题日益突出,人工管理的方式已经不能满足实际的需要。
微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。
作为信息来源的自动检测、图像识别技术越来越受到人们的重视。
近年来计算机的飞速发展和数字图像技术的日趋成熟,为传统的交通管理带来巨大转变,先进的计算机处理技术,不但可以将人力从繁琐的人工观察、监测中解放出来,而且能够大大提高其精确度,汽车牌照自动识别系统就是在这样的背景与目的下进行开发的。
汽车牌照等相关信息的自动采集和管理对于交通车辆管理、园区车辆管理、停车场管理、交警稽查等方面有着十分重要的意义,成为信息处理技术的一项重要研究课题。
基于MATLAB的车牌识别系统的设计
MATLABRobertsMATLAB MATLABMATLAB71H=0.229R+0.588G+0.144BH R GB RGBMATLAB im2gray2RobertsMATLABk=input('Enter the file name:','s');%I=imread(k);imshow(I);figure(1),imshow(I);title('')I1=rgb2gray(I);figure(2),imshow(I1);title('');I2=edge(I1,'roberts',0.15,'both');figure(3),imshow(I2);title('robert') se=[1;1;1];Robert12RGB302552561,2MATLAB1. 2.1. [D]200730-31.2. [J] 201063.MATLAB[J]2009114. [D] 20005..[J]2003.1146..MATLAB[J].200447. MATLAB M.20028. [J].,2006429-30k=input('Enter the file name:','s');%I=imread(k);imshow(I);%I=imread('D:\123\11.jpg');figure(1),imshow(I);title('')I1=rgb2gray(I);figure(2),imshow(I1);title('');I2=edge(I1,'roberts',0.15,'both');figure(3),imshow(I2);title('robert') se=[1;1;1];I3=imerode(I2,se);figure(4),imshow(I3);title('');se=strel('rectangle',[25,25]);I4=imclose(I3,se);figure(5),imshow(I4);title('');I5=bwareaopen(I4,2000);figure(6),imshow(I5);title(''); [y,x,z]=size(I5);myI=double(I5);ticBlue_y=zeros(y,1);for i=1:yfor j=1:xif(myI(i,j,1)==1)Blue_y(i,1)= Blue_y(i,1)+1;%endendend[temp MaxY]=max(Blue_y);%YPY1=MaxY;while ((Blue_y(PY1,1)>=5)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while ((Blue_y(PY2,1)>=5)&&(PY2<y))PY2=PY2+1;endIY=I(PY1:PY2,:,:);%%%%%% X %%%%%%%%%Blue_x=zeros(1,x);%xfor j=1:xfor i=PY1:PY2if(myI(i,j,1)==1)Blue_x(1,j)= Blue_x(1,j)+1;endendendPX1=1;while ((Blue_x(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;while ((Blue_x(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPX1=PX1-1;%PX2=PX2+1;dw=I(PY1:PY2-8,PX1:PX2,:);t=toc;figure(7),subplot(1,2,1),imshow(IY),title(''); figure(7),subplot(1,2,2),imshow(dw),title('')imwrite(dw,'dw.jpg');[filename,filepath]=uigetfile('dw.jpg','');jpg=strcat(filepath,filename);a=imread('dw.jpg');b=rgb2gray(a);imwrite(b,'1..jpg');figure(8);subplot(3,2,1),imshow(b),title('1.')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:imwrite(d,'2..jpg');figure(8);subplot(3,2,2),imshow(d),title('2.') figure(8),subplot(3,2,3),imshow(d),title('3.')%h=fspecial('average',3);%average3d=im2bw(round(filter2(h,d))); %imwrite(d,'4..jpg'); %figure(8),subplot(3,2,4),imshow(d),title('4.')%%% se=strel('square',3); %3X3% 'line'/'diamond'/'ball'...se=eye(2); % eye(n) returns the n-by-n identity matrix [m,n]=size(d);if bwarea(d)/m/n>=0.365 %d=imerode(d,se); %elseif bwarea(d)/m/n<=0.235 %d=imdilate(d,se); %endimwrite(d,'5..jpg');%figure(8),subplot(3,2,5),imshow(d),title('5.')%d=qiege(d); %[m,n]=size(d); %bm n m nk1=1;k2=1;s=sum(d);j=1;while j~=nwhile s(j)==0j=j+1;endk1=j;while s(j)~=0 && j<=n-1j=j+1;endk2=j-1;if k2-k1>=round(n/6.5)[val,num]=min(sum(d(:,[k1+5:k2-5])));d(:,k1+num+5)=0; %endend%d=qiege(d);% 7y1=10;y2=0.25;flag=0;word1=[];while flag==0[m,n]=size(d);left=1;wide=0;while sum(d(:,wide+1))~=0wide=wide+1;endif wide<y1 %d(:,[1:wide])=0;d=qiege(d);elsetemp=qiege(imcrop(d,[1 1 wide m]));[m,n]=size(temp);all=sum(sum(temp));two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:)));if two_thirds/all>y2flag=1;word1=temp; % WORD 1endd(:,[1:wide])=0;d=qiege(d);endend%[word2,d]=getword(d);%[word3,d]=getword(d);%[word4,d]=getword(d);%[word5,d]=getword(d);%[word6,d]=getword(d);%[word7,d]=getword(d);figure(9);subplot(2,7,1),imshow(word1),title('1'); figure(9);subplot(2,7,2),imshow(word2),title('2'); figure(9);subplot(2,7,3),imshow(word3),title('3'); figure(9);subplot(2,7,4),imshow(word4),title('4'); figure(9);subplot(2,7,5),imshow(word5),title('5'); figure(9);subplot(2,7,6),imshow(word6),title('6');figure(9);subplot(2,7,7),imshow(word7),title('7'); [m,n]=size(word1);% 40*20,word1=imresize(word1,[40 20]);word2=imresize(word2,[40 20]);word3=imresize(word3,[40 20]);word4=imresize(word4,[40 20]);word5=imresize(word5,[40 20]);word6=imresize(word6,[40 20]);word7=imresize(word7,[40 20]);subplot(3,7,15),imshow(word1),title('1');subplot(3,7,16),imshow(word2),title('2');subplot(3,7,17),imshow(word3),title('3');subplot(3,7,18),imshow(word4),title('4');subplot(3,7,19),imshow(word5),title('5');subplot(3,7,20),imshow(word6),title('6');subplot(3,7,21),imshow(word7),title('7');。
MATLAB车牌识别系统课程设计
MATLAB车牌识别系统课程设计一、课程目标知识目标:1. 学生能理解MATLAB编程环境,掌握基本的数据类型、运算符和流程控制语句。
2. 学生能掌握车牌图像的预处理方法,包括图像灰度化、二值化、滤波去噪等。
3. 学生能理解并实现车牌定位和分割的算法,提取车牌字符。
4. 学生能掌握车牌字符识别的方法,如模板匹配、神经网络等。
技能目标:1. 学生能够运用MATLAB编写程序,对车牌图像进行处理和分析。
2. 学生能够独立设计并实现一个简单的车牌识别系统。
3. 学生能够通过实践操作,提高问题解决能力和团队协作能力。
情感态度价值观目标:1. 学生培养对图像处理和模式识别领域的兴趣,激发学习热情。
2. 学生通过实践,认识到编程在解决实际问题中的重要性,增强自信心。
3. 学生在团队协作中,学会尊重他人,培养良好的沟通能力和合作精神。
课程性质:本课程为选修课,旨在让学生在实际项目中运用所学的编程知识,提高解决实际问题的能力。
学生特点:学生为高中年级,已具备一定的编程基础,对新鲜事物充满好奇心,但实践经验不足。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,引导学生通过自主学习和团队协作,完成课程目标。
将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容1. MATLAB编程基础- 数据类型与运算符- 程序流程控制- 函数与脚本- 图像处理基本操作2. 车牌图像预处理- 图像读取与显示- 灰度化与二值化- 滤波去噪- 边缘检测与轮廓提取3. 车牌定位与分割- 车牌区域提取- 车牌字符分割- 车牌倾斜校正4. 车牌字符识别- 模板匹配法- 神经网络法- 支持向量机法5. 车牌识别系统实现- 系统框架设计- 模块化编程实现- 系统测试与优化教学内容依据课程目标,结合教材章节进行安排。
在教学过程中,注重理论与实践相结合,引导学生逐步掌握MATLAB编程及图像处理方法。
教学内容分为五个部分,每部分对应相应的知识点,确保学生能够系统地学习车牌识别系统的设计原理和实现方法。
【精编完整版】基于MATLAB的车牌识别系统设计_毕业论文设计
南京工程学院毕业设计说明书(论文)院系:计算机工程学院专业:电子信息科学与技术题目:基于MATLAB的车牌识别系统设计2013年5月南京随着计算机多媒体技术的发展,车牌自动识别技术(license plate recognition)已经成为智能交通系统的重要组成部分。
在欧美许多发达国家,车辆识别技术已经广泛的应用在交通管理的各个方面。
由于我国车牌种类多,并且是由汉字、英文字母和数字组成,这给自动识别系统的设计带来较大的难度。
本文在学习研究图像处理理论的基础上,设计了一个车牌自动识别系统。
本系统包括三个主要模块:车辆图像预处理、车牌定位和车牌字符识别。
识别系统处理过程主要包括获取车辆源图像、图像灰度化、图像增强去噪、边缘检测、车牌定位、车牌图像预处理、车牌字符分割、字符识别等部分,其中车牌定位和字符识别部分是整个系统设计的核心和难点。
车牌识别系统可以广泛应用在高速公路自动收费、小区无人停车场、城市道路监控、车辆流量统计等方面,本系统具有一定的实用价值。
关键词:车牌识别车牌定位LPR 模式识别毕业设计说明书(论文)中文摘要毕业设计说明书(论文)外文摘要Title Design of the license plate recognition AbstractWith the development of computer multimedia technology, lice nse plate recognition (LPR) has become an important component ofIntelligent Transportation Systems. In many developed countriesofEurope and America, the license plate recognition technology hasbeen widely used in all aspects of traffic management. Because plates in China have many different styles, in addition, they consist of Chinese letters, English letters and numbers. So, it's very hard to identify Chinese license plates.This study propose a license plate recognition based on kno wledge of image processing. This recognition has three main modu les: preprocessing of original image, locate license plate and c haracters identification. This license plate recognition mainly includes several parts: get original image, make gray, enhance i mage,edge detect, locate license plate, preprocess plate image, segment characters and characters identification. The key of thewhole system is location of license and character recognition.License plate recognition can be extensively used in highwaytoll collection,Intelligent parking, urban road monitoring, traffic flow statistics and so on, what is more, this recognition c anbring some practical value.Key words: plate recognition, plate locate, LPR, pattern recognition目录前言 (1)第一章技术概览 (2)1.1MATLAB简介 (2)1.2MATLAB图像处理工具箱简介 (2)1.3车辆源图像 (3)1.4车牌识别的主要流程 (3)1.5车牌识别系统的结构图 (3)第二章系统人机界面的设计与实现 (5)2.1GUI简介 (5)2.2本文的GUI界面设计 (5)第三章图像预处理及实现 (7)3.1数字图像基本知识 (7)3.2车辆图像灰度化 (8)3.3车辆图像增强 (9)3.4二值化 (14)第四章车牌定位及实现 (18)4.1边缘检测 (18)4.2车牌定位 (24)第五章车牌字符识别及实现 (29)5.1字符分割 (29)5.2车牌字符识别 (32)第六章系统测试及分析 (34)6.1测试的目的 (34)6.2车牌识别系统的测试 (34)6.3测试效果 (35)结束语 (40)参考文献 (42)致谢 (44)附录1:英文技术资料翻译 (45)附录2:程序清单 (60)前言由于我国道路交通的发展迅速,汽车数量特别是轿车数量不断增加,出现了许多车辆管理方面问题。
毕业设计论文-基于matlab的车牌识别系统的设计(附程序+详解注释)
毕业设计(论文)说明书
作 者:
学 号:
学院(系):
信息工程学院
专 业:
通信技术
题 目: 基于 matlab 的车牌识别系统的设计
主 题:
指导教师:
职称 讲师
2012 年 12 月
焦作大学毕业设计说明书
II
摘要
汽车车牌的识别系统是现代智能交通管理的重要组成部分之一。车牌识别 系统使车辆管理更智能化,数字化,有效的提升了交通管理的方便性和有效性。 车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识 别等五大核心部分。本文主要介绍图像预处理、车牌定位、字符分割三个模块的 实现方法。本文的图像预处理模块是将图像灰度化和用 Roberts 算子进行边缘检 测的步骤。车牌定位和分割采用的是利用数学形态法来确定车牌位置,再利用车 牌彩色信息的彩色分割法来完成车牌部位分割。字符的分割采用的方法是以二值 化后的车牌部分进行垂直投影,然后在对垂直投影进行扫描,从而完成字符的分 割。本文即是针对其核心部分进行阐述并使用 MATLAB 软件环境中进行字符分割 的仿真实验。
5.实验结果和分析.............................................................................................................22 6.实验总结.........................................................................................................................24 致谢.......................................................................................................................................25 参考文献...............................................................................................................................26 程序附录...............................................................................................................................27
基于MATLAB的车牌识别系统研究
基于MATLAB的车牌识别系统探究摘要:随着交通的快速进步和车辆数量的增加,车牌识别系统在车辆管理和交通安全方面扮演着重要角色。
本文基于MATLAB平台,探究和设计了一种车牌识别系统,包括车牌图像的得到、预处理、特征提取和识别等关键技术。
试验结果表明,该系统可以有效地检测和识别车牌图像,并具有较高的识别准确率。
1. 引言车牌作为车辆唯一的标识符,在交通管理和公共安全中具有重要意义。
传统的车牌识别方式主要依靠人工进行,效率低下且容易出错。
近年来,随着计算机视觉和模式识别等技术的进步,基于计算机的车牌识别系统得到广泛应用。
本文旨在探究和设计一种基于MATLAB的车牌识别系统,以提高车辆管理和交通安全的效率和准确性。
2. 方法2.1 车牌图像的得到车牌图像的得到是车牌识别系统的第一步,可以通过摄像头或已有的车牌图像数据库进行得到。
本文使用摄像头采集车辆图像,并对图像进行预处理。
2.2 图像预处理图像预处理是车牌识别的基础,目标是消除图像中的噪声和干扰,提高图像的质量。
本文接受灰度化、二值化、去噪等方法对图像进行预处理。
2.3 特征提取特征提取是车牌识别系统的核心技术之一,依据车牌图像的特点提取有效的特征信息。
本文接受图像分割、轮廓提取和统计特征等方法进行特征提取。
2.4 车牌识别车牌识别是车牌识别系统的最终目标,通过对特征进行分类和匹配来实现对车牌的识别。
本文接受模式识别算法和机器进修方法进行车牌识别,并通过试验验证其准确性和可靠性。
3. 试验与结果本文基于MATLAB平台进行试验,接受了大量的车牌图像进行测试和验证。
试验结果表明,所设计的车牌识别系统在车牌图像的得到、预处理、特征提取和识别等方面具有较高的准确性和效率。
识别率达到了90%,满足了车辆管理和交通安全的需求。
4. 谈论与分析通过对试验结果的分析和对比,可以发现该系统在车牌识别的准确性和效率方面相对较好。
然而,该系统还存在一些问题和不足之处,如对光照和遮挡的敏感性,对多种车牌样式的识别能力等。
基于matlab的汽车牌照识别系统的设计
基于matlab的汽车牌照识别系统的设计摘要:随着公路逐渐普及,我国的公路交通事业发展迅速,所以人工管理方式已经不能满着实际的需要,微电子、通信和计算机技术在交通领域的使用极大地提高了交通管理效率。
汽车牌照的自动识别技术已经得到了广泛使用。
本次试验主要有预处理、边缘提取、车牌定位、字符分割四大模块。
用MATLAB软件编程来实现每一个部分。
关键词: MATLAB 图像处理车牌定位牌照分割1 系统功能介绍和总体设计功能介绍:一、车牌定位(1)图像预处理:对动态采集到的图像进行滤波、边界增强等处理以克服图像干扰;(2)车牌定位:计算边缘图像的投影面积,寻找峰谷点,大致确定车牌位置,再计算此连通域内的宽高比,剔除不在域值范围内的连通域,最后得到的便为车牌区域;二、字符识别(1)字符分割:利用投影检测的字符定位分割方法得到单个的字符;(2)字符数据库:为第6步的字符识别建立字符模板数据库;(3)字符识别:通过基于模板匹配的OCR算法或基于人工神经网络的OCR算法,通过特征对比或训练识别出相关的字符,得到最后的汽车牌照,包括英文字母和数字。
总体设计:车辆牌照识别整个系统主要是由车牌定位和字符分割两部分组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符分割牌照分割和单个字符分割两个模块。
为了便于试验顺利进行,原始图象应具有适当的亮度,较大的对比度和清晰可辩的牌照图象。
但由于该系统的摄像部分工作于开放的户外环境,加之车辆牌照的整洁度、自然光照条件、拍摄时摄像机和牌照的矩离和角度以及车辆行驶速度等因素的影响,牌照图象可能出现模糊、歪斜和缺损等严重缺陷,因此需要对原始图象进行识别前的预处理。
牌照的定位和分割主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将牌照从整个图象中分割出来。
由于拍摄时的光照条件、牌照的整洁程度的影响,和摄像机的焦距调整、镜头的光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。
基于matlab的车牌识别系统的设计
基于matlab的车牌识别系统的设计1.摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位、字符分割和字符识别三个主要部分。
本文首先确定车辆牌照在原始图像中的水平位置和垂直位置,从而定位车辆牌照,然后采用局部投影进行字符分割。
在字符识别部分,提出了在无特征提取情况下基于支持向量机的车牌字符识别方法。
实验结果表明,本文提出的方法具有良好的识别性能。
随着公路逐渐普及,我国的公路交通事业发展迅速,所以人工管理方式已经不能满着实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。
汽车牌照的自动识别技术已经得到了广泛应用。
2.设计目的:1、使学生在巩固理论课上知识的同时,加强实践能力的提高,理论联系实践。
2、激发学生的研究潜能,提高学生的协作精神,锻炼学生的动手能力。
3.设计原理由于车辆牌照是机动车唯一的管理标识符号,在交通管理中具有不可替代的作用,因此车辆牌照识别系统应具有很高的识别正确率,对环境光照条件、拍摄位置和车辆行驶速度等因素的影响应有较大的容阈,并且要求满足实时性要求。
图1 牌照识别系统原理图该系统是计算机图像处理与字符识别技术在智能化交通管理系统中的应用,它主要由图像的采集和预处理、牌照区域的定位和提取、牌照字符的分割和识别等几个部分组成,如图1 所示。
其基本工作过程如下:(1)当行驶的车辆经过时,触发埋设在固定位置的传感器,系统被唤醒处于工作状态;一旦连接摄像头光快门的光电传感器被触发,设置在车辆前方、后方和侧面的相机同时拍摄下车辆图像;(2)由摄像机或CCD 摄像头拍摄的含有车辆牌照的图像通视频卡输入计算机进行预处理,图像预处理包括图像转换、图像增强、滤波和水平较正等;(3)由检索模块进行牌照搜索与检测,定位并分割出包含牌照字符号码的矩形区域;(4)对牌照字符进行二值化并分割出单个字符,经归一化后输入字符识别系统进行识别。
4.详细设计步骤4.1 提出总体设计方案。
基于MATLAB的汽车牌照自动识别系统设计
1引言随着我国交通迅速发展,人工管理方式已经逐渐不能满足实际的需要,微电子、通信和计算机技术在交通领域的应用极大地提高了交通管理效率。
汽车牌照的自动识别技术已经得到了广泛应用。
通过对车辆牌照的正确认识,不仅可以实现交通流量的统计和查询,道路负荷的测定和管理,而且可以对肇事车辆、走私车辆、丢失车辆进行辨识和追查。
传统的方法是在设定的路口派专人进行观察和笔录,因此工作强度大、统计繁杂、效率低、准确性差。
因而对车辆牌照自动识别技术的研究和应用系统开始具有重要的意义。
汽车牌照自动识别整个处理过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块,其中字符识别过程主要由以下3个部分组成:①正确地分割文字图像区域;②正确的分离单个文字;③正确识别单个字符。
MATLAB是一种强大的数值计算功能的编程工具,在图像处理、信号处理、神经网络中都有着广泛的应用。
其数据类型最大的特点是每一种类型都以数组为基础,从数组中派生出来。
其所提供的强大的矩阵运算功能。
如特征值和特征向量的计算、矩阵求逆灯都可以直接通过MATLAB提供的函数求出。
MATLAB还提供了小波分析、图像处理、信号处理、虚拟现实、神经网络等的工具包。
其中,图像处理工具包提供了许多可用于图像处理的相关函数。
按功能可以分为图像显示;图像文件输入与输出;几何操作;像素值和统计;图像分析与增强;图像铝箔;线性二维滤波器设计;图像变换;领域和块操作;二值图像操作;颜色映射和颜色空间转换;图像类型和类型转换;工具包参数获取和设置等。
基于此,用MATLAB软件编程来实现每一个部分,最后识别出汽车牌照,有很大的优势。
在研究的同时对其中出现的问题进行了具体分析,处理。
2车牌定位2.1预处理及边缘提取图2 预处理及边缘提取流程图2.1.1图象的采集与转换考虑到现有牌照的字符与背景的颜色搭配一般有蓝底白字、黄底黑字、白底红字、绿底白字和黑底白字等几种,利用不同的色彩通道就可以将区域与背景明显地区分出来,例如,对蓝底白字这种最常见的牌照,采用蓝色 B 通道时牌照区域为一亮的矩形,而牌照字符在区域中并不呈现。
基于MATLAB的汽车牌照自动识别技术研究
基于MATLAB的车牌自动识别技术研究1、本文概述随着技术的快速发展和智能时代的到来,自动驾驶、智能交通系统等领域的研究和应用逐渐成为全球热点。
在这些领域,汽车牌照的自动识别技术起着至关重要的作用。
汽车牌照自动识别技术作为车辆的唯一标识,不仅可以提高交通管理效率,还可以为车辆跟踪、违章记录等提供有力支持。
本文旨在通过对相关算法和技术的深入探索,研究基于MATLAB的汽车牌照自动识别技术,为实际应用提供理论支持和技术指导。
本文首先阐述了车牌自动识别技术的研究背景和意义,指出其在智能交通系统中的重要地位。
随后,文章回顾了国内外该领域的研究现状和发展趋势,分析了现有技术的优缺点,为后续研究提供了理论支持。
在此基础上,重点介绍了基于MATLAB的车牌自动识别技术的实现过程,包括预处理、车牌定位、字符分割、字符识别等关键环节。
通过对这些方面的详细阐述,展示了MATLAB在车牌识别技术中的强大功能和优势。
本文还对所提出的算法和技术进行了实验验证和性能分析,并通过对比实验和实际应用案例验证了所提出算法的有效性和实用性。
展望了车牌自动识别技术的未来发展方向,为相关领域的研究人员提供了有益的参考和启示。
通过本文的研究,我们希望能为车牌自动识别技术的发展和推广做出贡献,推动智能交通系统的进一步发展,为人们的出行和生活带来更方便、更安全的体验。
2、车牌自动识别技术综述车牌自动识别(ALPR)是一项利用图像处理、模式识别、人工智能等技术自动捕获、识别和提取车牌的关键技术。
随着智能交通系统的发展,车牌自动识别技术已广泛应用于交通管理、车辆跟踪、违章记录、停车场管理等领域。
车牌自动识别技术主要包括四个步骤:图像预处理、车牌定位、字符分割和字符识别。
图像预处理用于提高图像质量,减少噪声干扰,并为后续步骤提供清晰稳定的图像。
车牌定位是使用算法在预处理的图像中定位车牌的位置,为后续的字符分割提供准确的车牌区域的过程。
字符分割是将车牌中的字符逐一分割,为字符识别中的单个字符提供输入的过程。
基于MATLAB的车牌识别系统设计
DOI :10.13888/ki.jsie (ns ).2019.02.018收稿日期:2018-10-29作者简介:王乾(1996-),男,辽宁鞍山人。
通讯作者:朱小娟(1977-),女,陕西安康人,讲师,硕士。
基于MATLAB 的车牌识别系统设计王乾,朱小娟(沈阳工程学院自动化学院,辽宁沈阳110136)摘要:针对复杂的高速交通系统,设计出一套基于MATLAB 的车牌识别系统,预期目标是能运用数字图像处理技术自动地识别给定的照片中的牌照信息内容,使得交通系统数字化和实时化。
该系统的图片处理部分运行在MATLAB 平台上,同时依托MATLAB 的图片处理工具箱和计算机视觉工具箱,以及图像采集工具箱等工具提供的便利条件。
该系统可以在一定程度上代替人类的工作去实现某种意义上的人工智能,并以此来提高工作效率和资源的节约,同时降低人工的支出成本。
关键词:数字图像处理;车牌识别;MATLAB 中图分类号:TP273文献标识码:A文章编号:1673-1603(2019)02-0189-04第15卷第2期2019年4月Vol.15No.2Apr.2019沈阳工程学院学报(自然科学版)Journal of Shenyang Institute of Engineering (Natural Science )中国高速交通系统相对复杂,明确每一台车辆的车牌信息至关重要,未来的交通系统也必然趋向于数字化和实时化。
为了应对交通系统不断的发展,对车牌识别系统的需求也日渐提高。
在牌照处理系统中,主要目标是自动识别牌照并生成文字输出,预期目标是要求能自动识别给定的牌照信息。
附加要求可以是复杂背景下的车辆牌照的准确识别以及对最小可接受的识别成功率。
该系统的图片处理部分运行在MATLAB 平台的强大计算能力基础上,依托于MATLAB 提供的Image Processing Toolbox (图片处理工具箱)、Computer Vision Sys-tem Toolbox (计算机视觉工具箱)以及Image Acqui-sition Toolbox (图像采集工具箱)等工具提供的便利条件。
基于MATLAB的车牌识别系统设计与实现
基于MATLAB的车牌识别系统设计与实现作者:张文俊李小兰来源:《电脑知识与技术》2024年第15期关键词:智能交通;车辆牌照识别技术;MATLAB;图像处理;形态学处理 0引言随着经济的不断发展,汽车已成为人们交通出行的常用选择。
随着车辆数量的增加,交通管理问题变得更加突出,智能化车辆管理成为道路交通管理的重点。
在智能化车辆管理中,车辆牌照识别(VehicleLi⁃censePlateRecognition,VLPR)技术显得尤为重要,可应用于停车场管理、高速公路违法车辆监控识别、小区智慧车辆管理等场景。
车牌作为车辆的唯一标识,是车辆的“身份证”,如何进行快速、实时、准确的车辆牌照识别是关键。
要实现车辆牌照的精确识别,有多种方法可选:基于特征提取的方法[1]、基于模板匹配的方法[2]、基于分类器的方法[3]、基于神经网络的方法[4]等。
基于特征提取的车牌识别方法对于处理车牌畸变、倾斜或光照不均等复杂背景下的识别效果较好,但需要消耗大量计算资源,当数据量过大时会导致识别速度变慢。
基于分类器和基于神经网络的识别方法虽然能够快速处理不同类型的车牌并识别字符,但需要大量训练数据和计算资源,并需要根据评估结果反复调整模型参数。
而基于模板匹配的方法快速简单,不需要大量数据作为训练支撑,因此本文选择研究基于模板匹配的车辆识别方法。
考虑到车牌图像的角度、大小和字体等问题,本文引入结构相似性度量(SSIM)值来计算字符的匹配程度,從而成功识别出车牌号码。
1相关方法概述在车牌号码识别的过程中,图像质量的好坏直接影响最终识别结果的准确率。
为了改善图像质量,在处理车牌图像时需要进行一系列的预处理操作,以去除背景噪声和干扰信息。
经过预处理后,能够增强图像中目标区域特征,有助于后续的车牌定位、分割和识别。
车牌区域的分割是识别过程中的关键步骤之一。
文献[5]提到了基于二值图像像素分割的方法,利用阈值将图像转换为黑白形式,并通过标记连通区域来实现分割。
基于MATLAB的车牌号码识别系统设计
基于MATLAB的车牌号码识别系统设计许立晨;叶超;刘琪【期刊名称】《价值工程》【年(卷),期】2015(34)18【摘要】This article mainly studies the real-time fast license plate localization and license plate recognition with real-time video by CCD camera. A detection window is designed based on MATLAB to scan each frame of the video to get the key frame. Then the key frame is input into the static license plate recognition system. Through image preprocessing, license plate locating, character segmentation and character recognition, the whole license plate recognition is completed.%本设计主要是研究利用CCD摄像机拍摄的实时视频流作数据源,在视频数据下进行实时快速的车牌定位和牌照识别。
基于MATLAB设计一个检测窗口,将视频流中的每一帧进行扫描得到关键帧。
然后将关键帧输入到静态车牌的识别系统中,通过实现图像的预处理、车牌的定位、字符的分割、字符的识别各个过程,来完成整个车牌号码的系统识别。
【总页数】3页(P181-182,183)【作者】许立晨;叶超;刘琪【作者单位】南京理工大学泰州科技学院,泰州225300;南京理工大学泰州科技学院,泰州225300;南京理工大学泰州科技学院,泰州225300【正文语种】中文【中图分类】TP391.43【相关文献】1.基于模板匹配及人工神经网络算法的图像识别应用r——MATLAB实现机动车牌号码辨识 [J], 赖特2.基于模板匹配及人工神经网络算法的图像识别应用——MATLAB实现机动车牌号码辨识 [J], 赖特;3.基于车牌号码识别的机器视觉系统设计 [J], 潘磊;赵亮;刘丁丁;马义豪;彭世晨;丰安辉4.基于MATLAB的车牌号码识别系统 [J], 胡利娜5.基于MATLAB的静态手势识别系统设计 [J], 赵海君;张玉婷;曳永芳因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汽车号牌识别系统设计**中文摘要:随着二十一世纪到来,经济快速发展和人们生活水平显著提高,汽车逐渐成为家庭的主要交通工具。
汽车的产量快速增多,车辆流动也变得越来越频繁,因此给交通带来了严重问题,如交通堵塞、交通事故等,智能交通系统(Intelligent Transportation System)的产生就是为了从根本上解决交通问题。
在智能交通系统中车牌识别技术占有重要位置,车牌识别技术的推广普及必将对加强道路管理、城市交通事故、违章停车、处理车辆被盗案件、保障社会稳定等方面产生重大而深远的影响。
该设计主要研究基于MATLAB 软件的汽车号牌设别系统设计,系统主要包括图像采集、图像预处理、车牌定位、字符分割、字符识别五大核心部分。
系统的图像预处理模块是将图像经过图像灰度化、图像增强、边缘提取、二值化等操作,转换成便于车牌定位的二值化图像;利用车牌的边缘、形状等特征,再结合Roberts 算子边缘检测、数字图像、形态学等技术对车牌进行定位;字符的分割采用的方法是将二值化后的车牌部分进行寻找连续有文字的块,若长度大于设定的阈值则切割,从而完成字符的分割;字符识别运用模板匹配算法完成。
以上每个功能模块用MATLAB 软件实现,最后识别出车牌,在研究设计的同时对其中出现的问题进行具体分析、处理,并寻求更优的方法。
关键词:MATLAB ,车牌识别系统,字符识别,图像处理一、总体设计汽车号牌识别系统技术是从一幅车辆图像中准确定位出车牌区域,然后经过字符切割和字符识别来实现车辆牌照的自动识别。
主要流程图如下:图1.1二、总体功能模块基于MA TLAB 车牌识别系统主要包括图像采集、图像预处理、车牌定位、字符分割、字符识别五个关键环节[11],其基本工作如下:(1) 图像采集:使用摄像头、照相机拍摄采集图像。
读取图片图像预处理 车牌定位 字符分割 模板库 字符识别(2) 图像预处理:把图像转换成便于定位的二值化图像,需要经过图像灰度化、图像增强、边缘提取、二值化操作。
(3)车牌定位:利用车牌的边缘、形状等特征,再结合Roberts 算子边缘检测、数字图像、形态学等技术对车牌进行定位。
(4)字符分割:以二值化后的车牌部分进行寻找连续有文字的块,若长度大于设定的阈值则切割,从而完成字符的分割。
(5)字符识别:运用模板匹配算法将分割后的字符二值化,并将其尺寸大小缩放为模板库中字符的大小,然后与所有的模板进行匹配,准确地识别车牌。
输出识别结果,并进行数据存储。
由于纹理特征车牌灰度图像的边缘、图像水平方向上的方差、水平方向上的梯度等比较稳定而且易于提取,所以本系统车牌定位算法采用纹理特征作为车牌的主要特征。
在汽车号牌字符识别中,由于汉字的复杂性所以本设计的模板库字符包含5个汉字,26个大写英文字母及10个阿拉伯数字。
首字符为汉字,第2-6个字符为英文字母或数字。
本系统采用的是边缘检测的方法实现车牌定位的,寻找连续有文字的块的方法实现字符分割,模板匹配法来确定最终的识别结果。
三、具体设计下图3.1流程图简要的概述了基本步骤:图3.1图3.2图3.3图3.4图3.5图3.6图3.7图3.8图3.9图3.10由于本系统设计只限用于车牌底色为蓝色的车牌,对于其他颜色如黄色、白色等为底色的车牌则不成功。
所以本系统具有一定的局限性。
下面是分割后的车牌图:图3.11图3.12下图是字符的分割与归一化的流程图:切割去图像上下多余的部分 根据图像的大小,设置一阈值,检测图的X 轴,若宽度等于这一阈值则切割,分离出七个字符。
归一化切割出来的字符图像的大小40*20,与模板中字符图像的大小相匹配。
[m ,n]=size (d ),逐排检查有没有白色像素点,设1<=j<n-1,若图像两边s (j )=0,则切割,去除图像两边多余的部分。
图3.13本系统设计采用的方法是寻找连续有文字的块,若长度大于设定的阈值,则认为该块有两个字符组成,需要分割。
图3.14分割出来的字符可能存在一定的大小差距,所以要进行进一步的处理,以便接下来的字符识别能准确的识别出字符。
本系统设计对分割出来的字符进行了归一化处理,归一化切割出来的字符图像的大小为40*20,与模板中字符图像的大小相匹配。
图3.15本系统的模板匹配的字符识别基本过程是:首先对待识别字符进行二值化并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。
模板匹配的主要特点是实现简单,当字符较规整时对字符图像的缺损、污迹干扰适应力强且识别率相当高。
流程图如下:建立自动识别的代码表读取分割出来的字符第一个字符与模板中的汉字模板进行匹配第二个字符与模板中的字母模板进行匹配后5个字符与模板中的字母与数字模板进行匹配待识别字符与模板字符相减,值越小相似度越大,找到最小的一个即为匹配的最好的识别完成,输出此模板对应值图3.16本系统设计采用相减的方法找到出分割字符与模板库中的字符相似度最大的字符,然后输出。
汽车号牌的字符一般有七个,大部分车牌第一位是汉字,通常代表车辆所属省份,接着的是字母与数字。
车牌字符汉字共约50多个,大写英文字母26个,数字10个。
为了提高系统的识别率与实验的方便,本次系统设计只建立了5个汉字26个字母与10个数字的字符模板库。
首先取模板库的字符,接着依次取待识别字符与模板进行匹配,将其与模板库字符相减,得到的0越多那么匹配成功率越高。
把每一幅相减后的图的0值个数保存,即为识别出来的结果并将结果保存在Data.xls文件中。
字符识别图如下:图3.17 四、优化后实现图3.18图3.19五、分析总结汽车号牌识别系统是一个复杂的系统,考虑到时间和本人能力等因素,在这里我只做了一些初步的研究,很不够完善的地方,还需进一步的研究改进。
(1)汽车号牌识别系统是针对车牌为蓝底白字,7个字符水平排列的汽车车牌进行研究。
有些光照条件不理想的图片,需要先进行图象增强处理,让图象灰度动态范围扩展和对比度增强,再进行车牌定位和分割,这样可以提高分割的成功率。
色彩通道的车牌区域分割算法充分利用了车牌图象的色彩信息,简化了算法的实现,加快了图象的处理速度,具有较高的正确率,而且整个程序用MATLAB语言编程实现,运算速度快。
但是也存在一些识别效果不是很理想的图片,这些图片需要做一些前提工作后才能识别出相应的字符。
(2)车牌定位和分割中利用的车牌区域的宽度信息以及字符尺寸信息,是根据采集到的车辆图像通过人工或者经验测算出来的,实际中需要自动检测;(3)由于基于寻找连续有文字的块的字符分割方法容易受噪声和环境光线变化的影响,所以在车牌字符分割的预处理中,需要对分割出的字符车牌进行均值滤波,膨胀或腐蚀的处理。
经过这些处理可以把字符与字符之间的杂色点去除,只有白色的字符和黑色的背景存在,有利于的字符分割进行[19]。
(4)字符识别方法中运用模板匹配的方法,方法简洁但识别率较低。
模板匹配法,是利用要识别的字符图片与字符库中的图片进行两幅图片相减的方法,找到相减后值最小的图片,其相似程度最大的。
模板库的字符制作很重要,必须要用精确的模板,否则就不能正确的识别。
改进方法:(1)在现有的基础上利用水平投影的方法检测非横向排列的7个字符车牌,根据车牌在水平方向上的投影的峰值特征判断牌照所属类型。
(2)在已定位车牌基础上检测牌照字符笔画的宽度,通过投影检测字符的尺寸信息;也可以通过摄像机架设的高度、角度与车道的关系,将这些参数作为系统参数进。
(3)改进字符分割的算法,在车牌定位以后对图像进行去噪处理,或者可以通过照明设备照射车辆,由于车辆牌照区域的反光特性,可以大大改善图像采集的质量,同时突出牌照区域,间接达到减少噪声的效果。
(4)可以考虑单独设备汉字识别器以及数字字母合一的识别来提高识别器的识别率!附录:程序清单1、车牌分割程序:function[PY2,PY1,PX2,PX1]=chepai_fenge(I5) [y,x,z]=size(I5);myI=double(I5);ticY_threshlow=5;%这个数值很重要。
决定了提取的彩图的质量X_firrectify=5;%====================== Y 方向============================Blue_y=zeros(y,1);for i=1:yfor j=1:xif(myI(i,j,1)==1)Blue_y(i,1)=Blue_y(i,1)+1; % 蓝色象素点统计endendend[temp MaxY]=max(Blue_y);% Y方向车牌区域确定 temp(最多点数):所有行中,最多的累积像素点 MaxY(最多点所在行):该行中蓝点最多PY1=MaxY;%有最多蓝点的行付给PY1while((Blue_y(PY1,1)>=Y_threshlow)&&(PY1>1 ))%找到图片上边界PY1=PY1-1;endPY2=MaxY; %PY1:存储车牌上边界值while((Blue_y(PY2,1)>=Y_threshlow)&&(PY2<y ))%阈值为5PY2=PY2+1;endPY1, PY2figure(1),imshow(Blue_y),title('y 方向确定');pause(2);%==============X 方向===============================X_threshhigh=(PY2-PY1)/11;%这个数值很重要。
决定了提取的彩图的质量,适当提高可抗干扰,但是小图会照成剪裁太多Blue_x=zeros(1,x); % 进一步确定X方向的车牌区域for j=1:xfor i=PY1:PY2if(myI(i,j,1)==1)Blue_x(1,j)=Blue_x(1,j)+1;endendend[temp MaxX]=max(Blue_x);PX1=MaxX-6*(PY2-PY1);if PX1<=1PX1=1;endwhile((Blue_x(1,PX1)<=X_threshhigh)&&(PX1< x))%阈值PX1=PX1+1;end %确定出X方向车牌起点PX2=MaxX+6*(PY2-PY1);if PX2>=xPX2=x;endwhile((Blue_x(1,PX2)<=X_threshhigh)&&(PX2> PX1))%阈值PX2=PX2-1;end %确定出X方向车牌终点PX1 ,PX2figure(2),imshow(Blue_x),title('X方向确定');2、车牌校正程序:function[PY2,PY1,PX2,PX1,threshold]=chepai_xi uzheng(PY2,PY1,PX2,PX1)S=(PY2-PY1)*(PX2-PX1)if S<=25000threshold=50;Y_secrectify=3;X_secrectify=3;elseif S>25000&&S<=45000threshold=100;Y_secrectify=-3;X_secrectify=3;elseif S>45000&&S<=80000threshold=200;Y_secrectify=-3;X_secrectify=3;elseif S>80000&&S<=150000threshold=300;Y_secrectify=-10;X_secrectify=-10;elseif S>150000&&S<=400000threshold=600;Y_secrectify=-10;X_secrectify=-10;elsethreshold=1800;Y_secrectify=-10;X_secrectify=-10;endPY1=PY1-Y_secrectify;PY2=PY2+Y_secrectify;PX1=PX1;PX2=PX2;%对车牌区域的进一步修正3、字符分割程序:function e=zifufenge(d)[m,n]=size(d);top=1;bottom=m;left=1;right=n;while sum(d(top,:))==0 && top<=mtop=top+1; endwhile sum(d(bottom,:))==0 && bottom>=1 bottom=bottom-1;endwhile sum(d(:,left))==0 && left<=nleft=left+1;endwhile sum(d(:,right))==0 && right>=1 right=right-1;enddd=right-left;hh=bottom-top;e=imcrop(d,[left top dd hh]);4、获取字符程序:function [word,result]=getword(d)%获取字符word=[];flag=0;y1=8;y2=0.5;while flag==0[m,n]=size(d);wide=0;while sum(d(:,wide+1))~=0 && wide<=n-2wide=wide+1;endtemp=zifufenge(imcrop(d,[1 1 wide m]));[m1,n1]=size(temp);if wide<y1 && n1/m1>y2d(:,[1:wide])=0;if sum(sum(d))~=0d=zifufenge(d); % 切割出最小范围else word=[];flag=1;endelseword=zifufenge(imcrop(d,[1 1 wide m])); d(:,[1:wide])=0;if sum(sum(d))~=0;d=zifufenge(d);flag=1;else d=[];endendendresult=d;5、主函数程序代码:function varargout = main(varargin) 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});endif nargout[varargout{1:nargout}] =gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State,varargin{:});endpause(1);function main_OpeningFcn(hObject, eventdata, handles, varargin)set(handles.process,'enable','on') handles.output = hObject;guidata(hObject, handles);function varargout =main_OutputFcn(hObject, eventdata, handles)ticvarargout{1} = handles.output; function pushbutton1_Callback(hObject, eventdata, handles)[filenamepathname]=uigetfile({'*.jpg';'*.bmp'}, 'File Selector');I = imread([pathname '\' filename]); handles.I = I;guidata(hObject, handles);axes(handles.axes1);imshow(I);title('原始图片')set(handles.process,'enable','on') function process_Callback(hObject, eventdata, handles)I = handles.I;I1=rgb2gray(I);guidata(hObject, handles);axes(handles.axes2);imshow(I1);title('灰度图');axes(handles.axes3);imhist(I1);title('灰度图直方图'); pause(2);I2=edge(I1,'robert',0.15,'both'); guidata(hObject, handles);axes(handles.axes2);imshow(I2);title('robert算子边缘检测');pause(2);se=[1;1;1];I3=imerode(I2,se);guidata(hObject, handles);axes(handles.axes3);imshow(I3);title('腐蚀后图像');pause(2);se=strel('rectangle',[10,25]);I4=imclose(I3,se);guidata(hObject, handles);axes(handles.axes2);imshow(I4);title('平滑图像的轮廓'); pause(2);I5=bwareaopen(I4,2000);guidata(hObject, handles);axes(handles.axes2);imshow(I5);title('从对象中移除小对象');pause(2);[PY2,PY1,PX2,PX1]=chepai_fenge(I5);%调用分割车牌global threshold;[PY2,PY1,PX2,PX1,threshold]=chepai_xi uzheng(PY2,PY1,PX2,PX1);%调用车牌校正IY=I(PY1:PY2,:,:);Plate=I5(PY1:PY2,PX1:PX2);global dw;dw=Plate;PX1=PX1-1;%对车牌区域的校正PX2=PX2+1;dw=I(PY1:PY2-8,PX1:PX2,:);axes(handles.axes2);imshow(dw),title('车牌区域的校正'); pause(2);t=tic;guidata(hObject, handles);axes(handles.axes2);imshow(IY),title('水平方向合理区域'); axes(handles.axes3);imshow(dw),title('定位剪切后的彩色车牌图像');pause(2);imwrite(dw,'New number plate.jpg'); [filename,filepath]=uigetfile('New number plate.jpg','输入一个定位裁剪后的车牌图像');jpg=strcat(filepath,filename);a=imread('New number plate.jpg');b=rgb2gray(a);figure(3),subplot(3,2,1),imshow(b),ti tle('车牌灰度图像');g_max=double(max(max(b)));g_min=double(min(min(b)));T=round(g_max-(g_max-g_min)/2); %T 为二值化的阈值[m,n]=size(b);d=(double(b)>=T); % d:二值图像figure(3),subplot(3,2,2),imshow(d),ti tle('车牌二值图像');figure(3),subplot(3,2,3),imshow(d),ti tle('均值滤波前');pause(1); h=fspecial('average',3);% 滤波d=im2bw(round(filter2(h,d)));figure(3),subplot(3,2,4),imshow(d),ti tle('均值滤波后');se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵[m,n]=size(d);if bwarea(d)/m/n>=0.365d=imerode(d,se);elseif bwarea(d)/m/n<=0.235d=imdilate(d,se);endfigure(3),subplot(3,2,5),imshow(d),ti tle('膨胀或腐蚀处理后');pause(2);%寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割d=zifufenge(d);[m,n]=size(d);guidata(hObject, handles);axes(handles.axes3);imshow(d);k1=1;k2=1;s=sum(d);j=1;while j~=nwhile s(j)==0j=j+1;endk1=j;while s(j)~=0 && j<=n-1j=j+1;endk2=j-1;if k2-k1>=round(n/6.5)[val,num]=min(sum(d(:,[k1+5:k2-5]))); d(:,k1+num+5)=0 % 分割endendd=zifufenge(d); % 再分割% 切割出 7 个字符y1=10;y2=0.25;flag=0;word1=[];while flag==0[m,n]=size(d);left=1;wide=0;while sum(d(:,wide+1))~=0wide=wide+1;endif wide<y1 % 认为是左侧干扰d(:,[1:wide])=0;d=zifufenge(d);elsetemp=zifufenge(imcrop(d,[1 1 wide m]));[m,n]=size(temp);all=sum(sum(temp));two_thirds=sum(sum(temp([round(m/3):2 *round(m/3)],:)));if two_thirds/all>y2flag=1;word1=temp;endd(:,[1:wide])=0;d=zifufenge(d);endend[word2,d]=getword(d); % 分割出第二个字符pause(1);[word3,d]=getword(d);pause(1);[word4,d]=getword(d);pause(1);[word5,d]=getword(d);pause(1);[word6,d]=getword(d);pause(1);[word7,d]=getword(d); % 分割出第七个字符pause(1);guidata(hObject, handles);axes(handles.axes4);imshow(word1),tit le('1');guidata(hObject, handles);axes(handles.axes4);imshow(word2),tit le('2');guidata(hObject, handles);axes(handles.axes4);imshow(word3),tit le('3');guidata(hObject, handles); axes(handles.axes4);imshow(word4),tit le('4');guidata(hObject, handles);axes(handles.axes4);imshow(word5),tit le('5');guidata(hObject, handles);axes(handles.axes4);imshow(word6),tit le('6');guidata(hObject, handles);axes(handles.axes4);imshow(word7),tit le('7');[m,n]=size(word1);word1=imresize(word1,[40 20]); % 商用系统程序中归一化大小为 40*20,此处演示word2=imresize(word2,[40 20]);word3=imresize(word3,[40 20]);word4=imresize(word4,[40 20]);word5=imresize(word5,[40 20]);word6=imresize(word6,[40 20]);word7=imresize(word7,[40 20]); guidata(hObject, handles);axes(handles.axes4);imshow(word1),tit le('1');guidata(hObject, handles);axes(handles.axes5);imshow(word2),tit le('2');guidata(hObject, handles);axes(handles.axes6);imshow(word3),tit le('3');guidata(hObject, handles);axes(handles.axes7);imshow(word4),tit le('4');guidata(hObject, handles);axes(handles.axes8);imshow(word5),tit le('5');guidata(hObject, handles);axes(handles.axes9);imshow(word6),tit le('6');guidata(hObject, handles);axes(handles.axes10);imshow(word7),ti tle('7');imwrite(word1,'1.jpg');imwrite(word2,'2.jpg');imwrite(word3,'3.jpg');imwrite(word4,'4.jpg');imwrite(word5,'5.jpg');imwrite(word6,'6.jpg');imwrite(word7,'7.jpg');liccode=char(['0':'9' 'A':'Z' '桂鲁苏豫京']); %建立自动识别字符代码表SubBw2=zeros(40,20);l=1;for I=1:7ii=int2str(I);t=imread([ii,'.jpg']);SegBw2=imresize(t,[4020],'nearest');if l==1 %第一位汉字识别kmin=37;kmax=41;pause(1);elseif l==2 %第二位 A~Z 字母识别kmin=11;kmax=36;pause(1);else l>=3 %第三位以后是字母或数字识别kmin=1;kmax=36;endfor k2=kmin:kmaxfname=strcat('模板库\',liccode(k2),'.jpg');SamBw2 = imread(fname);for i=1:40for j=1:20SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j); endend % 以上相当于两幅图相减得到第三幅图Dmax=0;for k1=1:40for l1=1:20if( SubBw2(k1,l1) > 0 || SubBw2(k1,l1) <0 ) Dmax=Dmax+1; endendendError(k2)=Dmax;endError1=Error(kmin:kmax);MinError=min(Error1);findc=find(Error1==MinError);Code(l*2-1)=liccode(findc(1)+kmin-1); Code(l*2)=' ';l=l+1;endguidata(hObject, handles);axes(handles.axes3);imshow(dw),title( ['车牌识别号码:',Code],'fontsize',25,'fontname','隶书');pause(2);fid = fopen('Data.xls', 'a+');fprintf(fid,'%s\r\n',Code,datestr(now ));winopen('Data.xls');fclose(fid);function pushbutton6_Callback(hObject, eventdata, handles)close(gcf);% --- 实现清屏功能.functionpushbutton7_Callback(hObject, eventdata, handles)clc;cla(handles.axes1);cla(handles.axes2);cla(handles.axes3);cla(handles.axes4);cla(handles.axes5);cla(handles.axes6);cla(handles.axes7);cla(handles.axes8);cla(handles.axes9);cla(handles.axes10);。