gusucode.com > 红外图像增强及目标检测演示界面matlab源码程序 > code/BtwClsVarImSg.m
function [sgf,T]=BTW_CLS_V_Segmentation(f) [row col]=size(f); m=max(f(:)); f=abs(round(f*255/m)); p=histog(f); T=BetweenClassV(p); sgf=f>=T; %============================================== function h=histog(f) [row col]=size(f); h=zeros(1,256); p=1/(row*col); for x=1:row for y=1:col i=f(x,y)+1; if(i>256) i=256; end h(i)=h(i)+p; end end %====================================================================== function T=BetweenClassV(p) T=1; u0=sum(p.*[0:255]); dtT=0; for i=0:255 dtT=dtT+(i-u0)^2*p(i+1); end n0=0; for t=2:255 w1=sum(p(1:t)); w2=1-w1; if(w1~=0) u1=sum(p(2:t).*[1:t-1])/w1; u2=sum(p(t+1:256).*[t:255])/w1; else u1=0; u2=0; end dt1=0;dt2=0; for i=0:t-1 dt1=dt1+(i-u1)^2*p(i+1); end if(w1~=0) dt1=dt1/w1; end for i=t:255 dt2=dt2+(i-u2)^2*p(i+1); end dt2=dt2/w2; dtw=w1*dt1+w2*dt2; n=1-dtw/dtT; if(n>n0) T=t; n0=n; end end