📄 imgonet.m
字号:
%四连通的运算
%运行结束后查看imgtwo内容
clear
clc
%imgon=imread('03.bmp');
imgone=[1 1 1 0 1 0 0 1
1 1 1 0 1 1 0 0
1 1 1 0 1 1 0 0
1 1 1 0 0 0 1 0
1 1 1 0 1 0 1 0
1 1 1 0 0 0 1 0
1 1 1 0 0 1 1 0
1 1 1 0 0 0 0 0];
[m,n]=size(imgone);
%for i=1:1:m
% for j=1:1:n
% imgone(i,j)=double(imgon((m*(i-1)+j)));
%end
%end
img=struct('data',0,'datatwo',0,'intX',0,'intY',0,'fs',9);
%data像素点值 datatwo标记值 fs八个方向查找
imgXY=struct('inX',0,'inY',0);
%在图片周围加上边框,便于查找
for i=1:1:m+2
for j=1:1:n+2
if i==1 | j==1 | i==m+2 | j==n+2
img(i,j).data=0;
img(i,j).datatwo=0;
img(i,j).fs=9;
img(i,j).intX=i;
img(i,j).intY=j;
else
a=imgone(i-1,j-1);
img(i,j).data=a;
img(i,j).datatwo=0;
img(i,j).fs=9;
img(i,j).intX=i;
img(i,j).intY=j;
end
end
end
mn=0
k=1;
for j=1:1:n+1
for i=1:1:m+1
abc=1;
if img(i,j).data==1 & img(i,j).datatwo==0
img(i,j).datatwo=k;
di=i;
dj=j;
xy=1;
while (xy)
if img(di,dj).fs==9
img(di,dj).fs =img(di,dj).fs-1;
if img(di-1,dj-1).data==1 & img(di-1,dj-1).datatwo==0
img(di-1,dj-1).datatwo=k;
mn=mn+1; %进践
imgXY(mn).inX=di;
imgXY(mn).inY=dj;
di=di-1;
dj=dj-1;
end
end
if img(di,dj).fs==8
img(di,dj).fs =img(di,dj).fs-1;
if img(di-1,dj).data==1 & img(di-1,dj).datatwo==0
img(di-1,dj).datatwo=k;
mn=mn+1; %进践
imgXY(mn).inX=di;
imgXY(mn).inY=dj;
di=di-1;
dj=dj;
end
end
if img(di,dj).fs==7
img(di,dj).fs =img(di,dj).fs-1;
if img(di-1,dj+1).data==1 & img(di-1,dj+1).datatwo==0
img(di-1,dj+1).datatwo=k;
mn=mn+1; %进践
imgXY(mn).inX=di;
imgXY(mn).inY=dj;
di=di-1;
dj=dj+1;
end
end
if img(di,dj).fs==6
img(di,dj).fs =img(di,dj).fs-1;
if img(di,dj-1).data==1 & img(di,dj-1).datatwo==0
img(di,dj-1).datatwo=k;
mn=mn+1; %进践
imgXY(mn).inX=di;
imgXY(mn).inY=dj;
di=di;
dj=dj-1;
end
end
if img(di,dj).fs==5
img(di,dj).fs =img(di,dj).fs-1;
if img(di+1,dj-1).data==1 & img(di+1,dj-1).datatwo==0
img(di+1,dj-1).datatwo=k;
mn=mn+1; %进践
imgXY(mn).inX=di;
imgXY(mn).inY=dj;
di=di+1;
dj=dj-1;
end
end
if img(di,dj).fs==4
img(di,dj).fs =img(di,dj).fs-1;
if img(di+1,dj).data==1 & img(di+1,dj).datatwo==0
img(di+1,dj).datatwo=k;
mn=mn+1; %进践
imgXY(mn).inX=di;
imgXY(mn).inY=dj;
di=di+1;
dj=dj;
end
end
if img(di,dj).fs==3
img(di,dj).fs =img(di,dj).fs-1;
if img(di+1,dj+1).data==1 & img(di+1,dj+1).datatwo==0
img(di+1,dj+1).datatwo=k;
mn=mn+1; %进践
imgXY(mn).inX=di;
imgXY(mn).inY=dj;
di=di+1;
dj=dj+1;
end
end
if img(di,dj).fs==2
img(di,dj).fs =img(di,dj).fs-1;
if img(di,dj+1).data==1 & img(di,dj+1).datatwo==0
img(di,dj+1).datatwo=k;
mn=mn+1; %进践
imgXY(mn).inX=di;
imgXY(mn).inY=dj;
di=di;
dj=dj+1;
end
end
if img(di,dj).fs==1
if mn>=1
di=imgXY(mn).inX; %出践
dj=imgXY(mn).inY;
mn=mn-1;
else
k=k+1;
xy=0;
end
end
end
end
end
end
for i=1:1:m+2
for j=1:1:n+2
imgtwo(i,j)=img(i,j).datatwo;
end
end
figure(1);
imshow(imgone);
figure(2);
imshow(imgtwo);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -