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

📄 cfed.m

📁 this is matlab file for competitive fuzzy edge detection
💻 M
字号:
function A = CFED(I,lo,hi,w);

% Competitive fuzzy edge detection
% Applied Soft Computing, Volume 3, Issue 2, September 2003, Pages 123-137
% Lily Rui Liang and Carl G. Looney

c0=[lo lo lo lo];
c1=[lo hi hi hi];
c2=[hi lo hi hi];
c3=[hi hi lo hi];
c4=[hi hi hi lo];
c5=[hi hi hi hi];
%done for this image
hei = 256;
wid = 256;
%%%%%%%%
for i = 1:hei
    for j = 1:wid
        %construct feature vector x
        d1 = compud(I,i,j,1); 
        d2 = compud(I,i,j,2);
        d3 = compud(I,i,j,3);
        d4 = compud(I,i,j,4);
        x = [d1 d2 d3 d4];
        %Compute membership function

        m0 = compuMS(x,c0,w);
        I(i,j)=1;%white:calss0
        m1 = compuMS(x,c1,w);
        if m1>m0
             I(i,j)=2;%class1
         end;     
        m2 = compuMS(x,c2,w);
        if m2>max(m1,m0)
             I(i,j)=3;%class2
        end;     
        m3 = compuMS(x,c3,w);
        if m3>max(m2,m1,m0)
             I(i,j)=4;%class3
        end;     
        m4 = compuMS(x,c4,w);
        if m4>max(m3,m2,m1,m0)
             I(i,j)=5;%class4
        end;     
        m5 = compuMS(x,c5,w);
        if m5>max(m4,m3,m2,m1,m0)
             I(i,j)=0;%black:class5
        end;     
    end; 
    %competitive rules
    for i = 1:hei
      for j = 1:wid
          if I(i,j)==2 %class1
            NH1x=i-1;
            NH1y=j+1; 
            NH2x=i+1;
            NH2y=j-1;
            P=compud(I,i,j,3);
            NH1= compud(I,NH1x,NH1y,3);%p3
            NH2= compud(I,NH2x,NH2y,3);%p7
          elseif I(i,j)==3 %class2
            NH1x=i;
            NH1y=j-1; 
            NH2x=i;
            NH2y=j+1;
            P=compud(I,i,j,4);
            NH1= compud(I,NH1x,NH1y,4);%p4
            NH2= compud(I,NH2x,NH2y,4);%p6
          elseif I(i,j)==4 %class3
            NH1x=i-1;
            NH1y=j-1; 
            NH2x=i+1;
            NH2y=j+1;  
            P=compud(I,i,j,1);
            NH1= compud(I,NH1x,NH1y,1);%p1
            NH2= compud(I,NH2x,NH2y,1);%p9
          elseif I(i,j)==5 %class4
            NH1x=i-1;
            NH1y=j; 
            NH2x=i+1;
            NH2y=j;
            P=compud(I,i,j,2);
            NH1= compud(I,NH1x,NH1y,2);%p2
            NH2= compud(I,NH2x,NH2y,2);%p8
        end;
        if P>max(NH1,NH2)
            I(i,j)=0;%black
            I(NH1x,NH1y)=1;
            I(NH2x,NH2y)=1;
        elseif NH1>max(P,NH2)   
            I(i,j)=1;
            I(NH1x,NH1y)=0;%black
            I(NH2x,NH2y)=1;
        else    
            I(i,j)=1;
            I(NH1x,NH1y)=1;
            I(NH2x,NH2y)=0;%black
        end;
      end;
  end;
end;
return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -