matlab车牌识别课程设计报告(附源代码)
- 格式:doc
- 大小:1.36 MB
- 文档页数:24
基于 matlab 的车牌鉴别系统一、对车辆图像进行预办理1.载入车牌图像:function [d]=main(jpg)[filename, pathname] = uigetfile({'*.jpg',文件 (*.jpg)'});'JPEG if(filename == 0), return, endglobal FILENAME % 定义全局变量FILENAME = [pathname filename];I=imread(FILENAME);figure(1),imshow(I);title(' 原图像 ');% 将车牌的原图显示出来结果以下:2.将彩图变换为灰度图并绘制直方图:I1=rgb2gray(I);%将彩图变换为灰度图figure(2),subplot(1,2,1),imshow(I1);title(' 灰度图像');figure(2),subplot(1,2,2),imhist(I1);title(' 灰度图直方图');% 绘制灰度图的直方图结果以下所示:3.用 roberts 算子进行边缘检测:I2=edge(I1,'roberts',0.18,'both');% 选择阈值,用 roberts 算子进行边缘检测figure(3),imshow(I2);title('roberts算子边缘检测图像');结果以下:4.图像推行腐化操作:se=[1;1;1];I3=imerode(I2,se);% 对图像推行腐化操作,即膨胀的反操作figure(4),imshow(I3);title('腐化后图像');5.圆滑图像se=strel('rectangle',[25,25]);% 构造构造元素以正方形构造一个seI4=imclose(I3,se);%图像聚类、填充图像figure(5),imshow(I4);title('圆滑图像');结果以下所示:6.删除二值图像的小对象I5=bwareaopen(I4,2000);% 去除聚团灰度值小于 2000 的部分figure(6),imshow(I5);title(' 从对象中移除小的对象 ');结果以下所示:二、车牌定位[y,x,z]=size(I5);%返回 I5 各维的尺寸,储藏在x,y,z中myI=double(I5);% 将 I5 变换成双精度tic%tic表示计时的开始,toc 表示计时的结束Blue_y=zeros(y,1);%产生一个y*1 的零阵for i=1:yfor j=1:xif(myI(i,j,1)==1)% 若是myI(i,j,1) 即myI 的图像中坐标为(i,j) 的点值为1,即该点为车牌背景颜色蓝色% 则Blue_y(i,1) 的值加 1Blue_y(i,1)= Blue_y(i,1)+1;% 蓝色像素点统计endendend[temp MaxY]=max(Blue_y);%Y方向车牌地域确定%temp 为向量 white_y的元素中的最大值,MaxY为该值的索引PY1=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 方向车牌地域确定%%%%%%方X向 %%%%%%%%%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;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('定位裁剪后的车牌彩色图像');的车牌区域以下所示:三、字符切割及办理1.车牌的进一步办理对切割出的彩色车牌图像进行灰度变换、二值化、均值滤波、腐化膨胀以及字符切割以从车牌图像中分别出组成车牌号码的单个字符图像,对切割出来的字符进行预办理(二值化、归一化),此后解析提取,对切割出的字符图像进行鉴别给出文本形式的车牌号码。
matlab车牌识别课程设计一、课程目标知识目标:1. 学生将理解车牌识别技术的原理和实现流程,掌握使用MATLAB进行图像处理的基本方法。
2. 学生将学会运用MATLAB内置函数进行车牌定位、字符分割和识别,并了解相关算法。
3. 学生将掌握利用MATLAB进行车牌识别系统的设计与实现,提高解决实际问题的能力。
技能目标:1. 学生能够运用MATLAB软件进行图像的读取、显示、预处理等操作。
2. 学生能够独立完成车牌的定位、分割和识别,具备一定的编程实践能力。
3. 学生能够通过本课程的学习,将理论知识与实际应用相结合,提高解决复杂问题的能力。
情感态度价值观目标:1. 学生将培养对图像处理技术的兴趣,激发探究精神,提高学习积极性。
2. 学生将形成严谨的科学态度,注重团队协作,善于沟通交流。
3. 学生将认识到车牌识别技术在现实生活中的应用价值,增强社会责任感和创新意识。
本课程针对高年级学生,结合图像处理、模式识别等学科知识,以MATLAB为工具,培养学生的编程实践能力和解决实际问题的能力。
课程目标具体、可衡量,旨在让学生在学习过程中充分了解车牌识别技术的原理和应用,为后续相关领域的学习和研究打下坚实基础。
二、教学内容1. 车牌识别技术原理概述:介绍车牌识别技术的发展背景、系统组成和基本流程,使学生了解整个技术的框架。
2. MATLAB图像处理基础:讲解MATLAB中图像的读取、显示、存储等基本操作,以及图像预处理方法,包括灰度化、二值化、滤波等。
3. 车牌定位:介绍常见的车牌定位算法,如边缘检测、形态学处理等,并运用MATLAB实现车牌定位。
4. 车牌字符分割:讲解车牌字符分割的常用方法,如投影分割、连通域分析等,以及MATLAB实现方法。
5. 车牌字符识别:介绍基于模板匹配、神经网络等算法的字符识别方法,并运用MATLAB实现车牌字符的识别。
6. 车牌识别系统设计与实现:结合前面所学内容,设计并实现一个简单的车牌识别系统,包括模块划分、算法选择和程序编写。
图像处理大作业实验报告--用MATLAB实现车牌识别系统作者东南大学电子系李浩翔06006435指导老师张雄实验日期2010-1-10索引:实验目的实验原理实验步骤1.预处理2.边缘识别3.小区块联通4.车牌区域的识别并截取5.字符截取6.字符识别实验思路分析本程序的局限性附录附录1 程序源代码1.主程序2.子函数(code)附录2 测试图像处理过程汇总1.测试图像12.测试图像2附录3 参考文献及参考程序实验目的(返回索引)使用MATLAB对包含车牌的图片进行处理,利用算法识别出车牌所在的区域,并辨认其数字及字母,最后在屏幕上输出所识别出的车牌号。
实验原理(返回索引)1.将拍摄下的彩色图像转换为灰度图,之后用中值滤波对灰度图像进行预处理,从而减少干扰信息。
2.使用sobel算子识别出图像的边缘,并转化为二值化图像。
并对二值化之后的图像进行卷积,加强边缘的轮廓。
3.用膨胀-再腐蚀的方法分别作用于图像的横轴与纵轴,将小块的联通区域连接起来,使车牌的形状更加清晰,为下一步的识别做好准备。
4.利用车牌长宽比的特性对各个联通区域进行判断,识别出车牌所在区域,并截取。
5.对截取出的车牌区域进行进一步的处理,分割出各个字符。
6.对分割出的字符进行特征判断,从而识别出具体的车牌号。
实验步骤(返回索引)1.预处理(返回索引)A. 将拍摄下的彩色图像转换为灰度图,便于进行接下来的算法处理。
图1 拍摄下的图片B.对灰度图进行中值滤波,减少干扰点对二值化运算结果的影响。
图3 进行中值滤波后的灰度图C.将中值滤波后的灰度图用设定门限灰度的方法(取门限值为0.2)转化为二值化图像,在后继的车牌区域截取运算中作为源图像使用。
图4 使用设定灰度门限的方法获得的二值化图像2.边缘识别(返回索引)A.利用sobel算子识别出图3中的边缘区域,并将其转换为二值化图像。
在转换后的二值化图像中,边缘区域被作为白点标出,而非边缘区域被黑色区域覆盖。
matlab车牌课程设计实验文件一、课程目标知识目标:1. 理解MATLAB编程基础,掌握基本语法和常用函数。
2. 学习图像处理基本原理,掌握车牌识别技术的基本流程。
3. 掌握车牌定位、字符分割和字符识别的方法。
技能目标:1. 能够运用MATLAB编写程序,实现车牌图像的预处理和车牌定位。
2. 能够使用图像处理技术进行车牌字符分割。
3. 能够利用机器学习算法对车牌字符进行识别。
4. 培养学生动手实践能力,提高问题分析和解决能力。
情感态度价值观目标:1. 培养学生对图像处理和机器学习领域的兴趣,激发探索精神。
2. 培养学生合作意识,提高团队协作能力。
3. 增强学生对我国智能交通系统发展的认识,提高社会责任感。
课程性质:本课程为实践性较强的课程设计,结合了计算机视觉、图像处理和机器学习等多个领域的知识。
学生特点:学生具备一定的编程基础,对图像处理和机器学习有一定了解,对实际应用场景感兴趣。
教学要求:教师需引导学生掌握MATLAB编程和图像处理技术,注重实践操作,鼓励学生自主探索和团队协作,提高解决问题的能力。
通过课程设计,使学生能够将理论知识与实际应用相结合,达到学以致用的目的。
后续教学设计和评估将围绕上述具体学习成果展开。
二、教学内容1. MATLAB编程基础:- 数据类型与基本运算- 控制语句与函数编写- 图像读取与显示2. 车牌图像预处理:- 车牌图像灰度化- 图像二值化与滤波- 车牌区域定位3. 车牌字符分割:- 车牌区域提取- 车牌字符分割算法- 字符归一化处理4. 车牌字符识别:- 机器学习基础- 特征提取与选择- 字符识别算法(如SVM、神经网络等)5. 实践项目:- 车牌识别系统设计与实现- 算法优化与调试- 结果分析及评价教学内容安排与进度:- 第一周:MATLAB编程基础及图像读取显示- 第二周:车牌图像预处理与定位- 第三周:车牌字符分割- 第四周:车牌字符识别- 第五周:实践项目,综合运用所学知识完成车牌识别系统教学内容关联教材章节:- 《数字图像处理》第四章:图像增强- 《数字图像处理》第五章:图像分割- 《机器学习》第三章:特征工程- 《机器学习》第四章:分类算法三、教学方法1. 讲授法:- 对于MATLAB编程基础、图像处理原理和机器学习算法等理论知识,采用讲授法进行教学,为学生奠定扎实的基础。
MATLAB课程设计报告书课题名称基于MATLAB的车牌识别课程设计姓名学号学院专业指导教师2016年6月21日基于MATLAB的车牌识别课程设计目录一.课程设计目的……………………………………………二.设计原理…………………………………………………三.详细设计步骤……………………………………………四. 设计结果及分析…………………………………………五. 总结………………………………………………………六. 设计体会…………………………………………………七. 参考文献…………………………………………………一、课程设计目的车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。
通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。
二、设计原理:牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照、牌照颜色自动识别的模式识别技术。
其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。
某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。
一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。
当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。
牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照输出。
三、详细设计步骤:1. 提出总体设计方案:牌照、颜色识别为了进行牌照识别,需要以下几个基本的步骤:a.牌照定位,定位图片中的牌照位置;b.牌照字符分割,把牌照中的字符分割出来;c.牌照字符识别,把分割好的字符进行识别,最终组成牌照。
牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。
(1)牌照定位:自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。
Matlab车牌定位程序源代码clear;clc;close all;chos=0;possibility=9;while chos~=possibility,chos=menu('车牌定位系统','载入图片','二值化','边缘化','腐蚀','连通','滤波',...'定位','倾斜校正','退出');if chos==1,clc;[namefile,pathname]=uigetfile('*.jpg','Select image');if namefile~=0I=imread(strcat(pathname,namefile));imshow(I);endendif chos==2,I1=rgb2gray(I);imshow(I1);endif chos==3,I2=edge(I1,'robert',0.15,'both');imshow(I2);endif chos==4,se=[1;1;1];I3=imerode(I2,se);imshow(I3);endif chos==5,se=strel('rectangle',[25,25]);I4=imclose(I3,se);imshow(I4);endif chos==6,I5=bwareaopen(I4,2000);imshow(I5);[y,x,z]=size(I5);myI=I5;endif chos==7,%%%%%%%%%%% 统计分析%%%%%%%%%%%%%%%%%%%%%%% Y 方向%%%%%%%%%%whitr_y=zeros(y,1);for i=1:yfor j=1:xif(myI(i,j,1)==1) % 白色RGB的灰度范围whitr_y(i,1)= whitr_y(i,1)+1; % 白色象素点统计endendend[temp MaxY]=max(whitr_y); % Y方向车牌区域确定PY1=MaxY;while ((whitr_y(PY1,1)>=5)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while ((whitr_y(PY2,1)>=5)&&(PY2<y))PY2=PY2+1;endIY=I(PY1:PY2,:,:);%%%%%%%% X 方向%%%%%%%%%%whitr_x=zeros(1,x); % 进一步确定X 方向的车牌区域for j=1:xfor i=PY1:PY2if(myI(i,j,1)==1)whitr_x(1,j)= whitr_x(1,j)+1;endendendPX1=1;while ((whitr_x(1,PX1)<3)&&(PX1<x))PX1=PX1+1;endPX2=x;while ((whitr_x(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;endPlate=I(PY1-13:PY2+13,PX1-5:PX2+5,:);%预留多些利于倾斜校正% t=toc % 读取计时imshow(Plate);endif chos==8,I=Plate;level = graythresh(I);I = im2bw(I,level);%倾斜矫正myI=edge(I,'sobel');theta=0:179;[r1,x1]=radon(myI,theta);R1=sort(r1,'descend');[x,y]=size(R1);R=R1(1:10,:);R=sum(R);a=0.4;E(1)=R(1);for i=2:length(R)E(i)=a*R(i)+(1-a)*E(i-1);enda=tan((91-(find(E==max(E))))*pi/180);I=imrotate(I,a);imshow(I);%水平方向倾斜矫正Rfilter=0; Lfilter=0;for j=alpha+10:length(E)-1if (E(j)<=200)&&(E(j)<E(j-1))&&(E(j)<=E(j+1))Rfilter=j;endendfor j=2:alpha-10if(E(j)<=200)&&(E(j)<E(j-1))&&(E(j)<=E(j+1))Lfilter=j;endendE(Lfilter:Rfilter)=min(E(Lfilter),E(Rfilter));for i=2:179if(E(i)>=200)&&(E(i)>E(i-1))&&(E(i)>=E(i+1))beta=i;elsebeta=0;endendif alpha>91;a=-tan(beta);else a=tan(beta);endtform=maketform('affine',[1 0 0;a 1 0;0 0 1]);goal=imtransform(I,tform,'bicubic');%垂直方向矫正if mean(goal)>0.5goal=~goal;endimshow(goal(15:end-14,11:end-10));endend。
目录一、课程设计目的 (3)二、课程设计要求 (3)三、课程设计的内容 (3)四、题目分析 (3)五、总体设计 (4)六、具体设计 (5)1、文件 (5)1.1、打开 (5)1.2、保存 (5)1.3、退出 (5)2、编辑 (5)6.2.1、灰度 (5)6.2.2、亮度 (6)6.2.3、截图 (7)6.2.4、缩放 (7)3、旋转 (9)6.3.1、上下翻转 (9)6.3.2、左右翻转 (9)6.3.3任意角度翻转 (9)6.4、噪声 (10)6.5、滤波 (10)6.6、直方图统计 (11)6.7、频谱分析 (12)6.7.1、频谱图 (12)6.7.2、通过高通滤波器........................... .. (12)6.7.3、通过低通滤波器...................................... . (13)6.8、灰度图像处理................................................ . . (14)6.8.1、二值图像……………………………………………….. .146.8.2、创建索引图像............................................. (14)6.9、颜色模型转换...................................... .. (14)6.10、操作界面设计 (15)七、程序调试及结果分析 (15)八、心得体会 (16)九、参考文献 (17)十、附录 (18)基于MATLAB的图像处理的课程设计摘要:数字图像处理技术是20世纪60年代发展起来的一门新兴学科,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应用,并显示出广阔的应用前景。
MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。
它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。
数字图像处理期末课程报告题目:车牌识别的matlab实现题目类型:软件型学院信息工程与自动化学院专业:计算机科学与技术年级:XXXX 学号:XXXXXXX学生姓名: xxx指导教师:xx日期:2012-6-8目录摘要: (3)关键词: (3)实验工具: (3)车辆牌照识别流程: (3)实验内容及步骤 (3)1.图像预处理: (3)2.车牌定位——车牌起始位置和终止位置 (5)3.图片二值化 (6)4.列方向像素点灰度值累计 (7)5.字符分割: (8)6.建立字符模板数据库 (9)7.归一化训练 (10)结果分析: (15)摘要:本次课程设计的目的是通过对基于MATLAB 的字符识别的研究,以汽车牌照识别的设计为实例,详细介绍字符识别的相关原理。
整个汽车牌照识别的过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块,用MATLAB 软件编程来实现每一个部分,最后识别出汽车牌照。
在研究的同时对其中出现的问题进行了具体分析,处理。
寻找出对于具体的汽车牌照识别过程的最好的方法。
关键词:MATLAB 字符识别 车牌识别 神经网络 图像处理实验工具:MATLAB 7.8(R2009a )。
车辆牌照识别流程:基于 MATLAB 图像处理的汽车牌照识别,主要包括车牌定位、字符车牌分割、和车牌字符识别三个关键环节。
流程图如下:其中,(1) 原始图像:由数码相机或其它扫描装置拍摄到的图像;(本实验图片由数码相机获得)(2) 图像预处理:对动态采集到的图像进行灰度处理、边缘检测、腐蚀、膨胀、滤波、等处理排除图像干扰;(3) 车牌定位:计算边缘图像的投影面积,寻找峰谷点,大致确定车牌位置,再计算此连通域内的宽高比,剔除不在域值范围内的连通域,最后得到的便为车牌区域;(4) 字符分割:利用投影检测的字符定位分割方法得到单个的字符;(5) 字符数据库:构造训练样本数据库,为第6步的字符识别建立字符模板数据库;(6) 字符识别:通过基于模板匹配的OCR 算法或基于人工神经网络的OCR 算法,通过特征对比或训练识别出相关的字符,得到最后的汽车牌照,包括英文字母和数字。
(完整word版)基于Matlab的车牌识别实现源码function[]=main(jpg)close allclctic %测定算法执行的时间[fn,pn]=uigetfile('timg1,jpg','选择图片') %读入图片I=imread([pn,fn]);figure,imshow(I);title('原始图像'); %显示原始图像Im1=rgb2gray(I);figure(2),subplot(1,2,1),imshow(Im1);title('灰度图');figure(2),subplot(1,2,2),imhist(Im1);title('灰度图的直方图'); %显示图像的直方图Tiao=imadjust(Im1,[0.19,0.78],[0,1]); %调整图片figure(3),subplot(1,2,1),imshow(Tiao);title('增强灰度图');figure(3),subplot(1,2,2),imhist(Tiao);title('增强灰度图的直方图');Im2=edge(Tiao,'Roberts','both'); %使用sobel算子进行边缘检测figure(4),imshow(Im2);title('sobel算子实现边缘检测')se=[1;1;1];Im3=imerode(Im2,se);figure(5),imshow(Im3);se=strel('square',40);%'rectangle',[25,25]/'diamond',25/Im4=imclose(Im3,se);figure(6),imshow(Im4);title('平滑图像的轮廓');Im5=bwareaopen(Im4,1500);figure(7),imshow(Im5);title('移除小对象');[y,x,z]=size(Im5); %返回Im5各维的尺寸,并存储在变量y、x、z中Im6=double(Im5); %将Im5换成双精度数值%开始横向扫描tic %tic计时开始,toc结束,计算tic与toc之间程序的运行时间Blue_y=zeros(y,1); %产生y*1的全0矩阵for i=1:y %逐行扫描for j=1:xif(Im6(i,j,1)==1)%如果Im6图像中坐标为(i,j)的点值为1,即为移除小对象的白色区域,Blue_y(i,1)= Blue_y(i,1)+1;%则y*1列矩阵的相应像素点的元素值加1,endendend[temp MaxY]=max(Blue_y);%temp为向量Blue_y的矩阵中的最大值,MaxY为该值的索引(最大值在向量中的位置)%返回包含最大元素的列,即白色区域最宽的列%Y方向车牌区域确定figure(8),subplot(1,2,1),plot(0:y-1,Blue_y),title('行方向白色像素点累计'),xlabel('行数'),ylabel('个数');PY1=MaxY;while ((Blue_y(PY1,1)>=120)&&(PY1>1))PY1=PY1-1;endPY2=MaxY;while ((Blue_y(PY2,1)>=40)&&(PY2<y))< p="">PY2=PY2+1;IY=I(PY1:PY2,:,:);%IY为原始图像I中截取的纵坐标在PY1:PY2之间的部分%横向扫描完成,开始纵向扫描Blue_x=zeros(1,x);%进一步确定x方向的车牌区域for j=1:x %逐列扫描for i=PY1:PY2if(Im6(i,j,1)==1)Blue_x(1,j)= Blue_x(1,j)+1; %根据Im5的x值确定endendendfigure(8),subplot(1,2,2),plot(0:x-1,Blue_x),title('列方向白色像素点累计'),xlabel('列数'),ylabel('个数'); PX1=1;while ((Blue_x(1,PX1)<3)&&(PX1<x))< p="">PX1=PX1+1;endPX2=x;while ((Blue_x(1,PX2)<3)&&(PX2>PX1))PX2=PX2-1;end%end纵向扫描PX1=PX1-2;%对车牌区域的校正PX2=PX2+2;dw=I(PY1:PY2,PX1:PX2,:);t=toc;figure(9),subplot(1,2,1),imshow(IY),title('垂直方向合理区域');figure(9),subplot(1,2,2),imshow(dw),title('定位剪切后的彩色车牌图像') imwrite(dw,'dw.jpg'); %将图像写入图形文件中a=imread('dw.jpg');b=rgb2gray(a);imwrite(b,'车牌灰度图像.jpg');figure(10);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,'车牌二值图像.jpg');figure(10);subplot(3,2,2),imshow(d),title('2.车牌二值图像')figure(10),subplot(3,2,3),imshow(d),title('3.均值滤波前')h=fspecial('average',3);%建立预定义的滤波算子,average为均值滤波,模板尺寸为3*3d=imbinarize(round(filter2(h,d))); %im2bw,使用指定的滤波器h对h进行d即均值滤波imwrite(d,'均值滤波后.jpg');figure(10),subplot(3,2,4),imshow(d),title('4.均值滤波后')se=eye(2);%单位矩阵[m,n]=size(d); %d为二值图像,返回信息矩阵if bwarea(d)/m/n>=0.365%二值图像中对象的总面积与整个面积的比大于0.365d=imerode(d,se);%进行腐蚀elseif bwarea(d)/m/n<=0.235%二值图像中对象的总面积与整个面积的比值小于0.235 d=imdilate(d,se);%进行膨胀endimwrite(d,'膨胀或腐蚀处理后.jpg');figure(10),subplot(3,2,5),imshow(d),title('5.膨胀或腐蚀处理后.jpg')d=qiege(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=qiege(d);y1=10;y2=0.25;flag=0;word1=[];while flag==0[m,n]=size(d);wide=0;while sum(d(:,wide+1))~=0 %扫过的地方不全为黑色,向右移动,直到不是停止wide=wide+1;endif wide<="" p="">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)],:)));%统计切割区域1/3至2/3行所有元素if two_thirds/all>y2 flag=1;word1=temp;endd(:,[1:wide])=0;d=qiege(d);end[word2,d]=getword(d); %分割出第二个字符[word3,d]=getword(d); %分割出第三个字符[word4,d]=getword(d); %分割出第四个字符[word5,d]=getword(d); %分割出第五个字符[word6,d]=getword(d); %分割出第六个字符[word7,d]=getword(d); %分割出第七个字符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]);figure(11);subplot(2,7,1),imshow(word1),title('1');subplot(2,7,2),imshow(word2),title('2');subplot(2,7,3),imshow(word3),title('3');subplot(2,7,4),imshow(word4),title('4');subplot(2,7,5),imshow(word5),title('5');subplot(2,7,6),imshow(word6),title('6');subplot(2,7,7),imshow(word7),title('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' '辽粤豫鄂鲁陕京津苏浙']);%建立自动识别字符代码表,将t'0':'9' 'A':'Z' '鲁陕苏豫'多个字符串组成一个字符数组,每行对应一个字符串,字符数不足的自动补空格SubBw2=zeros(40,20);%40*20的零矩阵l=1;ii=int2str(I);%整型转换字符串t=imread([ii,'.jpg']);SegBw2=imresize(t,[40 20],'nearest');%改变图片的大小SegBw2=double(SegBw2)>50;%将灰度图转化为二值图像,double产生0-255的灰度值if l==1 %第一位汉字识别kmin=37;kmax=46;%模板中汉字所在的位置elseif l==2 %第二位字母识别kmin=11;kmax=36;%A-Z字母位置elsel>=3 %第三位后字母或数字识别kmin=1;kmax=36;endfor k2=kmin:kmaxfname=strcat('字符模板\',liccode(k2),'.jpg');SamBw2=imread(fname);SamBw2=double(SamBw2)>50;%将模板转换为二值图,double产生0-255的灰度值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 abs(SubBw2(k1,l1))>0Dmax=Dmax+1;endendendError(k2)=Dmax;endError1=Error(kmin:kmax);%模板对应的字符模板进行匹配选择findc=find(Error1==MinError);Code(l*2-1)=liccode(findc(1)+kmin-1);Code(l*2)=' ';l=l+1;endmsgbox(Code,'识别结果')function [word,result]=getword(d) %定义分割字符用函数(1)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=imcrop(d,[1 1 wide m]);%用于返回图像的一个裁剪区域[m1,n1]=size(temp);z=sum(temp,2);count=0;for i=1:m1if z(i)~=0count=count+1;endendif count<="" p="">d(:,[1,wide])=0;d=qiege(d);elsetemp=qiege(imcrop(d,[1 1 wide m]));%用于返回图像的一个裁剪区域[m1,n1]=size(temp);if widey2 %宽度过小,或长大于宽的两倍d(:,[1,wide])=0;if sum(sum(d))~=0 %d中所有元素之和d=qiege(d);%切割出最小范围elseword=[];flag=1;endword=qiege(imcrop(d,[1 1 wide m]));%划分出的temp进行切割d(:,[1:wide])=0;%切割完后该区域变为黑色if sum(sum(d))~=0d=qiege(d);flag=1;elsed=[];endendendendresult=d;function e=qiege(d) %定义分割字符用函数(2)[m,n]=size(d);top=1;bottom=m;left=1;right=n; %intewhile 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>=1right=right-1;enddd=right-left;hh=bottom-top;e=imcrop(d,[left top dd hh]);//字符实别需要字符图库,没有对照图库是识别不了的</x))<></y))<>。
课程设计报告课设题目:matlab车牌识别系统学院:医药信息工程学院姓名: ------学号:---------------指导教师:向征目录一.课程设计任务 (3)二.课程设计原理及设计方案 (3)1.系统简述 (3)2.图像预处理: (4)3.车牌定位 (4)4.字符分割 (5)5.字符识别 (6)三.课程设计的步骤和结果 (6)1.车牌定位 (6)2.字符分割 (10)3.字符识别 (12)四.设计GUI界面 (16)五.课程设计总结和体会 (17)六.参考文献 (17)七.设计总代码 (18)1.chepai_main.m (18)2.chepaidingwei.m (18)3.fenge.m (19)4.rando_bianhuan.m (21)5.zifushibie2.m (21)一.课程设计任务在交通管理过程中,通常采用视频监控方式对闯红灯和超速等违章车辆进行监督。
对违章车辆,需要自动检测车牌信息,提取车牌号码,以便查找车主信息和监督管理。
国内常用的一般车牌通常是是蓝底白字,长宽比3:1。
1、对车牌图像进行预处理,然后进行车牌定位;2、进行字符分割;2、对车牌中的数字、字母和汉字进行提取和识别;3、要求自行设计方案、编写代码实现上述功能,并设计车牌识别的软件界面。
二.课程设计原理及设计方案1.系统简述一个完整的车牌识别系统闭应包括车辆检测、图像采集、图像预处理、车牌定位、字符分割、字符识别等单元。
当车辆到达触发图像采集单元时,系统采集当前的视频图像。
车辆识别单元对图像进行处理,定位出牌照位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。
车牌识别系统原理如图l 所示。
图1 车牌识别系统原理图1)图像预处理:对汽车图像进行图像转换、图像增强等。
2)车牌定位:从预处理后的汽车图像中分割出车牌图像。
即在一幅车辆图像中找到车牌所在的位置。
3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像4)字符识别:对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。
基于Matlab的车牌识别摘要:车牌识别技术是智能交通系统的重要组成部分,在近年来得到了很大的发展。
本文从预处理、边缘检测、车牌定位、字符分割、字符识别五个方面,具体介绍了车牌自动识别的原理。
并用MATLAB软件编程来实现每一个部分,最后识别出汽车车牌。
一、设计原理车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌字符的矩形区域,然后对车牌字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。
车牌自动识别是一项利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。
其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。
某些车牌识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。
一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。
当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。
车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。
二、设计步骤总体步骤为:基本的步骤:a.车牌定位,定位图片中的车牌位置;b.车牌字符分割,把车牌中的字符分割出来;c.车牌字符识别,把分割好的字符进行识别,最终组成车牌号码。
车牌识别过程中,车牌颜色的识别依据算法不同,可能在上述不同步骤实现,通常与车牌识别互相配合、互相验证。
(1)车牌定位:自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定车牌区域是整个识别过程的关键。
首先对采集到的视频图像进行大范围相关搜索,找到符合汽车车牌特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为车牌区域,并将其从图象中分割出来。
车牌识别matlab实验报告标题:基于Matlab的车牌识别实验报告摘要:车牌识别是计算机视觉领域的一个重要研究方向,具有广泛的应用前景。
本实验基于Matlab平台,设计并实现了一个简单的车牌识别系统。
实验采用了图像处理和模式识别的技术,通过对车牌图像的预处理、字符分割和字符识别等步骤,成功地实现了对车牌的自动识别。
实验结果表明,该系统在不同场景下的车牌识别效果良好。
一、引言随着交通问题的日益突出,车牌识别技术在交通管理、安防等领域得到广泛应用。
车牌识别系统的核心是对车牌图像进行处理和分析,从中提取出车牌的信息。
本实验旨在利用Matlab平台,实现一个简单的车牌识别系统,并对其性能进行评估。
二、实验方法1. 数据收集:收集包含不同角度、光照条件和车牌类型的车牌图像,并建立一个图像库。
2. 图像预处理:对采集到的车牌图像进行预处理,包括图像增强、灰度化、二值化等操作,以减小光照和噪声对后续处理的影响。
3. 车牌定位:利用边缘检测和形态学处理等方法,对预处理后的图像进行车牌定位,提取出车牌区域。
4. 字符分割:对提取到的车牌区域进行字符分割,将车牌中的字符单独切割出来,以便后续的字符识别。
5. 字符识别:利用模式识别算法,对字符进行识别。
本实验采用了支持向量机(SVM)算法进行训练和分类。
6. 性能评估:对实验结果进行评估,包括准确率、召回率和F1值等指标。
三、实验结果与讨论经过实验测试,我们的车牌识别系统在不同场景下表现出良好的性能。
在收集的测试集上,系统的准确率达到了90%,召回率为85%。
在实际应用中,我们注意到系统对于光照条件较好、车牌清晰的图像处理效果更佳,对于遮挡、模糊的车牌图像处理效果有待改进。
四、结论本实验基于Matlab平台,设计并实现了一个简单的车牌识别系统。
通过图像预处理、车牌定位、字符分割和字符识别等步骤,我们成功地实现了对车牌的自动识别。
实验结果表明,该系统在不同场景下的车牌识别效果良好,并能够较为准确地提取出车牌中的字符信息。
MATLAB车牌识别系统课程设计一、课程目标知识目标:1. 学生能理解MATLAB编程环境,掌握基本的数据类型、运算符和流程控制语句。
2. 学生能掌握车牌图像的预处理方法,包括图像灰度化、二值化、滤波去噪等。
3. 学生能理解并实现车牌定位和分割的算法,提取车牌字符。
4. 学生能掌握车牌字符识别的方法,如模板匹配、神经网络等。
技能目标:1. 学生能够运用MATLAB编写程序,对车牌图像进行处理和分析。
2. 学生能够独立设计并实现一个简单的车牌识别系统。
3. 学生能够通过实践操作,提高问题解决能力和团队协作能力。
情感态度价值观目标:1. 学生培养对图像处理和模式识别领域的兴趣,激发学习热情。
2. 学生通过实践,认识到编程在解决实际问题中的重要性,增强自信心。
3. 学生在团队协作中,学会尊重他人,培养良好的沟通能力和合作精神。
课程性质:本课程为选修课,旨在让学生在实际项目中运用所学的编程知识,提高解决实际问题的能力。
学生特点:学生为高中年级,已具备一定的编程基础,对新鲜事物充满好奇心,但实践经验不足。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,引导学生通过自主学习和团队协作,完成课程目标。
将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容1. MATLAB编程基础- 数据类型与运算符- 程序流程控制- 函数与脚本- 图像处理基本操作2. 车牌图像预处理- 图像读取与显示- 灰度化与二值化- 滤波去噪- 边缘检测与轮廓提取3. 车牌定位与分割- 车牌区域提取- 车牌字符分割- 车牌倾斜校正4. 车牌字符识别- 模板匹配法- 神经网络法- 支持向量机法5. 车牌识别系统实现- 系统框架设计- 模块化编程实现- 系统测试与优化教学内容依据课程目标,结合教材章节进行安排。
在教学过程中,注重理论与实践相结合,引导学生逐步掌握MATLAB编程及图像处理方法。
教学内容分为五个部分,每部分对应相应的知识点,确保学生能够系统地学习车牌识别系统的设计原理和实现方法。
车牌识别matlab课程设计一、课程目标知识目标:1. 理解车牌识别技术的基本原理,掌握相关图像处理方法;2. 学会使用MATLAB软件进行车牌检测、字符分割和识别的基本操作;3. 了解我国车牌号码的编码规则及特点。
技能目标:1. 能够运用MATLAB软件进行车牌图像的预处理,包括图像滤波、二值化等;2. 掌握基于形态学运算的车牌定位方法,并能够独立完成车牌检测任务;3. 学会使用模板匹配或深度学习等方法进行车牌字符识别,并实现简单的车牌识别系统。
情感态度价值观目标:1. 培养学生对图像处理和模式识别领域的兴趣,激发其探索精神;2. 增强学生的团队合作意识,提高沟通协作能力;3. 培养学生严谨的科学态度和良好的学术道德。
本课程针对高年级学生,结合学科特点和教学要求,旨在帮助学生掌握车牌识别技术的基本原理和方法,提高实际操作能力。
通过课程学习,使学生能够独立完成车牌识别系统的设计和实现,培养其解决实际问题的能力,同时注重培养学生的情感态度和价值观,使其成为具有创新精神和实践能力的高素质人才。
二、教学内容1. 图像预处理:介绍图像滤波、灰度化、二值化等基本图像处理技术,分析其在车牌识别中的作用;教材章节:第三章 图像预处理内容列举:3.1-3.4节2. 车牌定位:讲解基于形态学的车牌定位方法,包括腐蚀、膨胀、开运算和闭运算等;教材章节:第四章 车牌定位内容列举:4.1-4.4节3. 车牌字符分割:介绍投影法、连通域分析等字符分割方法,分析各种方法的优缺点;教材章节:第五章 车牌字符分割内容列举:5.1-5.3节4. 车牌字符识别:讲解模板匹配、深度学习等字符识别方法,并进行实际操作演示;教材章节:第六章 车牌字符识别内容列举:6.1-6.4节5. 车牌识别系统设计:结合前面的教学内容,指导学生完成一个简单的车牌识别系统设计;教材章节:第七章 车牌识别系统设计内容列举:7.1-7.3节本章节教学内容根据课程目标进行科学性和系统性地组织,涵盖车牌识别技术的主要环节。
matlab车牌提取课程设计一、课程目标知识目标:1. 学生能够理解车牌提取的基本概念和原理,掌握运用MATLAB进行图像处理的基本方法。
2. 学生能够掌握车牌定位、字符分割和识别的基本步骤,了解各种算法在车牌提取中的应用。
3. 学生了解我国车牌规格及特点,能够根据实际需求选择合适的图像处理技术进行车牌提取。
技能目标:1. 学生能够运用MATLAB软件进行车牌图像的读取、预处理、车牌定位和字符分割等操作。
2. 学生能够熟练使用MATLAB内置函数和算法进行车牌字符的识别,并能够针对不同场景进行参数调整和优化。
3. 学生能够对车牌提取结果进行分析和评价,提出改进措施,提高车牌提取的准确率和效率。
情感态度价值观目标:1. 学生通过本课程的学习,培养对图像处理技术的兴趣和热情,提高对计算机视觉领域的认识。
2. 学生在课程实践中,学会与他人合作、沟通,培养团队精神和解决问题的能力。
3. 学生能够认识到车牌提取技术在实际生活中的应用价值,激发学习动力,提高社会责任感。
本课程针对高年级学生,结合图像处理和计算机视觉领域的知识,以MATLAB 为工具,设计具有实用性和挑战性的车牌提取课程。
通过本课程的学习,学生将掌握图像处理的基本技能,提高解决实际问题的能力,培养对图像处理领域的兴趣和热情。
同时,课程目标具体、可衡量,为教师教学设计和评估提供了明确的方向。
二、教学内容1. 车牌提取基本概念与原理- 图像处理基础- 车牌规格与特点- 车牌提取流程2. MATLAB图像处理基础- MATLAB图像类型和数据结构- 图像读取、显示和保存- 图像预处理技术(滤波、边缘检测等)3. 车牌定位- 车牌区域检测方法(颜色分割、形态学处理等)- 车牌区域定位算法(SVM、模板匹配等)4. 字符分割- 车牌字符分割方法(投影分割、连通区域分析等)- 字符分割算法优化5. 车牌字符识别- 字符特征提取(HOG、LBP等)- 机器学习分类算法(SVM、神经网络等)- 字符识别优化策略6. 车牌提取系统评估与优化- 评价指标(准确率、召回率等)- 系统性能优化(参数调整、模型选择等)本教学内容根据课程目标制定,涵盖车牌提取的基本概念、原理和实际应用。
matlab车牌识别程序课程设计一、课程目标知识目标:1. 掌握MATLAB编程基础,了解其在图像处理领域的应用;2. 学习车牌识别的基本原理,了解车牌定位、字符分割和识别的技术要点;3. 了解我国车牌的格式及特点,为编写车牌识别程序打下基础。
技能目标:1. 能够运用MATLAB编写简单的车牌识别程序,实现车牌的自动识别;2. 学会使用MATLAB内置函数进行图像处理,如边缘检测、形态学运算等;3. 培养学生动手实践能力,提高编程技巧和解决问题的能力。
情感态度价值观目标:1. 培养学生对计算机视觉领域的兴趣,激发学习热情;2. 培养学生的团队协作精神,学会在编程过程中相互交流、共同进步;3. 培养学生严谨的科学态度,注重实验数据和分析,提高解决问题的能力。
本课程针对高中年级学生,结合学科特点和教学要求,设计了一套实用性强的MATLAB车牌识别程序课程。
课程旨在帮助学生掌握MATLAB编程基础,学会运用MATLAB进行图像处理,并在此基础上实现车牌识别。
通过本课程的学习,学生将能够独立编写简单的车牌识别程序,提高编程能力和解决问题的能力。
同时,课程注重培养学生的团队协作精神和科学态度,为将来的学习和工作打下坚实基础。
二、教学内容1. MATLAB编程基础:- 数据类型、变量与运算符;- 控制流程:条件语句、循环语句;- 函数编写与调用;- 数组、矩阵及其操作。
2. 图像处理基础:- 图像读取、显示与保存;- 图像类型转换与色彩空间;- 图像滤波与增强;- 边缘检测、形态学运算。
3. 车牌识别技术:- 车牌定位技术:颜色分割、边缘检测、轮廓提取;- 车牌字符分割:投影法、连通区域法;- 车牌字符识别:模板匹配、神经网络、支持向量机。
4. 实践项目:- 使用MATLAB实现车牌定位;- 使用MATLAB实现车牌字符分割;- 使用MATLAB实现车牌字符识别;- 整合以上技术,编写完整的车牌识别程序。
教学内容根据课程目标进行选择和组织,保证科学性和系统性。
课程设计报告课设题目:matlab车牌识别系统学院:医药信息工程学院姓名: ------学号:---------------指导教师:向征目录一.课程设计任务 (3)二.课程设计原理及设计方案 (3)1.系统简述 (3)2.图像预处理: (4)3.车牌定位 (4)4.字符分割 (5)5.字符识别 (6)三.课程设计的步骤和结果 (6)1.车牌定位 (6)2.字符分割 (10)3.字符识别 (12)四.设计GUI界面 (16)五.课程设计总结和体会 (17)六.参考文献 (17)七.设计总代码 (18)1.chepai_main.m (18)2.chepaidingwei.m (18)3.fenge.m (19)4.rando_bianhuan.m (21)5.zifushibie2.m (21)一.课程设计任务在交通管理过程中,通常采用视频监控方式对闯红灯和超速等违章车辆进行监督。
对违章车辆,需要自动检测车牌信息,提取车牌号码,以便查找车主信息和监督管理。
国内常用的一般车牌通常是是蓝底白字,长宽比3:1。
1、对车牌图像进行预处理,然后进行车牌定位;2、进行字符分割;2、对车牌中的数字、字母和汉字进行提取和识别;3、要求自行设计方案、编写代码实现上述功能,并设计车牌识别的软件界面。
二.课程设计原理及设计方案1.系统简述一个完整的车牌识别系统闭应包括车辆检测、图像采集、图像预处理、车牌定位、字符分割、字符识别等单元。
当车辆到达触发图像采集单元时,系统采集当前的视频图像。
车辆识别单元对图像进行处理,定位出牌照位置,再将车牌中的字符分割出来进行识别,然后组成车牌号码输出。
车牌识别系统原理如图l 所示。
图1 车牌识别系统原理图1)图像预处理:对汽车图像进行图像转换、图像增强等。
2)车牌定位:从预处理后的汽车图像中分割出车牌图像。
即在一幅车辆图像中找到车牌所在的位置。
3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像4)字符识别:对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。
xxxx大学数字图像处理本科生课程论文论文题目:___车牌识别方法研究______完成时间:___2016年6月1日_______所在专业:___软件工程______________所在年级:___大三年级______________基于MATLAB的车牌识别方法研究xxx级软件专业1班 xxx xx摘要:汽车车牌的识别是智能交通管理的重要组成部分之一。
本文主要介绍车牌区域提取、字符切割、字符识别。
车牌区域提取主要包括图像灰度图转化、图像边缘检测、灰度图腐蚀、图像平滑处理、边界值计算。
字符切割主要包括图像去噪处理、图像膨胀和腐蚀处理。
字符识别主要包括图像膨胀和腐蚀处理、字符归一化。
关键词:MATLAB、车牌区域提取、字符识别、字符切割1 研究背景随着经济社会的迅猛发展,人们的生活水平的提高,机动车辆的数量也越来越多。
为了提高车辆的管理效率,缓解公路上的交通压力,我们必须找到一种解决方案。
而作为汽车“身份证”的汽车车牌,是在公众场合能够唯一确定汽车身份的凭证。
我们可以以此为依据,设计一种车牌识别系统监控各个车辆的情况。
车牌识别的难点:① 我国汽车牌照自身特征的复杂性1) 汉字、字母、数字混合。
我国的车牌不单单有英文字母和阿拉伯数字,还有汉字。
2) 颜色种类多。
国外的车牌颜色种类相对于国内较少一些,我国的车牌颜色种类较多。
3) 人为因素复杂。
由于环境、道路或者人为因素造成车牌有严重污渍、车牌模糊不清或者车牌偏斜角度很大的车辆,在我国都可以上路行驶。
4) 车牌格式多。
我国的车牌格式很多,包括:民用车牌、公安警察车牌、武警车牌、军车车牌、外交车牌、特种车牌、消防车牌等。
② 外部环境影响1) 外部光照条件各不相同,白天和晚上的光照各不相同。
光照对采集的图像质量产生很大的影响。
不同的光照角度对车牌光照的不均匀影响也很大。
不同的气候条件、背景光照环境、车牌反光程度都决定了车牌的亮度特征。
2) 外界背景的复杂程度也影响车牌的定位准确率。
精品文档 可编辑 Matlab程序设计任务书
分院(系) 信息科学与工程 专业 学生姓名 学号 设计题目 车牌识别系统设计
内容及要求: 车牌定位系统的目的在于正确获取整个图像中车牌的区域, 并识别出车牌号。通过设计实现车牌识别系统,能够提高学生 分析问题和解决问题的能力,还能培养一定的科研能力。
1.牌照识别系统应包括车辆检测、图像采集、牌照识别等几 部分。
2.当车辆检测部分检测到车辆到达时,触发图像采集单元,采 集当前的视频图像。
3.牌照识别单元对图像进行处理,定位出牌照位置,再将牌 照中的字符分割出来进行识别,然后组成牌照号码输出。
进度安排: 19周:Matlab环境熟悉与基础知识学习 19周:课程设计选题与题目分析 20周:程序设计编程实现 精品文档 可编辑 20周:课程设计验收与答辩
指导教师(签字): 年 月 日 学院院长(签字):
年 月 日 目 录
一.课程设计目的……………………………………………3 二.设计原理…………………………………………………3 三.详细设计步骤……………………………………………3 四. 设计结果及分析…………………………………………18 五. 总结………………………………………………………19 六. 设计体会…………………………………………………20 七. 参考文献…………………………………………………21 精品文档
可编辑 一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。
二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。
三、详细设计步骤: 精品文档
可编辑 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。 牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。 流程图: 导入原始图像 图像预处理增强效果图像 边缘提取 车牌定位 对图像开闭运算 精品文档 可编辑 (2)牌照字符分割 : 完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。
(3)牌照字符识别 : 字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。基于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小,然后与所有的模板进行匹配,最后选最佳匹配作为结果。基于人工神经元网络的算法有两种:一种是先对待识别字符进行特征提取,然后用所获得特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。实际应用中,牌照识别系统的识别率与牌照质量和拍摄质量密切相关。牌照质量会受到各种因素的影响,如生锈、污损、油漆剥落、字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌照、假牌照等等;实际拍摄过程也会受到环境亮度、拍摄亮度、车辆速度等等因素的影响。这些影响因素不同程度上降低了牌照识别的识别率,也正是牌照识别系统的困难和挑战所在。为了提高识别率,除了不断的完善识别算法,还应该想办法克服各种光照条件,使采集到的图像最利于识别。 2. 各模块的实现: 2.1输入待处理的原始图像: clear ;
按左右宽度切割出字符 计算水平投影进行车牌水平校正 去掉车牌的框架 分析垂直投影找到每个字符中心位置
切割出的字符送入库中 字符依次分析显示误差最小的图片名字 与数据库的图片相减 分析之差最小的图片是哪张 精品文档
可编辑 close all;
%Step1 获取图像 装入待处理彩色图像并显示原始图像 Scolor = imread('3.jpg');%imread函数读取图像文件
图2.1原始图像 2.2图像的灰度化: 彩色图像包含着大量的颜色信息,不但在存储上开销很大,而且在处理上也会降低系统的执行速度,因此在对图像进行识别等处理中经常将彩色图像转变为灰度图像,以加快处理速度。由彩色转换为灰度的过程叫做灰度化处理。选择的标准是经过灰度变换后,像素的动态范围增加,图像的对比度扩展,使图像变得更加清晰、细腻、容易识别。 %将彩色图像转换为黑白并显示 Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 figure,imshow(Sgray),title('原始黑白图像'); 精品文档
可编辑 图2.2原始黑白图像 2.3对原始图像进行开操作得到图像背景图像: s=strel('disk',13);%strei函数 Bgray=imopen(Sgray,s);%打开sgray s图像 figure,imshow(Bgray);title('背景图像');%输出背景图像
图2.3背景图像 2.4灰度图像与背景图像作减法,对图像进行增强处理: Egray=imsubtract(Sgray,Bgray);%两幅图相减 精品文档 可编辑 figure,imshow(Egray);title('增强黑白图像');%输出黑白图像
图2.4黑白图像 2.5取得最佳阈值,将图像二值化: 二值图像是指整幅图像画面内仅黑、白二值的图像。在实际的车牌处理系统中,进行图像二值变换的关键是要确定合适的阀值,使得字符与背景能够分割开来,二值变换的结果图像必须要具备良好的保形性,不丢掉有用的形状信息,不会产生额外的空缺等等。车牌识别系统要求处理的速度高、成本低、信息量大,采用二值图像进行处理,能大大地提高处理效率。阈值处理的操作过程是先由用户指定或通过算法生成一个阈值,如果图像中某中像素的灰度值小于该阈值,则将该像素的灰度值设置为0或255,否则灰度值设置为255或0。 fmax1=double(max(max(Egray)));%egray的最大值并输出双精度型 fmin1=double(min(min(Egray)));%egray的最小值并输出双精度型 level=(fmax1-(fmax1-fmin1)/3)/255;%获得最佳阈值 bw22=im2bw(Egray,level);%转换图像为二进制图像 bw2=double(bw22); figure,imshow(bw2);title('图像二值化');%得到二值图像 精品文档 可编辑 图2.5二值图像 2.6边缘检测: 两个具有不同灰度值的相邻区域之间总存在边缘,边缘就是灰度值不连续的结果,是图像分割、纹理特征提取和形状特征提取等图像分析的基础。为了对有意义的边缘点进行分类,与这个点相联系的灰度级必须比在这一点的背景上变换更有效,我们通过门限方法来决定一个值是否有效。所以,如果一个点的二维一阶导数比指定的门限大,我们就定义图像中的次点是一个边缘点,一组这样的依据事先定好的连接准则相连的边缘点就定义为一条边缘。经过一阶的导数的边缘检测,所求的一阶导数高于某个阈值,则确定该点为边缘点,这样会导致检测的边缘点太多。可以通过求梯度局部最大值对应的点,并认定为边缘点,去除非局部最大值,可以检测出精确的边缘。一阶导数的局部最大值对应二阶导数的零交叉点,这样通过找图像强度的二阶导数的零交叉点就能找到精确边缘点。 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界 figure,imshow(grd);title('图像边缘提取');%输出图像边缘 精品文档 可编辑 图2.6像边缘提取 2.7对得到图像作开操作进行滤波: 数学形态非线性滤波,可以用于抑制噪声,进行特征提取、边缘检测、图像分割等图像处理问题。腐蚀是一种消除边界点的过程,结果是使目标缩小,孔洞增大,因而可有效的消除孤立噪声点;膨胀是将与目标物体接触的所有背景点合并到物体中的过程,结果是使目标增大,孔洞缩小,可填补目标物体中的空洞,形成连通域。先腐蚀后膨胀的过程称为开运算,它具有消除细小物体,并在纤细处分离物体和平滑较大物体边界的作用;先膨胀后腐蚀的过程称为闭运算,具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。对图像做了开运算和闭运算,闭运算可以使图像的轮廓线更为光滑,它通常用来消掉狭窄的间断和长细的鸿沟,消除小的孔洞,并弥补轮廓线中的断裂。 bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的闭运算 figure,imshow(bg1);title('图像闭运算[5,19]');%输出闭运算的图像 bg3=imopen(bg1,strel('rectangle',[5,19]));%取矩形框的开运算 figure,imshow(bg3);title('图像开运算[5,19]');%输出开运算的图像 bg2=imopen(bg3,strel('rectangle',[19,1]));%取矩形框的开运算