
麻烦懂 MATLAB的高手 看下这个程序 大概介绍下这个程序 运行内容 及每一步的意思 10
clear;clc;closeallI=imread('ljh3.jpg');I1=rgb2gray(I);%调用自编函数读取图像,并转化为灰度图象;imshow(I1)...
clear;clc;close all
I=imread('ljh3.jpg');
I1=rgb2gray(I);%调用自编函数读取图像,并转化为灰度图象;
imshow(I1)
imwrite(I1,'l1.bmp')
tic %计时开始2
[height,width]=size(I1);
%预处理
I_edge=zeros(height,width);
for i=2:width-1
I_edge(:,i)=abs(I(:,i)-I(:,i-1));
end
figure,imshow(I_edge);title('I_edge');
%I_edge=(255/(max(max(I_edge))-min(min(I_edge))))*(I_edge-min(min(I_edge)));
%I_edge=edge(I1,'sobel',0.08,'vertical');
%I_edge=(255/(max(max(I_edge))-min(min(I_edge))))*(I_edge-min(min(I_edge)));
%figure;
%subplot(1,2,1);imshow(I_edge);
[I_edge,y1]=select(I_edge,height,width); %%%%%%调用select函数
figure,imshow(y1);title('y1');
BW2 = I_edge;%
figure,imshow(BW2);title('BW2');
%%%%%%%%%%%%%%%%一些形态学处理
%SE=strel('rectangle',[6,6]);
%IM2=bwareaopen(BW2,20);%开运算,消除细小物体
%IM2=imerode(IM2,SE);%腐蚀
%I3=imdilate(IM2,SE);%膨胀
%SE=strel('rectangle',[5,5]);
%I3=imdilate(I3,SE);%膨胀
SE=strel('rectangle',[10,10]);
I2=imerode(BW2,SE);
I2=bwareaopen(I2,30);
I3=imdilate(I2,SE);
%figure,imshow(I3)
SE=strel('rectangle',[10,10]);
IM2=imerode(BW2,SE);
IM2=bwareaopen(IM2,30);
I3=imdilate(IM2,SE);
figure,imshow(I3);
%%%%%%%%%%%%%%%%%%%%%%%%%%e
[x,y]=size(I3);
myI=double(I3);
white_x=zeros(x,1);
for i=x:-1:1
for j=1:y
if(myI(i,j,1)==1)
white_x(i,1)=white_x(i,1)+1;
%break
%else
%white_x(i,1)=0;
end
end
if white_x(i,1)>10
ibottom=i;
break
end
end
for i=ibottom:-1:1
for j=1:y
if (myI(i,j,1)==1)
white_x(i,1)= white_x(i,1)+1;
end
end
if white_x(i,1)<10
itop=i;
break
end
end
IY=I1(itop-3:ibottom+3,:,:);
figure,imshow(IY)
imwrite(IY,'2.bmp');
white_y=zeros(1,y);
for j=1:y
for i=itop:ibottom
if(myI(i,j,1)==1)
white_y(1,j)= white_y(1,j)+1;
end
end
end
ileft=1;
while ((white_y(1,ileft)<10)&&(ileft<y))
ileft=ileft+1;
end
iright=y;
while ((white_y(1,iright)<10)&&(iright>ileft))
iright=iright-1;
end
t=toc
plate=I1(itop-12:ibottom+3,ileft+2:iright,:);
%plate=I1(itop-22:ibottom+8,ileft-2:iright+90,:);
%figure;
%figure,plot(white_x)
%figure,plot(white_y)
figure,imshow(plate)
imwrite(plate,'1139_5.bmp'); 展开
I=imread('ljh3.jpg');
I1=rgb2gray(I);%调用自编函数读取图像,并转化为灰度图象;
imshow(I1)
imwrite(I1,'l1.bmp')
tic %计时开始2
[height,width]=size(I1);
%预处理
I_edge=zeros(height,width);
for i=2:width-1
I_edge(:,i)=abs(I(:,i)-I(:,i-1));
end
figure,imshow(I_edge);title('I_edge');
%I_edge=(255/(max(max(I_edge))-min(min(I_edge))))*(I_edge-min(min(I_edge)));
%I_edge=edge(I1,'sobel',0.08,'vertical');
%I_edge=(255/(max(max(I_edge))-min(min(I_edge))))*(I_edge-min(min(I_edge)));
%figure;
%subplot(1,2,1);imshow(I_edge);
[I_edge,y1]=select(I_edge,height,width); %%%%%%调用select函数
figure,imshow(y1);title('y1');
BW2 = I_edge;%
figure,imshow(BW2);title('BW2');
%%%%%%%%%%%%%%%%一些形态学处理
%SE=strel('rectangle',[6,6]);
%IM2=bwareaopen(BW2,20);%开运算,消除细小物体
%IM2=imerode(IM2,SE);%腐蚀
%I3=imdilate(IM2,SE);%膨胀
%SE=strel('rectangle',[5,5]);
%I3=imdilate(I3,SE);%膨胀
SE=strel('rectangle',[10,10]);
I2=imerode(BW2,SE);
I2=bwareaopen(I2,30);
I3=imdilate(I2,SE);
%figure,imshow(I3)
SE=strel('rectangle',[10,10]);
IM2=imerode(BW2,SE);
IM2=bwareaopen(IM2,30);
I3=imdilate(IM2,SE);
figure,imshow(I3);
%%%%%%%%%%%%%%%%%%%%%%%%%%e
[x,y]=size(I3);
myI=double(I3);
white_x=zeros(x,1);
for i=x:-1:1
for j=1:y
if(myI(i,j,1)==1)
white_x(i,1)=white_x(i,1)+1;
%break
%else
%white_x(i,1)=0;
end
end
if white_x(i,1)>10
ibottom=i;
break
end
end
for i=ibottom:-1:1
for j=1:y
if (myI(i,j,1)==1)
white_x(i,1)= white_x(i,1)+1;
end
end
if white_x(i,1)<10
itop=i;
break
end
end
IY=I1(itop-3:ibottom+3,:,:);
figure,imshow(IY)
imwrite(IY,'2.bmp');
white_y=zeros(1,y);
for j=1:y
for i=itop:ibottom
if(myI(i,j,1)==1)
white_y(1,j)= white_y(1,j)+1;
end
end
end
ileft=1;
while ((white_y(1,ileft)<10)&&(ileft<y))
ileft=ileft+1;
end
iright=y;
while ((white_y(1,iright)<10)&&(iright>ileft))
iright=iright-1;
end
t=toc
plate=I1(itop-12:ibottom+3,ileft+2:iright,:);
%plate=I1(itop-22:ibottom+8,ileft-2:iright+90,:);
%figure;
%figure,plot(white_x)
%figure,plot(white_y)
figure,imshow(plate)
imwrite(plate,'1139_5.bmp'); 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询