matlab车牌识别课程设计报告(附源代码)

合集下载

数字图像处理车牌识别课程研发设计matlab实现附源代码

数字图像处理车牌识别课程研发设计matlab实现附源代码

精品实验项目字符识别预处理的设计与实现专业:电子信息工程姓名:高勇学号:2010021204指导老师:郑蕊蕊目录一、实验类型:设计性实验 (3)二、实验目的 (3)三、实验设备:扫描仪、安装有MATLAB软件的计算机 (3)四、实验内容及原理 (3)(1)字符图像的获取 (3)(2)字符图像预处理 (3)(3)字符图像分割 (3)(4)函数的作用 (4)五、实验步骤 (8)1.载入车牌图像: (8)2.将彩图转换为灰度图并绘制直方图: (9)3. 用roberts算子进行边缘检测: (10)4.图像实施腐蚀操作: (11)5.平滑图像 (11)6. 删除二值图像的小对象 (12)7.车牌定位 (13)8.字符分割与识别 (15)9.车牌识别: (21)六、思考题 (28)一、实验类型:设计性实验二、实验目的1. 掌握图像的获取、预处理和分割的原理及MATLAB实现方法。

2. 掌握使用扫描仪和计算机获取数字图像的方法,理解扫描仪的原理。

3. 自学一种字符图像的分割算法并用MA TLAB编程实现该算法。

三、实验设备:扫描仪、安装有MATLAB软件的计算机四、实验内容及原理(1)字符图像的获取用扫描仪获取图像是字符图像处理常用的数字化过程的方法之一。

以办公设备中常用的台式扫描仪为例,其主要性能指标有x、y方向的分辨率、色彩分辨率(色彩位数)、扫描幅面和接口方式等,这些指标都可以从扫描仪的说明手册中获得。

分辨率的单位是dpi(Dot Per Inch),意思是每英寸的像素点数。

扫描仪工作时,首先由可移动带状光源将光线照在欲输入的图稿上,并沿y方向扫描稿件,产生表示图像特征的反射光或透射光。

照射到原稿上的光线经反射后穿过一个很窄的缝隙,形成沿x方向的光带,经光学系统采集和过滤成RGB三色光带分别照射到RGB分量的CCD上,CCD将光信号转换为模拟电信号。

内部电路的A/D变换器将模拟电信号转变为数字电子信号输送给计算机。

最新车牌识别系统MATLAB源代码完整解析

最新车牌识别系统MATLAB源代码完整解析

clc; clear all; close all;[filename, pathname, filterindex] = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...'*.*','All Files' }, '选择待处理图像', ...'images\01.jpg');file = fullfile(pathname, filename);%文件路径和文件名创建合成完整文件名id = Get_Id(file);%得到file中的所有对象Img = imread(file);%根据路径和文件名读取图片到Img[Plate, bw, Loc] = Pre_Process(Img); % 车牌区域预处理result = Plate_Process(Plate, id); % 车牌区域二值化处理% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割bw = Segmation(result);words = Main_Process(bw); % 主流程处理Write_Mask(words, id); % 写出到模板库str = Pattern_Recognition(words); % 识别function id = Get_Id(file)% 获取图像id信息% 输入参数:% file——图像路径% 输出参数:% id——图像id信息info = imfinfo(file);FS = [422227 354169 293184 235413 214202 ...130938 490061 120297 98686 137193 ...80558 46208 69947 58110 62115 ...59072 52168 60457 53979 50223];id = find(FS == info.FileSize);if isempty(id)warndlg('未建立该图像模板库,可能运行出错!', '警告');id = 1;endfunction R = Cubic_Spline(P)% 三次样条插值% 输入参数:% P——节点矩阵% 输出参数:% R——样条节点矩阵% 计算相邻插值点之间的弦长chordlen = sqrt(sum(diff(P, [], 1).^2,2));% 将弦长参数归一化到[0,1]上chordlen = chordlen/sum(chordlen);% 计算每个插值节点处的累加弦长,作为给点处的参数cumarc = [0; cumsum(chordlen)];x = cumarc;N = size(P, 1);R = [];% 以下部分为一元三次样条插值的程序,对于空间三维数据,以同样的累加% 弦长作为参数,对x,y,z分量做三次一元样条插值得到的结果便是对三维数据% 做三次样条插值for k = 1 : size(P, 2)y = P(:, k);m = zeros(1, N);M = zeros(1, N);n = m;d = m;A = eye(N);A = 2*A;m(1) = 1;n(N) = 1;m(N) = 1;n(1) = 1;for i = 2:N-1m(i) = (x(i+1)-x(i))/(x(i+1)-x(i-1));n(i) = 1 - m(i);d(i) = 6*((y(i+1) - y(i))/(x(i+1) - x(i)) - (y(i) - y(i-1))/(x(i) - x(i-1)))/(x(i+1)-x(i-1));endfor j = 1 : N-1A(j, j+1) = m(j);A(j+1, j) = n(j+1);endp = A(2:N-1, 2:N-1);q = d(2:N-1);Q = inv(p)*q';M = zeros(1,N);M(1,1) = 0;M(1,N) = 0;M(1,2:N-1)= Q;S = [];temp = [];for i = 1:N-1% 对每一个分量计算出来的插值曲线进行采样,以便将其画出。

