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