MATLAB大作业(2)

2019-06-02 15:27

tic % 测定算法执行的时间,开始计时 Blue_y=zeros(y,1); for i=1:y for j=1:x

if(myI(i,j,1)==1) % 寻找y轴方向的白色区域

Blue_y(i,1)= Blue_y(i,1)+1; % 是蓝色区域的则进行计数 end end end

[temp MaxY]=max(Blue_y);%Y方向车牌区域确定 temp(最多点数):所有行中,最多的累积 PY1=MaxY;

while ((Blue_y(PY1,1)>=5)&&(PY1>1)) PY1=PY1-1; end %Y轴方向的上限 PY2=MaxY;

while ((Blue_y(PY2,1)>=5)&&(PY2

%%%%%% X方向 %%%%%%%%%

Blue_x=zeros(1,x);%进一步确定x方向的车牌区域

for j=1:x

for i=PY1:PY2 %只需要扫描PY1:PY2 的部分,简化程序 if(myI(i,j,1)==1)

Blue_x(1,j)= Blue_x(1,j)+1; end end end PX1=1;

while ((Blue_x(1,PX1)<3)&&(PX1

end %确定x轴的右边界 PX2=x;

while ((Blue_x(1,PX2)<3)&&(PX2>PX1)) PX2=PX2-1; end %确定x轴的左边界 PX1=PX1-1;%对车牌区域的校正 PX2=PX2+1;

dw=I(PY1:PY2-8,PX1:PX2,:); %确定图片的截取区域 t=toc; % 读取程序的运行时间

a=imread('dw.jpg'); %读入已经截取好的图像 A=size(a);

if length(A)==3 b=rgb2gray(a); else b=a; end

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); %进行均值滤波 imwrite(d,'4.均值滤波后.jpg');

figure(8),subplot(3,2,4),imshow(d),title('4.均值滤波后')

% 某些图像进行操作 % 膨胀或腐蚀

se=eye(2); % eye(n)可返回一个2*2单位矩阵 [m,n]=size(d);%图像为二值图像,x,y为坐标

if bwarea(d)/m/n>=0.365 %计算二值图像中对象的总面积 d=imerode(d,se); %实现图形的腐蚀 elseifbwarea(d)/m/n<=0.235

d=imdilate(d,se);%实现图像的膨胀 end

imwrite(d,'5.膨胀或腐蚀处理后.jpg');

figure(8),subplot(3,2,5),imshow(d),title('5.膨胀或腐蚀处理后')

% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割 d=qiege(d); %截掉边界黑色的部分 [m,n]=size(d); %图像已经切割的图像的坐标 figure,subplot(2,1,1),imshow(d),title(n) k1=1; k2=1; s=sum(d); j=1; while j~=n while s(j)==0 j=j+1;

end %扫过的地方全为黑色,则向右移动,直到不是停止

k1=j; %确定截图的左边界 while s(j)~=0 && j<=n-1 j=j+1;

end %继续扫描,扫过的地方不全为黑色,向右移动,直到不是停止 k2=j-1; %确定截图的右边界 if k2-k1>=round(n/6.5)

[val,num]=min(sum(d(:,[k1+5:k2-5])));

d(:,k1+num+5)=0; % k1+num+5列的位置赋值为黑色,分割 end end % 再切割 d=qiege(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))~=0 wide=wide+1;

end %扫过的地方不全为黑色,向右移动,直到不是停止

if wide


MATLAB大作业(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:土木工程专业毕业设计(东北农业大学宿舍楼计算书)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: