车牌识别的matlab程序--(详细注释,并有使用注意点)

附录

车牌识别程序

clear ;

close all;

%Step1 获取图像装入待处理彩色图像并显示原始图像

Scolor = imread('3.jpg');%imread函数读取图像文件

%将彩色图像转换为黑白并显示

Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图

figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图figure,imshow(Sgray),title('原始黑白图像');

%Step2 图像预处理对Sgray原始黑白图像进行开操作得到图像背景

s=strel('disk',13);%strel函数

Bgray=imopen(Sgray,s);%打开sgray s图像

figure,imshow(Bgray);title('背景图像');%输出背景图像

%用原始图像与背景图像作减法,增强图像

Egray=imsubtract(Sgray,Bgray);%两幅图相减

figure,imshow(Egray);title('增强黑白图像');%输出黑白图像

%Step3 取得最佳阈值,将图像二值化

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);

%Step4 对得到二值图像作开闭操作进行滤波

figure,imshow(bw2);title('图像二值化');%得到二值图像

grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界

figure,imshow(grd);title('图像边缘提取');%输出图像边缘

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]');%输出开运算的图像

%Step5 对二值图像进行区域提取,并计算区域特征参数。进行区域特征参数比较,提取车牌区域

[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('图像彩色标记');%输出框架的彩色图像

lx=0;

for l=1:num

width=BoundingBox((l-1)*4+3);%框架宽度的计算

hight=BoundingBox((l-1)*4+4);%框架高度的计算

if (width>98 & width<160 &hight>25 &hight<50)%框架的宽度和高度的范围,这块儿不同的图片对应不同,可以用终端操作查看后更改!!!

lx=lx+1;

Getok(lx)=l;

end

end

for k= 1:lx

l=Getok(k);

startcol=BoundingBox((l-1)*4+1)-2;%开始列

startrow=BoundingBox((l-1)*4+2)-2;%开始行

width=BoundingBox((l-1)*4+3)+8;%车牌宽

hight=BoundingBox((l-1)*4+4)+2;%车牌高

rato=width/hight;%计算车牌长宽比

if rato>2 &rato<4%这块儿也需要根据具体情况更改一下,如3-6啊什么的

break;

end

end

sbw1=bw2(startrow:startrow+hight,startcol:startcol+width-1);%获取车牌二值子图

subcol1=Sgray(startrow:startrow+hight,startcol:startcol+width-1);%获取车牌灰度子图

figure,subplot(2,1,1),imshow(subcol1);title('车牌灰度子图');%输出灰度图

subplot(2,1,2),imshow(sbw1);title('车牌二值子图');%输出车牌的二值图

%Step6 计算车牌水平投影,并对水平投影进行峰谷分析

histcol1=sum(sbw1);%计算垂直投影

histrow=sum(sbw1');%计算水平投影

figure,subplot(2,1,1),bar(histcol1);title('垂直投影(含边框)');%输出垂直投影

subplot(2,1,2),bar(histrow);title('水平投影(含边框)');%输出水平投影

figure,subplot(2,1,1),bar(histrow);title('水平投影(含边框)');%输出水平投影

subplot(2,1,2),imshow(sbw1);title('车牌二值子图');%输出二值图

%对水平投影进行峰谷分析

meanrow=mean(histrow);%求水平投影的平均值

minrow=min(histrow);%求水平投影的最小值

levelrow=(meanrow+minrow)/2;%求水平投影的平均值

count1=0;

l=1;

for k=1:hight

ifhistrow(k)<=levelrow

count1=count1+1;

else

if count1>=1

markrow(l)=k;%上升点

markrow1(l)=count1;%谷宽度(下降点至下一个上升点)

l=l+1;

end

count1=0;

end

end

markrow2=diff(markrow);%峰距离(上升点至下一个上升点)

[m1,n1]=size(markrow2);

n1=n1+1;

markrow(l)=hight;

markrow1(l)=count1;

markrow2(n1)=markrow(l)-markrow(l-1);

l=0;

for k=1:n1

markrow3(k)=markrow(k+1)-markrow1(k+1);%下降点

markrow4(k)=markrow3(k)-markrow(k);%峰宽度(上升点至下降点)

markrow5(k)=markrow3(k)-double(uint16(markrow4(k)/2));%峰中心位置

end

%Step7 计算车牌旋转角度

%(1)在上升点至下降点找第一个为1的点

[m2,n2]=size(sbw1);%sbw1的图像大小

[m1,n1]=size(markrow4);%markrow4的大小

maxw=max(markrow4);%最大宽度为字符

if markrow4(1) ~= maxw%检测上边

ysite=1;

k1=1;

for l=1:n2

for k=1:markrow3(ysite)%从顶边至第一个峰下降点扫描if sbw1(k,l)==1

xdata(k1)=l;

ydata(k1)=k;

k1=k1+1;

break;

end

end

end

else %检测下边

ysite=n1;

if markrow4(n1) ==0

if markrow4(n1-1) ==maxw

ysite= 0;%无下边

else

ysite= n1-1;

end

end

ifysite ~=0

k1=1;

for l=1:n2

k=m2;

while k>=markrow(ysite) %从底边至最后一个峰的上升点扫描if sbw1(k,l)==1

xdata(k1)=l;

ydata(k1)=k;

k1=k1+1;

break;

end

k=k-1;

end

end

end

end

%(2)线性拟合,计算与x夹角

fresult = fit(xdata',ydata','poly1');%poly1 Y = p1*x+p2

p1=fresult.p1;

angle=atan(fresult.p1)*180/pi;%弧度换为度,360/2pi, pi=3.14

%(3)旋转车牌图象

subcol = imrotate(subcol1,angle,'bilinear','crop');%旋转车牌图象

sbw = imrotate(sbw1,angle,'bilinear','crop');%旋转图像

figure,subplot(2,1,1),imshow(subcol);title('车牌灰度子图');%输出车牌旋转后的灰度图像标题显示车牌灰度子图

subplot(2,1,2),imshow(sbw);title('');%输出车牌旋转后的灰度图像

title(['车牌旋转角: ',num2str(angle),'度'] ,'Color','r');%显示车牌的旋转角度

%Step8 旋转车牌后重新计算车牌水平投影,去掉车牌水平边框,获取字符高度

histcol1=sum(sbw);%计算垂直投影

histrow=sum(sbw');%计算水平投影

figure,subplot(2,1,1),bar(histcol1);title('垂直投影(旋转后)');

subplot(2,1,2),bar(histrow);title('水平投影(旋转后)');

figure,subplot(2,1,1),bar(histrow);title('水平投影(旋转后)');

subplot(2,1,2),imshow(sbw);title('车牌二值子图(旋转后)');

%去水平(上下)边框,获取字符高度

maxhight=max(markrow2);

findc=find(markrow2==maxhight);

rowtop=markrow(findc);

rowbot=markrow(findc+1)-markrow1(findc+1);

sbw2=sbw(rowtop:rowbot,:);%子图为(rowbot-rowtop+1)行

maxhight=rowbot-rowtop+1;%字符高度(rowbot-rowtop+1)

%Step9 计算车牌垂直投影,去掉车牌垂直边框,获取车牌及字符平均宽度

histcol=sum(sbw2);%计算垂直投影

figure,subplot(2,1,1),bar(histcol);title('垂直投影(去水平边框后)');%输出车牌的垂直投影图像

subplot(2,1,2),imshow(sbw2);%输出垂直投影图像

title(['车牌字符高度:',int2str(maxhight)],'Color','r');%输出车牌字符高

%对垂直投影进行峰谷分析

meancol=mean(histcol);%求垂直投影的平均值

mincol=min(histcol);%求垂直投影的平均值

levelcol=(meancol+mincol)/4;%求垂直投影的1/4

count1=0;

l=1;

for k=1:width

ifhistcol(k)<=levelcol

count1=count1+1;

else

if count1>=1

markcol(l)=k;%字符上升点

markcol1(l)=count1;%谷宽度(下降点至下一个上升点)

l=l+1;

end

count1=0;

end

end

markcol2=diff(markcol);%字符距离(上升点至下一个上升点)

[m1,n1]=size(markcol2);

n1=n1+1;

markcol(l)=width;

markcol1(l)=count1;

markcol2(n1)=markcol(l)-markcol(l-1);

%Step10 计算车牌上每个字符中心位置,计算最大字符宽度maxwidth l=0;

for k=1:n1

markcol3(k)=markcol(k+1)-markcol1(k+1);%字符下降点

markcol4(k)=markcol3(k)-markcol(k);%字符宽度(上升点至下降点)

markcol5(k)=markcol3(k)-double(uint16(markcol4(k)/2));%字符中心位置

end

markcol6=diff(markcol5);%字符中心距离(字符中心点至下一个字符中心点)

maxs=max(markcol6);%查找最大值,即为第二字符与第三字符中心距离

findmax=find(markcol6==maxs);

markcol6(findmax)=0;

maxwidth=max(markcol6);%查找最大值,即为最大字符宽度

%Step11 提取分割字符,并变换为22行?14列标准子图

l=1;

[m2,n2]=size(subcol);

figure;

for k=findmax-1:findmax+5

cleft=markcol5(k)-maxwidth/2;

cright=markcol5(k)+maxwidth/2-2;

if cleft<1

cleft=1;

cright=maxwidth;

end

ifcright>n2

cright=n2;

cleft=n2-maxwidth;

end

SegGray=sbw(rowtop:rowbot,cleft:cright);

SegBw1=sbw(rowtop:rowbot,cleft:cright);

SegBw2 = imresize(SegBw1,[22 14]);%变换为22行?14列标准子图

subplot(2,n1,l),imshow(SegGray);

if l==7

title(['车牌字符宽度:',int2str(maxwidth)],'Color','r');

end

subplot(2,n1,n1+l),imshow(SegBw2);

fname=strcat('c:\work\sam\image',int2str(k),'.jpg');%这块儿是自建模板,网上也有下载的,注意文件路径

imwrite(SegBw2,fname,'jpg')

l=l+1;

end

%Step12 将计算计算获取的字符图像与样本库进行匹配,自动识别出字符代码。

liccode=char(['0':'9' 'A':'Z' '粤桂海云贵川京津沪']);%建立自动识别字符代码表

SubBw2=zeros(22,14);

l=1;

[m2,n2]=size(sbw);

for k=findmax-1:findmax+5

cleft=markcol5(k)-maxwidth/2;

cright=markcol5(k)+maxwidth/2-2;

if cleft<1

cleft=1;

cright=maxwidth;

end

ifcright>n2

cright=n2;

cleft=n2-maxwidth;end

SegBw1=sbw(rowtop:rowbot,cleft:cright);

SegBw2 = imresize(SegBw1,[22 14]);%变换为22行 14列标准子图

if l==1 %第一位汉字识别

kmin=37;

kmax=45;

elseif l==2 %第二位A~Z 字母识别

kmin=11;

kmax=36;

elseif l>=3 & l<=5 %第三、四位0~9 A~Z字母和数字识别

kmin=1;

kmax=36;

else %第五~七位0~9 数字识别kmin=1;

kmax=10;

end

for k2=kmin:kmax

fname=strcat('H:\work\sam\Sam',liccode(k2),'.jpg');%这块儿是自建模板,前面有提到过,'0':'9' 'A':'Z' '粤桂海云贵川京津沪,注意文件路径

SamBw2 = imread(fname);

for i=1:22

for j=1:14

SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);

end

end %SubBw2 = SamBw2-SegBw2;

Dmax=0;

for k1=1:22

for l1=1:14

if( SubBw2(k1,l1)> 0 | SubBw2(k1,l1)<0 )

Dmax=Dmax+1;

end

end

end

Error(k2)=Dmax;

end

Error1=Error(kmin:kmax);%比较误差

MinError=min(Error1);%取误差的最小值

findc=find(Error1==MinError);%查找最小误差的图像

RegCode(l*2-1)=liccode(findc(1)+kmin-1);

RegCode(l*2)=' ';%输出最小误差图像

l=l+1;

end

title (['识别车牌号码:', RegCode],'Color','r');

车牌识别地matlab程序

( 附录 车牌识别程序 clear ; close all; %Step1 获取图像装入待处理彩色图像并显示原始图像 Scolor = imread('');%imread函数读取图像文件 %将彩色图像转换为黑白并显示 Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 " figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图 figure,imshow(Sgray),title('原始黑白图像'); %Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景s=strel('disk',13);%strel函数 Bgray=imopen(Sgray,s);%打开sgray s图像 figure,imshow(Bgray);title('背景图像');%输出背景图像 %用原始图像与背景图像作减法,增强图像 Egray=imsubtract(Sgray,Bgray);%两幅图相减 ¥ figure,imshow(Egray);title('增强黑白图像');%输出黑白图像 %Step3 取得最佳阈值,将图像二值化 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); %Step4 对得到二值图像作开闭操作进行滤波 、 figure,imshow(bw2);title('图像二值化');%得到二值图像 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界

车牌自动识别操作系统使用说明

车牌自动识别操作系统 使用说明 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

车牌自动识别操作系统使用说明 使用车牌识别的优势在哪里 车牌自动识别系统的优势在于可以把卡和车对应起来,使管理提高一个档次,卡和车的对应的优点在于长租卡须和车配合使用,杜绝一卡多车使用的漏洞,增加停车费的收取;同时自动比对进出车辆,防止偷盗事件的发生,无须人工干扰,作为档案保存,可以为一些纠纷提供有力的证据。 对固定车管理而言,“车牌识别”解决了以下问题: 解决了一卡多车的情况 解决了卡未携带进出小区受阻的情况 解决了卡丢失、损坏带来的换卡,补卡的 解决了因为卡安装摆放位置不同带来的刷卡不灵敏的问题 对临时车管理而言,“车牌识别”解决了以下问题: 1、解决了临时收费过程中,收费人员偷钱的机会; 2、解决了入口发卡机的卡容量有限的问题,入口需要配备工作人员。入口发卡机往往需要安排专人在“入口发卡机”和“临时车”之间传递“临时卡”,严重偏离了“节省人力资源的根本要求”。而临时车往往停得距离发卡机较远,是人们害怕撞到发卡机和道闸的下意识正常反映,是经常发生的情况; 3、解决了有个别临时车混出停车场,同时损失临时卡和停车费的情况; 4、解决了有个别的固定车在入场的时候恶意取走临时卡,造成临时卡不断流失的情况自动对大车,小车进行车型区分,执行不同的收费标准; 车牌识别对整个停车场领域带来了哪些便利 一、车牌识别对物业管理人员的适应性分析 1)物业管理人员不用担心卡流失后再补卡、卡注册、卡授权、卡挂失、卡解挂等繁琐的卡操作。 2)物业管理人员不用担心一卡多用带来的收益流失。 下面是车牌识别系统操作说明

基于matlab的车牌号码识别程序代码

基于matlab的汽车牌照识别程序 摘要:本次作业的任务是设计一个基于matlab的汽车牌照识别程序,能够实现车牌图像预处理,车牌定位,字符分割,然后通过神经网络对车牌进行字符识别,最终从一幅图像中提取车牌中的字母和数字,给出文本形式的车牌号码。 关键词:车牌识别,matlab,神经网络 1 引言 随着我国交通运输的不断发展,智能交通系统(Intelligent Traffic System,简称ITS)的推广变的越来越重要,而作为ITS的一个重要组成部分,车辆牌照识别系统(vehicle license plate recognition system,简称LPR)对于交通管理、治安处罚等工作的智能化起着十分重要的作用。它可广泛应用于交通流量检测,交通控制于诱导,机场,港口,小区的车辆管理,不停车自动收费,闯红灯等违章车辆监控以及车辆安全防盗等领域,具有广阔的应用前景。由于牌照是机动车辆管理的唯一标识符号,因此,车辆牌照识别系统的研究在机动车管理方面具有十分重要的实际意义。 2 车辆牌照识别系统工作原理 车辆牌照识别系统的基本工作原理为:将摄像头拍摄到的包含车辆牌照的图像通过视频卡输入到计算机中进行预处理,再由检索模块对牌照进行搜索、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进行二值化并将其分割为单个字符,然后输入JPEG或BMP格式的数字,输出则为车牌号码的数字。 3 车辆牌照识别系统组成 (1)图像预处理:对汽车图像进行图像转换、图像增强和边缘检测等。 (2)车牌定位:从预处理后的汽车图像中分割出车牌图像。即在一幅车辆图像中找到车牌所在的位置。 (3)字符分割:对车牌图像进行几何校正、去噪、二值化以及字符分割以从车牌图像中分离出组成车牌号码的单个字符图像

车牌识别的matlab程序

附录 车牌识别程序 clear ; close all; %Step1 获取图像装入待处理彩色图像并显示原始图像 Scolor = imread('3.jpg');%imread函数读取图像文件 %将彩色图像转换为黑白并显示 Sgray = rgb2gray(Scolor);%rgb2gray转换成灰度图 figure,imshow(Scolor),title('原始彩色图像');%figure命令同时显示两幅图 figure,imshow(Sgray),title('原始黑白图像'); %Step2 图像预处理对Sgray 原始黑白图像进行开操作得到图像背景 s=strel('disk',13);%strel函数 Bgray=imopen(Sgray,s);%打开sgray s图像 figure,imshow(Bgray);title('背景图像');%输出背景图像 %用原始图像与背景图像作减法,增强图像 Egray=imsubtract(Sgray,Bgray);%两幅图相减 figure,imshow(Egray);title('增强黑白图像');%输出黑白图像 %Step3 取得最佳阈值,将图像二值化 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); %Step4 对得到二值图像作开闭操作进行滤波 figure,imshow(bw2);title('图像二值化');%得到二值图像 grd=edge(bw2,'canny')%用canny算子识别强度图像中的边界 figure,imshow(grd);title('图像边缘提取');%输出图像边缘 bg1=imclose(grd,strel('rectangle',[5,19]));%取矩形框的闭运算 figure,imshow(bg1);title('图像闭运算[5,19]');%输出闭运算的图像

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

Matlab程序设计任务书 目录

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

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。

牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合汽车牌照特征的若干区域作为候选区,然后对这些侯选区域做进一步分析、评判,最后选定一个最佳的区域作为牌照区域,并将其从图象中分割出来。 流程图: 完成牌照区域的定位后,再将牌照区域分割成单个字符,然后进行识别。字符分割一般采用垂直投影法。由于字符在垂直方向上的投影必然在字符间或字符内的间隙处取得局部最小值的附近,并且这个位置应满足牌照的字符书写格式、字符、尺寸限制和一些其他条件。利用垂直投影法对复杂环境下的汽车图像中的字符分割有较好的效果。 字符识别方法目前主要有基于模板匹配算法和基于人工神经网络算法。 基于模板匹配算法首先将分割后的字符二值化,并将其尺寸大小缩放为字符数据库中模板的大小, 然后与所有的模板进行匹配,最后选最佳匹配作为结果。基于人工神经元网络的算法有两种:一种是先对待识别字符进行特征提取,然后用所获得特征来训练神经网络分配器;另一种方法是直接把待处理图像输入网络,由网络自动实现特征提取直至识别出结果。实际应用中,牌照识别系统的识别率与牌照质量和拍摄质量密切相关。牌照质量会受到各种因素的影响,如生锈、污损、油漆剥落、字体褪色、牌照被遮挡、牌照倾斜、高亮反光、多牌照、假牌照等等;实际拍摄过程也会受到环境亮度、拍摄亮度、车辆速度等等因素的影响。这些影响因素不同程度上降低了牌照识别的识别率,也正是牌照识别系统的困难和挑战所在。为了提高识别率,除了不断的完善识别算法,还应该想办法克服各种光照条件,使采集到的图像最利于识别。 clear ; close all;