matlab车牌识别课程设计报告

matlab车牌识别课程设计报告

Matlab程序设计任务书目录一.课程设计目的 (3)二.设计原理 (3)三.详细设计步骤 (3)四. 设计结果及分析 (18)五. 总结 (19)六. 设计体会 (20)七. 参考文献 (21)一、课程设计目的车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。

通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。

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

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

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

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

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

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

三、详细设计步骤:v1.0 可编辑可修改1. 提出总体设计方案:牌照号码、颜色识别为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来;c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。

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

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

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

流程图:(2)牌照字符分割 :导入原始图像图像预处理增强效果图像边缘提取车牌定位 对图像开闭运算完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。

基于某MATLAB地车牌识别课程设计

基于某MATLAB地车牌识别课程设计

MATLAB课程设计报告书课题名称基于MATLAB的车牌识别课程设计姓名学号学院专业指导教师2016年6月21日基于MATLAB的车牌识别课程设计目录一.课程设计目的……………………………………………二.设计原理…………………………………………………三.详细设计步骤……………………………………………四. 设计结果及分析…………………………………………五. 总结………………………………………………………六. 设计体会…………………………………………………七. 参考文献…………………………………………………一、课程设计目的车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。

通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。

二、设计原理:牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照、牌照颜色自动识别的模式识别技术。

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

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

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

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

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

三、详细设计步骤:1. 提出总体设计方案:牌照、颜色识别为了进行牌照识别,需要以下几个基本的步骤:a.牌照定位,定位图片中的牌照位置;b.牌照字符分割,把牌照中的字符分割出来;c.牌照字符识别,把分割好的字符进行识别,最终组成牌照。

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

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

车牌识别-MATLAB代码

车牌识别-MATLAB代码

clear ;close all;%Step1 获取图像装入待处理彩色图像并显示原始图像Scolor = imread('C:\Users\lenovo\Desktop\程序\chepai\l2.jpg'); %将彩色图像转换为黑白并显示Sgray = rgb2gray(Scolor);figure,imshow(Scolor),title('原始彩色图像');figure,imshow(Sgray),title('原始灰度图像');%bw3=medfilt2(Sgray,[5 5]);%figure,imshow(bw3);title('图像中值滤波');%bw4=imfilter(bw3,fspecial('laplacian'));%figure,imshow(bw4);title('图像中值滤波');%Egray=imsubtract(bw3,bw4);%figure,imshow(Egray);%Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',10);Bgray=imopen(Sgray,s);figure,imshow(Bgray);title('背景图像');%用原始图像与背景图像作减法,增强图像Egray=imsubtract(Sgray,Bgray);figure,imshow(Egray);title('增强黑白图像');%Step3 取得最佳阈值,将图像二值化%fmax1=double(max(max(Egray)));%fmin1=double(min(min(Egray)));%level=(fmax1-(fmax1-fmin1)/3)/255;%level=graythresh(Egray);%%bw3=filter2(fspecial('average',3),Egray);%%Egray=medfilt2(Egray,[3 3]);%figure,imshow(Egray);title('图像中值滤波');bw2=im2bw(Egray,level);figure,imshow(bw2);title('图像二值化');%bw4=im2bw(bw3,level);%figure,imshow(bw4);title('图像二值化');%Step4 对得到二值图像作开闭操作进行滤波grd=edge(bw2,'canny');figure,imshow(grd);title('图像边缘提取');%bg1=imclose(grd,strel('rectangle',[5,19]));%figure,imshow(bg1);title('图像闭运算[5,19]');bg2=bwareaopen(bg1,2000);figure,imshow(bg2);title('小对象');bg2=imclose(bg2,strel('rectangle',[20,50]));%bg3=imclose(bg2,strel('rectangle',[20,50]));bg2=imopen(bg2,strel('rectangle',[5,20]));figure,imshow(bg2);title('图像开运算[5,19]');bg2=imopen(bg2,strel('rectangle',[19,1]));figure,imshow(bg2);title('图像开运算[19,1]');%Step5 对二值图像进行区域提取,并计算区域特征参数。

