⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imgonet.m

📁 自己编的8连通源程序
💻 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 + -