车牌识别的matlab程序(程序-讲解-模板)

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=imread('chepai.jpg'); subplot(3,2,1);imshow(I), title('原始图像'); I_gray=rgb2gray(I); subplot(3,2,2),imshow(I_gray),title('灰度图像'); %====================== 形态学预处理====================== I_edge=edge(I_gray,'sobel'); subplot(3,2,3),imshow(I_edge),title('边缘检测后图像'); se=[1;1;1]; I_erode=imerode(I_edge,se); subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像'); se=strel('rectangle',[25,25]); I_close=imclose(I_erode,se); %图像闭合、填充图像 subplot(3,2,5),imshow(I_close),title('填充后图像

for i=1:size(location_of_1,1) %寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2); if tempmaxi maxi=temp; b=i; end end first_point=location_of_1(a,:); %和最小的点为车牌的左上角 last_point=location_of_1(b,:); %和最大的点为车牌的右下角 x1=first_point(1)+4; %坐标值修正 x2=last_point(1)-4; y1=first_point(2)+4;

matlab车牌识别程序代码

% 车牌识别程序主体 clc; close all; clear all; %========================================================== %说明: % % %=========================================================== % ==============测定算法执行的时间,开始计时================= tic %%%%%记录程序运行时间 %=====================读入图片================================ [fn,pn,fi]=uigetfile('*.jpg','选择图片'); I=imread([pn fn]); figure; imshow(I); title('原始图像');%显示原始图像 chepailujing=[pn fn] I_bai=I; [PY2,PY1,PX2,PX1]=caitu_fenge(I); % I=rgb2hsv(I); % [PY2,PY1,PX2,PX1]=caitu_tiqu(I,I_bai);%用HSI模型识别蓝色,用rgb模型识别白色 %================分割车牌区域================================= %===============车牌区域根据面积二次修正====================== [PY2,PY1,PX2,PX1,threshold]=SEC_xiuzheng(PY2,PY1,PX2,PX1); %==============更新图片============================= Plate=I_bai(PY1:PY2,PX1:PX2,:);%使用caitu_tiqu %==============考虑用腐蚀解决蓝色车问题============= bw=Plate;figure,imshow(bw);title('车牌图像');%hsv彩图提取图像 %==============这里要根据图像的倾斜度进行选择这里选择的图片20090425686.jpg bw=rgb2gray(bw);figure,imshow(bw);title('灰度图像'); %================倾斜校正====================== qingxiejiao=rando_bianhuan(bw) bw=imrotate(bw,qingxiejiao,'bilinear','crop');figure,imshow(bw);title('倾斜校正');%取值为负值向右旋转 %============================================== bw=im2bw(bw,graythresh(bw));%figure,imshow(bw); bw=bwmorph(bw,'hbreak',inf);%figure,imshow(bw); bw=bwmorph(bw,'spur',inf);%figure,imshow(bw);title('擦除之前');

智能车牌识别停车场管理收费系统软件操作说明书

智能车牌识别停车场管理收费系统软件操作说明书 2017-05-17 10:56 多奥智能车牌识别停车场管理收费系统软件操作说明书 一、数据库的安装 安装数据库Microsoft SQL Server 2000 1)选择SQL Server 2000文件夹下的应用程序。 2)选择第一项,即安装SQL Server 2000组件(C)。 3)选择安装数据服务器(S)。 4)选择本地电脑(L)。 5)选择创建新的SQL Server实例,或安装客户端工具(C)。 6)选择服务器和客户端工具(S)。 7)选择默认。点击下一步。 8)选择典型,点击下一步。 9)选择使用本地系统账户,点击下一步。 10)选择混合模式与空密码,点击下一步。 11)继续下一步直到安装结束。重启电脑,数据库安装完成后。 二、停车场软件的安装 安装停车场软件 1)打开光盘,运行,根据提示安装完成后出现。

2)选择“创建本地数据库”,点击“执行选择”后出现连接数据库的界面, 3)点击“连接数据库”后,创建数据库、备份数据库、还原数据库的按钮会显示出来。 4)点击“创建数据库”,创建数据库成功后,退出。再选择“安装加密狗” 5)点击“执行选择”,出现SoftDog Windows驱动安装和卸载程序界面 6)勾选“USB狗驱动”点击“安装”,安装成功后,退出。加密狗驱动安装完成。 三、停车场软件操作 软件的登陆 1)运行软件的安装包,安装好软件。 2)创建好数据库后,点击图标打开软件 3)出现智能停车场管理系统登录窗口,如图示2,输入用户编号101,点击三次回车,进入软件操作界面。或者输入用户编号101后,直接点击“确定”按钮进入软件操作界面

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

Matlab程序设计任务书 分院(系)信息科学与工程专业 学生姓名学号 设计题目车牌识别系统设计 内容及要求: 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生 分析问题和解决问题的能力,还能培养一定的科研能力。 1.牌照识别系统应包括车辆检测、图像采集、牌照识别等几 部分。 2.当车辆检测部分检测到车辆到达时,触发图像采集单元,采 集当前的视频图像。 3.牌照识别单元对图像进行处理,定位出牌照位置,再将牌 照中的字符分割出来进行识别,然后组成牌照号码输出。 进度安排: 19周:Matlab环境熟悉与基础知识学习 19周:课程设计选题与题目分析 20周:程序设计编程实现 20周:课程设计验收与答辩 指导教师(签字): 年月日学院院长(签字): 年月日 目录

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

设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤: 1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置;

基于matlab的车牌定位源程序及运行结果 (1)

I=imread('E:\毕业设计\基于matlab的车牌定位的源程\车牌识别程序 \Car1.jpg') [y,x,z]=size(I); myI=double(I); tic Blue_y=zeros(y,1); for i=1:y for j=1:x if((myI(i,j,1)<=30)&&((myI(i,j,2)<=62)&&(myI(i,j,2)>=51))&&((myI(i,j,3) <=142)&&(myI(i,j,3)>=119))) Blue_y(i,1)= Blue_y(i,1)+1; end end end [temp MaxY]=max(Blue_y); PY1=MaxY; while ((Blue_y(PY1,1)>=120)&&(PY1>1)) PY1=PY1-1; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2=10))&&((myI(i,j,3) <=65)&&(myI(i,j,3)>=40))) Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1; while ((Blue_x(1,PX1)<3)&&(PX1PX1)) PX2=PX2-1; end PX1=PX1-2; PX2=PX2+2; Plate=I(PY1:PY2,PX1-2:PX2,:); t=toc figure,imshow(I); figure,plot(Blue_y);grid

车牌识别系统用户操作说明书

深圳来吉智能科技有限公司 纯车牌识别系统用户操作说明书

目录 目录 (2) 第一章系统概述 (3) 1.1)系统简介 (3) 1.2)系统拓朴 (4) 1.3)系统安装流程图 (5) 1.4)注意事项 (6) 1.4.1)车道宽度要求 (6) 1.4.2)管理软件要求 (6) 1.4.3)摄像机抓拍图片要求 (6) 第二章产品功能及特点 (9) 2.1)出入口控制器(LKP623) (9) 2.1.1)产品特点 (9) 2.1.2)技术参数 (10) 2.1.3)接线图 (11) 2.2)网络摄像机(LK-210) (12) 2.2.1)产特特点 (12) 2.2.2)技术参数 (13) 2.3)补光灯(LK-214) (14) 2.3.1)产品特点 (14) 2.3.2)技术参数 (14) 2.4)车辆检测器(LD16) (15) 2.4.1)产品特点 (15) 2.4.2)技术参数 (16) 第三章软件、数据库安装 (17) 3.1)M ICROSOFT SQL SERVER 2008数据库 (17) 3.1.1)数据库安装 (17) 3.1.2)数据库设置 (35) 3.2)车牌识别软件安装程序 (37) 3.2.1)运行环境安装 (37) 3.2.2)软件安装 (39) 3.2.3)软件设置 (44) 3.3)附表一收费标准详细说明 (77) 3.4)附表二支架安装 (79) 3.5)附表三车道布设图 (80) 第四章NET FRAMEWORK 4.0安装失败解决 (82) 4.1)安装程序 (82) 4.2)方法/步骤 (82) 第五章NET FRAMEWORK 3.5安装失败解决 (92)

最新车牌识别系统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; end function R = Cubic_Spline(P) % 三次样条插值 % 输入参数: % P——节点矩阵 % 输出参数: % R——样条节点矩阵

车牌识别的matlab程序(程序-讲解-模板)

clc clear close all I=imread('chepai.jpg'); subplot(3,2,1);imshow(I), title('原始图像'); I_gray=rgb2gray(I); subplot(3,2,2),imshow(I_gray),title('灰度图像'); %====================== 形态学预处理====================== I_edge=edge(I_gray,'sobel'); subplot(3,2,3),imshow(I_edge),title('边缘检测后图像'); se=[1;1;1]; I_erode=imerode(I_edge,se); subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像'); se=strel('rectangle',[25,25]); I_close=imclose(I_erode,se); %图像闭合、填充图像 subplot(3,2,5),imshow(I_close),title('填充后图像'); I_final=bwareaopen(I_close,2000); %去除聚团灰度值小于2000的部分 subplot(3,2,6),imshow(I_final),title('形态滤波后图像'); %========================== 车牌分割============================= I_new=zeros(size(I_final,1),size(I_final,2)); location_of_1=[]; for i=1:size(I_final,1) %寻找二值图像中白的点的位置 for j=1:size(I_final,2) if I_final(i,j)==1; newlocation=[i,j]; location_of_1=[location_of_1;newlocation]; end end end mini=inf;maxi=0; for i=1:size(location_of_1,1) %寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2); if tempmaxi maxi=temp; b=i; end end first_point=location_of_1(a,:); %和最小的点为车牌的左上角 last_point=location_of_1(b,:); %和最大的点为车牌的右下角

车牌识别matlab程序[1]

[, pathname] = uigetfile({'*.jpg', 'JPEG文件(*.jpg)';'*.bmp','BMP文件(*.bmp)';}); if( == 0), return, end global %声明全局变量 = [pathname ]; I=imread(); imshow(I); %显示图像I I1=rgb2gray(I);%RGB图转化为灰度图 figure,imshow(I1); w1=medfilt2(I1); figure,imshow(w1); s1=histeq(w1,256); figure,imshow(s1); t1=imadjust(s1); figure,imshow(t1); I2=edge(t1,'robert',0.15,'both'); %用ROBERT算子提取图像边缘 figure,imshow(I2); se=[1;1;1]; I3=imerode(I2,se); %弱化二进制图像I2的边缘 figure,imshow(I3);%为定位车牌,将白色区域膨胀,腐蚀去无关的小物件,包括车牌字符(下面两句) se=strel('rectangle',[25,20]); %用来腐蚀的形状为矩形,面积20*25 I4=imclose(I3,se); figure,imshow(I4); I5=bwareaopen(I4,2000); %去除图像中面积过小的,可以肯定不是车牌的区域。 figure,imshow(I5); [y,x,z]=size(I5); %z=1。y,x分别为I5图像的高和宽 myI=double(I5) %myI=I5; tic %begin横向扫描 white_y=zeros(y,1); %white_y为y行1列的零矩阵 for i=1:y for j=1:x if(myI(i,j,1)==1) %如果myI(i,j,1)即myI图像中坐标为(i,j)的点为白色 %则white_y的相应行的元素white_y(i,1)值加1 white_y(i,1)= white_y(i,1)+1; end end end [temp MaxY]=max(white_y); %temp为向量white_y的元素中的最大值,MaxY为该值的索引(在向量中的位置)

MATLAB车牌识别过程

7.3 系统详细设计 7.3.1 车牌图像读入 目前常用的图像格式主要有*.PCX、*.BMP、*.JPG、*.TIFF、*.GIF 等,本设计采集到的图片格式为*.JPG格式,这种格式的图像占有的存储空间小,而且是使用最广的图片保存和传输格式,大多数的摄像设备也都是以*.JPG格式保存图像的。利用图像工具的图像读取函数imread() 来读取一副图像,其使用格式为: I=imread(‘fn pn’); %fn为图像文件名,pn为文件路径 使用图像工具的图像显示函数imshow() 来显一副图像,使用格式为: Imshow(I); 具体代码为: [fn pn]=uigetfile (‘*.JPG’,’选择图片’);%选择图像文件,fn为文件名,pn为路径I= imread ([fn pn]); %显示所选图像 Figure,imshow(I);title(‘原始车牌图像’); %在新建的figure中显示所选图像文件, figure标题为原始车牌图像 以一副名为“桂APC322”的车牌图片为例,程序运行结果为:

7.3.2 彩色(基于蓝色)车牌定位、提取 将彩色车牌读入后,采用水平垂直双向投影法,将图像分别投影到X、Y坐标轴,然后分别 沿X、Y轴扫描图像。当沿Y轴扫描时,一边扫描一边统计图像中蓝色像素点的个数,第一次扫描到蓝色像素点最多的行时停止扫描,并记录下蓝色像素点最多的行,然后以这行为基点,分别向上、向下扫描直到统计的像素点小于像素点阀值时,停止扫描,记录上下行的 Y轴坐标PY2,PY1,I=(PY1:PY2,: ,:)就为Y轴方向的车牌区域,代码如下: Blue_y=zeros(y,1); for i=1:y for j=1:x if((myI(i,j,1)<=48)&&((myI(i,j,2)<=100)&&(myI(i,j,2)>=40))&&((myI(i,j ,3)<=200)&&(myI(i,j,3)>=80))) Blue_y(i,1)= Blue_y(i,1)+1; %统计蓝色像素点 end end end [temp MaxY]=max(Blue_y); % PY1=MaxY;% while ((Blue_y(PY1,1)>=Y_threshlow)&&(PY1>1)) %

基于MATLAB的车牌识别课程设计

MATLAB课程设计报告书 课题名称基于MATLAB的车牌识别课程设计 姓名 学号 学院 专业 指导教师 2016年6月21日

基于MATLAB的车牌识别课程设计 目录 一.课程设计目的……………………………………………二.设计原理…………………………………………………三.详细设计步骤…………………………………………… 四. 设计结果及分析………………………………………… 五. 总结……………………………………………………… 六. 设计体会………………………………………………… 七. 参考文献…………………………………………………

一、课程设计目的 车牌定位系统的目的在于正确获取整个图像中车牌的区域,并识别出车牌号。通过设计实现车牌识别系统,能够提高学生分析问题和解决问题的能力,还能培养一定的科研能力。 二、设计原理: 牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某些牌照识别系统还具有通过视频图像判断车辆驶入视野的功能称之为视频车辆检测。一个完整的牌照识别系统应包括车辆检测、图像采集、牌照识别等几部分。当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。牌照识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 三、详细设计步骤:

1. 提出总体设计方案: 牌照号码、颜色识别 为了进行牌照识别,需要以下几个基本的步骤: a.牌照定位,定位图片中的牌照位置; b.牌照字符分割,把牌照中的字符分割出来; c.牌照字符识别,把分割好的字符进行识别,最终组成牌照号码。 牌照识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与牌照识别互相配合、互相验证。 (1)牌照定位: 自然环境下,汽车图像背景复杂、光照不均匀,如何在自然背景中准确地确定牌照区域是整个识别过程的关键。首先对采集到的视频图像进行大范围相关搜索,找到符合