(完整word版)基于Matlab的车牌识别实现源码

(完整word版)基于Matlab的车牌识别实现源码

(完整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车牌识别系统 精品

课程设计--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)字符识别:对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。

matlab车牌识别课程设计

matlab车牌识别课程设计

matlab车牌识别课程设计一、教学目标本课程的教学目标是使学生掌握Matlab车牌识别的基本原理和方法,具备运用Matlab进行车牌识别项目开发的能力。

具体分解为以下三个维度:1.知识目标:•理解车牌识别的基本概念和流程。

•掌握Matlab的基本语法和操作。

•学习并应用图像处理和机器学习算法进行车牌识别。

2.技能目标:•能够使用Matlab进行基本的编程和数据分析。

•掌握车牌检测、分割和识别的技术。

•具备解决实际车牌识别问题的能力。

3.情感态度价值观目标:•培养学生的创新意识和团队合作精神。

•增强学生对智能交通系统的认识和关注。

•提高学生对编程和的兴趣和热情。

二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.Matlab基础:介绍Matlab的基本语法、数据类型和编程环境,使学生能够熟练使用Matlab进行编程和数据分析。

2.图像处理基础:讲解图像处理的基本概念和常用算法,包括图像滤波、边缘检测、形态学处理等,为学生进行车牌识别提供必要的理论支持。

3.车牌检测与分割:学习并应用车牌检测和分割的算法,包括边缘检测、轮廓提取、区域增长等,使学生能够准确地定位和提取车牌区域。

4.车牌识别算法:介绍并实现车牌识别的算法,包括字符分割、特征提取、分类器设计等,培养学生运用机器学习算法解决实际问题的能力。

5.项目实践:通过实际车牌识别项目的开发,使学生将所学知识和技能应用于实践,提高学生的综合运用能力和创新思维。

三、教学方法为了达到课程目标,将采用以下教学方法:1.讲授法:通过讲解和演示,传授Matlab基础知识和图像处理算法,帮助学生建立系统的理论框架。

2.案例分析法:分析并讨论实际车牌识别案例,引导学生运用所学知识解决实际问题,提高学生的综合运用能力。

3.实验法:通过实验操作,让学生动手实践车牌检测和识别的算法,培养学生的实际操作能力和创新思维。

4.小组讨论法:学生进行小组讨论和合作,促进学生之间的交流和团队合作精神,提高学生的沟通能力和团队协作能力。

MATLAB车牌识别系统课程设计

MATLAB车牌识别系统课程设计

MATLAB车牌识别系统课程设计一、课程目标知识目标:1. 学生能理解MATLAB编程环境,掌握基本的数据类型、运算符和流程控制语句。

2. 学生能掌握车牌图像的预处理方法,包括图像灰度化、二值化、滤波去噪等。

3. 学生能理解并实现车牌定位和分割的算法,提取车牌字符。

4. 学生能掌握车牌字符识别的方法,如模板匹配、神经网络等。

技能目标:1. 学生能够运用MATLAB编写程序,对车牌图像进行处理和分析。

2. 学生能够独立设计并实现一个简单的车牌识别系统。

3. 学生能够通过实践操作,提高问题解决能力和团队协作能力。

情感态度价值观目标:1. 学生培养对图像处理和模式识别领域的兴趣,激发学习热情。

2. 学生通过实践,认识到编程在解决实际问题中的重要性,增强自信心。

3. 学生在团队协作中,学会尊重他人,培养良好的沟通能力和合作精神。

课程性质:本课程为选修课,旨在让学生在实际项目中运用所学的编程知识,提高解决实际问题的能力。

学生特点:学生为高中年级,已具备一定的编程基础,对新鲜事物充满好奇心,但实践经验不足。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,引导学生通过自主学习和团队协作,完成课程目标。

将目标分解为具体的学习成果,以便后续的教学设计和评估。

