gusucode.com > 红外图像增强及目标检测演示界面matlab源码程序 > code/regionGrowing.m

    function [sgf,a,b]=regionGrowing(C,L)
%正态分布分割,L为采样窗宽,窗大小为(L*2+1)^2,一般为约为目标大小
[row col]=size(C);
sgf=zeros(row,col);
[Max,x,y]=max_xy(C,row,col);
M=NonZeroMean(C);
% M=median(C(:));
  a=0;b=0;n=0;
for i=-2*L:2*L
    for j=-2*L:2*L
        %if((m-C(x+i,y+j))^2<dt)
         %if(C(x+i,y+j)>=T)
            d1=abs(C(x+i,y+j)-M);d2=abs(C(x+i,y+j)-Max);
            if(d1>=d2)
            sgf(x+i,y+j)=1;
            a=a+x+i;b=b+y+j;
            n=n+1;
            Max=(Max*n+C(x+i,y+j))/(n+1);
        end
    end
end
%figure(1)
%subplot(2,2,4);
%hist(C(x-L:x+L,y-L:y+L));

a=a/n;b=b/n;
%=====================================================================
 function [m,x,y]=max_xy(f,row,col)
 m=0;x=0;y=0;
 for i=2:row-1
     for j=2:col-1
         E=mean2(f(i-1:i+1,j-1:j+1));
         if(E>m)
             m=E;
             x=i;y=j;
         end
     end
 end
 
%=====================================================================
function m=NonZeroMean(f)
   m=sum(f(:));
   n=sum(sum(f>0));
   m=m/n;