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;