二、教学内容1. MATLAB编程基础- 数据类型与运算符- 程序流程控制- 函数与脚本- 图像处理基本操作2. 车牌图像预处理- 图像读取与显示- 灰度化与二值化- 滤波去噪- 边缘检测与轮廓提取3. 车牌定位与分割- 车牌区域提取- 车牌字符分割- 车牌倾斜校正4. 车牌字符识别- 模板匹配法- 神经网络法- 支持向量机法5. 车牌识别系统实现- 系统框架设计- 模块化编程实现- 系统测试与优化教学内容依据课程目标,结合教材章节进行安排。

在教学过程中,注重理论与实践相结合,引导学生逐步掌握MATLAB编程及图像处理方法。

教学内容分为五个部分,每部分对应相应的知识点,确保学生能够系统地学习车牌识别系统的设计原理和实现方法。

基于Matlab的车牌识别课程设计报告

基于Matlab的车牌识别课程设计报告

导入原始 图像
图像预处理 增强效果图
进行边缘 提取
车牌具体 位置定位
对车牌进 行处理
输出 结果
对分割的字 符进行识别
字符特征 提取
对字符进 行归一化
对字符进行 分割
图1 牌照识别系统原理图
该系统是计算机 图像处理与字符识别技术在 智能化交通管理系统中的应用 ,它 主 要 由 牌 照 图 像 的 采 集 和 预 处 理 、牌 照 区 域 的 定 位 和 提 取 、牌 照 字 符 的 分 割 和 识 别 等几个部分组成,如图1 所示。其基本工作过程如下:
对比以上几幅图片,图 12 的边缘已经模糊掉了。图 11 中包含的噪声太多, 图 13 未经滤波直接提取出的边缘图像最清晰,所包含的有用信息最多。
(二)、牌照的定位和分割
牌照的定位和分 割是牌照识别系统的关键技 术之一,其主要目的是在经图象预 处 理 后 的 原 始 灰 度 图 象 中 确 定 牌 照 的 具 体 位 置 ,并 将 包 含 牌 照 字 符 的 一 块 子 图 象 从 整个图象中分割出来,供字符识别子系 统识别之用,分割的准确与否直接关系到整 个 牌 照 字 符 识 别 系 统 的 识 别 率 。根 据 其 灰 度 值 与 周 边 区 域 有 明 显 的 不 同 ,在 其 边 缘 形成了灰度突变的边界,这样就便于通过边缘检测来对图象进行分割。
牌 区 域 , 确 定 车 牌 底 色 蓝 色 RGB对 应 的 各 自 灰 度 范 围 , 然 后 行 方 向 统 计 在 此 颜 色 范
围 内 的 像 素 点 数 量 ,设 定 合 理 的 阈 值 ,确 定 车 牌 在 行 方 向 的 合 理 区 域 。然 后 ,在 分
割出的行区域内,统计列方向蓝色像素点的数量,最终确定完整的车牌区域。

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

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

-基于matlab的车牌识别系统的设计(附程序+详解注释)焦作大学毕业设计(论文)说明书作者:学号:学院(系):信息工程学院专业:通信技术题目:基于matlab的车牌识别系统的设计主题:指导教师:职称:讲师2012年12月ABSTRACTVehicle license plate recognition system is one important of the modern intelligent traffic management. License plate recognition system to make more intelligent vehicle management, digital, Effective traffic management to enhance the convenience and effectiveness. License plate recognition system includes image acquisition, image preprocessing, license plate localization, character segmentation, character recognition and other five core parts. In this paper, preprocessing, license plate localization, character segmentation method for the realization of three modules.This is the image preprocessing module and the use of the image grayscale Roberts edge detection operator steps. License plate location and segmentation using mathematical morphology method is used to determine the license plate location,Re-use license plate color segmentation method of color information to complete the license plate area segmentation. Character segmentation approach is based on the license plate after the binary part of the vertical projection, Then scan in the vertical projection, thus completing the character segmentation. This article is described for the core part and use the MATLAB software environment, the simulation experiments for character segmentation.Keywords: MATLAB software, image preprocessing, license plate localization, character segmentation .目录1. 绪论 (1)1.1 本课题的研究背景 (1)1.2 本课题的研究目的及意义 (2)1.3 国内外发展状况 (3)1.4 主要应用领域 (5)1.5 设计原理 (6)2. MATLAB简介 (7)2.1 MATLAB发展历史 (7)2.2 MATLAB的语言特点 (7)3.工作流程 (9)3.1 系统框架结构和工作流程 (9)4.各模块的实现 (11)4.1设计方案 (11)4.2图像预处理 (11)4.2.1图像灰度化 (11)4.2.2图像的边缘检测 (12)4.3车牌定位和分割 (14)4.3.1车牌的定位 (15)4.3.2车牌的分割 (16)4.3.3对定位后的彩色车牌的进一步处理 (17)4.4字符的分割和归一化处理 (17)4.4.1字符的分割 (18)4.4.2字符的归一化处理 (19)4.5 字符的识别 (19)5.实验结果和分析 (22)6.实验总结 (24)致谢 (25)参考文献 (26)程序附录 (27)第一章绪论1.1 本课题的研究背景现代社会已进入信息时代,随着计算机技术、通信技术和计算机网络技术的发展,自动化信息处理能力和水平不断提高,作为现代社会主要交通工具之一的汽车在人们的生产生活的各个领域得到大量使用,对他的信息进行自动采集和管理具有十分重要的意义,成为信息处理技术的一项重要研究课题。

