版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
matlab车牌识别字符切割,车牌识别字符分割问题function[d]=main(jpg)closeall;clear;[filename,filepath]=uigetfile('.jpg','输⼊⼀个需要识别的车牌图像');%直接⾃动读⼊%file=strcat(filepath,filename);I=imread(file);%figure(1),imshow(I);title('原图');I1=rgb2gray(I);%figure(2),subplot(1,2,1),imshow(I1);title('灰度图');%figure(2),subplot(1,2,2),imhist(I1);title('灰度图直⽅图');I2=edge(I1,'roberts',0.18,'both');%边缘检测%figure(3),imshow(I2);title('robert算⼦边缘检测')se=[1;1;1];I3=imerode(I2,se);%腐蚀%figure(4),imshow(I3);title('腐蚀后图像');se=strel('rectangle',[20,20]);%⽣成⼀个矩阵I4=imclose(I3,se);%闭运算%figure(5),imshow(I4);title('平滑图像的轮廓');I5=bwareaopen(I4,2000);%figure(6),imshow(I5);title('从对象中移除⼩对象');%车牌定位[y,x,~]=size(I5);myI=double(I5);%转换为doublele类型%begin横向扫描Blue_y=zeros(y,1);fori=1:yforj=x:-1:1if(myI(i,j,1)==1)%如果myI(i,j,1)即myI图像中坐标为(i,j)的点为⽩⾊%则Blue_y的相应⾏的元素white_y(i,1)值加1Blue_y(i,1)=Blue_y(i,1)+1;%蓝⾊像素点统计endend
end[temp,MaxY]=max(Blue_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)&&(PY2PY2=PY2+1;endIY=I(PY1:PY2,:,:);%IY为原始图像I中截取的纵坐标在PY1:PY2之间的部分%end横向扫描%begin纵向扫描Blue_x=zeros(1,x);%进⼀步确定x⽅向的车牌区域forj=1:xfori=PY1:PY2if(myI(i,j,1)==1)Blue_x(1,j)=Blue_x(1,j)+1;endendendPX1=1;while((Blue_x(1,PX1)<5)&&(PX1PX1=PX1+1;endPX2=x;while((Blue_x(1,PX2)<5)&&(PX2>PX1))PX2=PX2-1;end%end纵向扫描PX1=PX1-2;%对车牌区域的校正PX2=PX2+2;dw=I(PY1+2:PY2-2,PX1+6:PX2-6,:);
figure(7),subplot(1,2,1),imshow(IY),title('⾏⽅向合理区域');figure(7),subplot(1,2,2),imshow(dw),title('定位剪切后的彩⾊车牌图像')imwrite(dw,'dw.jpg');a=imread('dw.jpg');b=rgb2gray(a);imwrite(b,'车牌灰度图像.jpg');figure(8);subplot(1,2,1),imshow(b),title('车牌灰度图像')thresh=graythresh(b);d=im2bw(b,thresh);%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(1,2,2),imshow(d),title('2.车牌⼆值图像')figure(9),subplot(1,2,1),imshow(d),title('3.中值滤波前')%滤波h=medfilt2(d);%h=fspecial('average',3);d=im2bw(h)%d=im2bw(round(filter2(h,d)));%BW=im2bw(I,level)将灰度图像I转换为⼆进制图像。输出图像%BW将输⼊图像中亮度值⼤于level的像素替换为值1(⽩⾊),其他替换为值0(⿊⾊imwrite(d,'4.中值滤波.jpg');figure(9),subplot(1,2,2),imshow(d),title('4.中值滤波后')%膨胀或腐蚀se=eye(2);%eye(n)returnsthen-by-nidentitymatrix单位矩阵[m,n]=size(d);ifbwarea(d)/m/n>=0.365%计算⾯积d=imerode(d,se);%imerode实现图像腐蚀d为待处理图像,se是结构元素对象elseifbwarea(d)/m/n<=0.235d=imdilate(d,se);%imdilate图像膨胀endimwrite(d,'5.膨胀或腐蚀处理后.jpg');
%figure(8),subplot(3,2,5),imshow(d),title('5.膨胀或腐蚀处理后')%寻找连续有⽂字的块,若长度⼤于某阈值,则认为该块有两个字符组成,需要分割d=qiege(d);[m,n]=size(d);k1=1;k2=1;s=sum(d);j=1;whilej~=nwhiles(j)==0j=j+1;endk1=j;whiles(j)~=0&&j<=n-1j=j+1;endk2=j-1;ifk2-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=[];whileflag==0[m,n]=size(d);left=1;wide=0;whilesum(d(:,wide+1))~=0wide=wide+1;endifwided(:,[1:wide])=0;d=qiege(d);elsetemp=qiege(imcrop(d,[11widem]));[m,n]=size(temp);all=sum(sum(temp));
two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:)));iftwo_thirds/all>y2flag=1;word1=temp;%WORD1endd(:,[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);%分割出第六个字符%[word8,d]=getword(d);%分割出第七个字符[m,n]=size(word1);word1=imresize(word1,[4020]);word2=imresize(word2,[4020]);word2=imresize(word3,[4020]);word4=imresize(word4,[4020]);word5=imresize(word5,[4020]);word6=imresize(word6,[4020]);word7=imresize(word7,[4020]);%word8=imresize(word8,[4020]);figure(16),subplot(1,8,1),imshow(word1),title('1');subplot(1,8,2),imshow(word2),title('2');subplot(1,8,3),imshow(word2),title('3');subplot(1,8,4),imshow(word4),title('4');subplot(1,8,5),imshow(word5),title('5');subplot(1,8,6),imshow(word6),title('6');subplot(1,8,7),imshow(word7),title('7');%subplot(1,8,7),imshow(word8),title('8');%⼦程序:(getword⼦程序)
function[word,result]=getword(d)word=[];flag=0;y1=8;y2=0.5;whileflag==0[m,n]=size(d);wide=0;whilesum(d(:,wide+1))~=0&&wide<=n-2%有⽩⾊加1知道没有⽩⾊,也就%是找出⼀个⽩⾊区域wide=wide+1;endtemp=qiege(imcrop(d,[11widem]));[m1,n1]=size(temp);ifwidey2d(:,[1:wide])=0;ifsum(sum(d))~=0d=qiege(d);%切割出最⼩范围elseword=[];flag=1;endelseword=qiege(imcrop(d,[11widem]));d(:,[1:wide])=0;ifsum(sum(d))~=0d=qiege(d);flag=1;elsed=[];endendendresult=d;functione=qiege(d)[m,n]=size(d);top=1;bottom=m;left=1;right=n;%initwhilesum(d(top,:))==0&&top<=m%切割出⽩⾊区域(横切)top=top+1;en
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电脑笔记本选购协议样本
- 2024客户服务合同的范文
- 城市轨道交通的运营安全与风险识别考核试卷
- 人脸识别技术在智能校园管理中的实际案例考核试卷
- 测绘公司正规合同模板
- 环保工程 保洁合同范例
- 园林公司聘用合同范例
- 信息系统安全评估与认证方案考核试卷
- 医疗废物转运政策解读
- 爱迪尔门锁甲方合同范例
- 人工智能驱动的数字经济发展与应用探索
- 手术室突发事件的紧急处理与应急演练
- 《心理健康教育》课件
- 《军事理论》课程标准
- 印刷品类售后服务方案
- 高标准农田施工工期承诺及保证措施
- 太阳能发电技术在航天与航空领域的应用
- 《中西方的节日》课件
- 《应用文书写作》课件
- MSOP(测量标准作业规范)测量SOP
- 【马工程笔记】第一章-民事诉讼法学概述
评论
0/150
提交评论