www.pudn.com > thresh_md.rar > thresh_md.m
%该函数实现最大方差法计算分割门限
%输入为灰度图像,输出为灰度分割门限
function thre=thresh_md(a);
%返回图像矩阵a各个灰度等级像素个数
thre=0;
count=imhist(a);
[l,t]=size(a);
%返回图像灰度不为0的像素的总个数
N=0;
for i=1:l
for j=1:t
if a(i,j)==0
N=N+1;
end
end
end
N=l*t-N;
%指定图像灰度等级为256
L=256;
%计算各灰度出现的概率
count=count/N;
%找出出现概率不为0的最小灰度
for i=2:L
if count(i)~=0
st=i-1;
break
end
end
%找出出现概率不为0的最大灰度
for i=L:-1:1
if count(i)~=0
nd=i-1;
break
end
end
%
f=count(st+1:nd+1);
%p和q分别为灰度起始和结束值
p=st;q=nd-st;
u=0;
%计算图像的平均灰度
for i=1:q
u=u+f(i)*(p+i-1);
ua(i)=u;
end
%计算出选择不同的k值时,A区域的概率
for i=1:q
w(i)=sum(f(1:i));
end
%求出不同k值时类间的方差
d=(u*w-ua).^2./(w.*(1-w));
%求出最大方差对应的灰度级
[y,tp]=max(d);
thre=tp+p;