车牌识别matlab课程设计

车牌识别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的车牌识别系统的设计(附程序+详解注释)

毕业设计论文基于matlab的车牌识别系统的设计(附程序+详解注释)
车牌字符识别是在车牌准确定位的基础上,对车牌上的汉字、字母、数字进行有效确认的过程,其中汉字识别是一个难点,许多国外的LPR系统也往往是因为汉字难以识别而无法打入中国市场,因而探寻好的方法解决字符的识别也是至关重要的。目前己有的方法很多,但其效果与实际的要求相差很远,难以适应现代化交通系统高速度、快节奏的要求。因而对字符识别的进一步研究也同样具有紧迫性和必要性。
车牌号识别系统是基于图像处理技术的基础进行研究的。本课题图像处理分为以下几方面:
1.图像数字化
其目的是将模拟形式的图像通过数字化设备变为数字计算机可用的离散的图像数据。
2.图像变换
为了达到某种目的而对图像使用一种数学技巧,经过变换后的图像更为方便、容易地处理和操作。
3.图像增强
图像增强的主要目标是改善图像的质量。采用某些处理技术来突出图像中的某些信息,削弱或消除某些无关信息,从而有目的地强调图像的整体或局部特征,让观察者能看到更加直接、清晰的分析和处理图像。直方图修正、灰度变换、强化图像轮廓等都是常用的手段。
车牌识别系统是一项科技含量很高的多种技术结合的产品,主要有计算机视觉、数字图像处理、数字视频处理、模式识别等技术组成。也是智能交通系统的核心技术,产生于60年代。在80年代,由于城市交通问题日益严重,美国和欧洲许多国家投入了大量的人力和物力,建立了自动化高速公路网,安装了摄像、雷达探测系统和光纤网络,简历智能交通系统。在美国、欧洲、日本等发达国家的带动下,世界各国也开始简历智能交通系统。由于公路车流量日益增大、道路交通日益拥挤,车辆管理相对越来越困难,因此各个发达国家和发展中国家都在积极建设适应未来交通运输需求的智能交通系统。
焦作大学
毕业设计(论文)说明书
作者:学号:
学院(系):信息工程学院

matlab车牌识别程序课程设计

matlab车牌识别程序课程设计

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实现车牌识别系统

实验报告用MATLAB实现车牌识别系统

图像处置大作业实验报告--用MATLAB实现车牌识别系统作者东南大学电子系李浩翔 06006435指导教师张雄实验日期 2020-1-10索引:1.2.3.4.5.6.1.2.1.2.实验目的利用MATLAB对包括车牌的图片进行处置,利用算法识别出车牌所在的区域,并识别其数字及字母,最后在屏幕上输出所识别出的车牌号。

实验原理1.将拍照下的彩色图像转换为灰度图,以后用中值滤波对灰度图像进行预处置,从而减少干扰信息。

2.利用sobel算子识别出图像的边缘,并转化为二值化图像。

并对二值化以后的图像进行卷积,增强边缘的轮廓。

3.用膨胀-再侵蚀的方式别离作用于图像的横轴与纵轴,将小块的联通区域连接起来,使车牌的形状加倍清楚,为下一步的识别做好预备。

4.利用车牌长宽比的特性对各个联通区域进行判定,识别出车牌所在区域,并截取。

5.对截掏出的车牌区域进行进一步的处置,分割出各个字符。

6.对分割出的字符进行特点判定,从而识别出具体的车牌号。

实验步骤1.预处置A. 将拍照下的彩色图像转换为灰度图,便于进行接下来的算法处置。

