www.pudn.com > codebar.rar > ThretholdOptimize.m


%自动确定图像二值化最佳阀值的新方法.吴冰,测绘学院学报 
%特点:基于整幅图像的统计特性,且可实现阀值的自动选取,对图像二值化处理的效果较好。 
function [threthold] = ThretholdOptimize(image,height,width) 
 
hist=zeros(256,1); 
for i=1:height                 %计算直方图 
    for j=1:width 
        fi=image(i,j); 
        hist(fi+1,1)=hist(fi+1,1)+1; 
    end 
end 
len = 256; 
p=zeros(len,1); 
for i=1:len                
    p(i,1)=hist(i,1)/(height*width);%(-black);%计算每个灰度出现的概率 
end 
ivar = zeros(len,1); 
for i=1:len 
    w0 = 0; 
    w1 = 0; 
    T1 = 0; 
    T2 = 0; 
    for j=1:i 
        w0 = w0 + p(j,1);  %第一组产生的概率和 
        T1 = T1+j*p(j,1); 
    end 
    for k=(i+1):len 
        T2 = T2+k*p(k,1);   %第二组产生的概率和 
    end 
    w1 = 1 - w0; 
    u0 = T1/w0;             %第一组产生的均值 
    u1 = T2/w1;             %第二组产生的均值 
    u = w0*u0+w1*u1;            %整体图像灰度的统计均值 
    ivar(i,1) =w0*w1*(u1-u0)^2; %方差 
end 
maxvar = 0; 
threthold = 0; 
for i=1:len 
    if(ivar(i,1) > maxvar) 
        maxvar = ivar(i,1); 
        threthold = i; 
    end 
end