车牌识别技术:工作原理及流程解析

车牌识别技术:工作原理及流程解析 车牌识别是利用车辆的动态视频或静态图像进行车牌号码、车牌颜色自动识别的模式识别技术。技术的核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。 车牌识别技术工作原理 车辆检测:可采用埋地线圈检测、红外检测、雷达检测技术、视频检测等多种方式感知车辆的经过,并触发图像采集抓拍。 图像采集:通过高清摄像抓拍主机对通行车辆进行实时、不间断记录、采集。 预处理:噪声过滤、自动白平衡、自动曝光以及伽马校正、边缘增强、对比度调整等。 车牌定位:在经过图像预处理之后的灰度图像上进行行列扫描,确定车牌区域。 字符分割:在图像中定位出车牌区域后,通过灰度化、二值化等处理,精确定位字符区域,然后根据字符尺寸特征进行字符分割。 字符识别:对分割后的字符进行缩放、特征提取,与字符数据库模板中的标准字符表达形式进行匹配判别。 结果输出:将车牌识别的结果以文本格式输出。 车牌识别技术工作流程 车牌识别系统采用高度模块化的设计,将车牌识别过程的各个环节各自作为一个独立的模块。 一、车辆检测跟踪模块 车辆检测跟踪模块主要对视频流进行分析,判断其中车辆的位置,对图像中的车辆进行跟踪,并在车辆位置最佳时刻,记录该车辆的特写图片,由于加入了跟踪模块,系统能够很好地克服各种外界的干扰,使得到更加合理的识别结果,可以检测无牌车辆并输出结果。 二、车牌定位模块 车牌定位模块是一个十分重要的环节,是后续环节的基础,其准确性对整体系统性能的影响巨大。车牌系统完全摒弃了以往的算法思路,实现了一种完全基于学习的多种特征融合的车牌定位新算法,适用于各种复杂的背景环境和不同的摄像角度。 三、车牌矫正及精定位模块 由于受拍摄条件的限制,图像中的车牌总不可避免存在一定的倾斜,需要一个矫正和精定位环节来进一步提高车牌图像的质量,为切分和识别模块做准备。使用精心设计的快速图像处理滤波器,不仅计算快速,而且利用的是车牌的整体信息,避免了局部噪声带来的影响。使用该算法的另一个优点就是通过对多个中间结果的分析还可以对车牌进行精定位,进一步减少非车牌区域的影响。 四、车牌切分模块

车牌识别系统工作原理流程

识别流程 车牌自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。 其硬件基础一般包括触发设备(监测车辆是否进入视野)、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机(如计算机)等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。 某些车牌识别系统还具有通过视频图像判断是否有车的功能称之为视频车辆检测。 一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。 当车辆检测部分检测到车辆到达时触发图像采集单元,采集当前的视频图像。车牌识别单元对图像进行处理,定位出牌照位置,再将牌照中的字符分割出来进行识别,然后组成牌照号码输出。 车辆检测 车辆检测可以采用埋地线圈检测、红外检测、雷达检测技术、视频检测等多种方式。 采用视频检测可以避免破坏路面、不必附加外部检测设备、不需矫正触发位置、节省

开支,而且更适合移动式、便携式应用的要求。 系统进行视频车辆检测,需要具备很高的处理速度并采用优秀的算法,在基本不丢帧的情况下实现图像采集、处理。 若处理速度慢,则导致丢帧,使系统无法检测到行驶速度较快的车辆,同时也难以保证在有利于识别的位置开始识别处理,影响系统识别率。因此,将视频车辆检测与牌照自动识别相结合具备一定的技术难度。 武汉车牌识别 号码识别 为了进行车牌识别,需要以下几个基本的步骤: 1、牌照定位,定位图片中的牌照位置; 2、牌照字符分割,把牌照中的字符分割出来; 3、牌照字符识别,把分割好的字符进行识别,*终组成牌照号码。 车牌识别过程中,牌照颜色的识别依据算法不同,可能在上述不同步骤实现,通常与车牌识别互相配合、互相验证。

基于matlab的车牌识别(含子程序)

基于matlab的车牌识别系统 一、对车辆图像进行预处理 1.载入车牌图像: function [d]=main(jpg) [filename, pathname] = uigetfile({'*.jpg', 'JPEG 文件(*.jpg)'}); if(filename == 0), return, end global 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');%选择阈值0.18,用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]);%构造结构元素以正方形构造一个se

基于Matlab的车牌识别实现源码

function[]=main(jpg) close all clc tic %测定算法执行的时间 [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:x if(Im6(i,j,1)==1)%如果Im6图像中坐标为(i,j)的点值为1,即为移除小对象的白色区域, Blue_y(i,1)= Blue_y(i,1)+1;%则y*1列矩阵的相应像素点的元素值加1, end end end [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; end PY2=MaxY; while ((Blue_y(PY2,1)>=40)&&(PY2

相关文档
最新文档