图1 拍摄下的图片图2 转换的灰度图B.对灰度图进行中值滤波,减少干扰点对二值化运算结果的阻碍。

im_gray=medfilt2(im_gray,[3 3]);图3 进行中值滤波后的灰度图C.将中值滤波后的灰度图用设定门限灰度的方式(取门限值为转化为二值化图像,在后继的车牌区域截取运算中作为源图像利用。

Image = im2bw(im_gray, ;图4 使用设定灰度门限的方法获得的二值化图像2.边缘识别A.利用sobel算子识别出图3中的边缘区域,并将其转换为二值化图像。

在转换后的二值化图像中,边缘区域被作为白点标出,而非边缘区域被黑色区域覆盖。

BW = edge(im_gray,'sobel');图5 识别出的边缘区域B.利用卷积的方式,对图5的边缘区域进行增强,为下一步的运算做好预备。

matlab车牌识别课实验报告计报告(附源代码)

matlab车牌识别课实验报告计报告(附源代码)

目录一.课程设计目的 (3)二.设计原理 (3)三.详细设计步骤 (3)四. 设计结果及分析 (18)五. 总结 (19)六. 设计体会 (20)七. 参考文献 (21)一、课程设计目的车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。

通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。

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

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

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

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

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

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

三、详细设计步骤:1. 提出总体设计方案:牌照号码、颜色识别为了进行牌照识别,需要以下几个基本的步骤:a.牌照定位,定位图片中的牌照位置;b.牌照字符分割,把牌照中的字符分割出来;c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。

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

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

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

流程图:完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。

字符分割一般采用垂直投影法。

课程设计--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)图像预处理:对汽车图像进行图像转换、图像增强等。

2)车牌定位:从预处理后的汽车图像中分割出车牌图像。

即在一幅车辆图像中找到车牌所在的位置。

3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像4)字符识别:对分割出来的字符进行预处理(二值化、归一化),然后分析提取,对分割出的字符图像进行识别给出文本形式的车牌号码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab程序设计任务书目录一.课程设计目的 (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]));%取矩形框的开运算figure,imshow(bg2);title('图像开运算[19,1]');%输出开运算的图像图2.7.1闭运算的图像图2.7.2开运算的图像图2.7.3开运算的图像2.8对二值图像进行区域提取,并计算区域特征参数。

进行区域特征参数比较,提取车牌区域:a.对图像每个区域进行标记,然后计算每个区域的图像特征参数:区域中心位置、最小包含矩形、面积。

[L,num] = bwlabel(bg2,8);%标注二进制图像中已连接的部分Feastats = imfeature(L,'basic');%计算图像区域的特征尺寸Area=[Feastats.Area];%区域面积BoundingBox=[Feastats.BoundingBox];%[x y width height]车牌的框架大小RGB = label2rgb(L, 'spring', 'k', 'shuffle'); %标志图像向RGB图像转换figure,imshow(RGB);title('图像彩色标记');%输出框架的彩色图像图2.8.1彩色图像b. 计算出包含所标记的区域的最小宽和高,并根据先验知识,比较谁的宽高比更接近实际车牌宽高比,将更接近的提取并显示出来。

计算矩形的宽度计算矩形的高度框架的宽度和高度的范围车牌的开始列车牌的开始行计算车牌长宽比获取车牌二值子程序流程图图2.8.2灰度子图和二值子图2.9对水平投影进行峰谷分析:对水平投影进行峰谷分析,计算出车牌上边框、车牌字符投影、车牌下边框的波形峰上升点、峰下降点、峰宽、谷宽、峰间距离、峰中心位置参数。

histcol1=sum(sbw1); %计算垂直投影histrow=sum(sbw1'); %计算水平投影figure,subplot(2,1,1),bar(histcol1);title('垂直投影(含边框)');%输出垂直投影subplot(2,1,2),bar(histrow); title('水平投影(含边框)');%输出水平投影图2.9.1垂直投影和水平投影figure,subplot(2,1,1),bar(histrow); title('水平投影(含边框)');%输出水平投影subplot(2,1,2),imshow(sbw1);title('车牌二值子图');%输出二值图对水平投影进行峰谷分析:求水平投影的平均值求水平投影的最小值取阈值计算谷宽度计算峰距离计算下降点找到峰中心位置图2.9.2水平投影和二值图程序流程图2.10计算车牌旋转角度:a.车牌倾斜的原因导致投影效果峰股谷不明显,在这里需要做车牌矫正处理。

相关文档
最新文档