
k的0~255循环求得每一个对应的fc=w0(u0-ut)^2+w1(u1-ut)^2;然后比较这256个fc中的最大值,对应的那个k就是ostu的阈值。所以你这个还差一个k的循环,并在循环里面求最大fc。
我这也有段求阈值的,你可以参考下
hist=zeros(256,1);%直方图
%threshold=128; %初始阈值
%计算直方图
for i=1:height
for j=1:width
m=I_gray(i,j)+1;
hist(m)=hist(m)+1;
end
end
hist=hist/(heightwidth);%落在每一灰度级上的概率
avg=0;
for m=1:256
avg=avg+(m-1)hist(m);
end
temp=0;
for i=1:256
p1=0;
avg1=0;
avg2=0;
T_current=i-1;%当前分割阈值
for m=1:T_current-1
p1=hist(m)+ p1;%低灰度级概率总和
end
p2=1-p1;%高灰度级概率总和
for m=1:256
if m<T_current
avg1=avg1+(m-1)hist(m);
else
avg2=avg2+(m-1)hist(m);
end
end
avg1=avg1/p1;
avg2=avg2/p2;
D=p1(avg1-avg)^2+p2(avg2-avg)^2;
if D>=temp
finalT=T_current;
temp=D;
end
end
另外,站长团上有产品团购,便宜有保证
接下来:
[m n]=size(I);
I1=zeros(m,n);
for i=1:m
for j=1:n
if I(i,j)>t1
I1(i,j)=1;
else
I1(i,j)=0;
end
end
end
subplot(2,3,3);imshow(I1)
你说的整体阈值指的是全局阈值的意思吗?
我就这么理解了:
I=imread('tuxiangjpg');
i1=rgb2gray(I);
i2=im2bw(i1,graythresh(i1));
figure,subplot(1,3,1),imshow(I),title('原图像');
subplot(1,3,2),imshow(i1),title('灰度图');
subplot(1,3,3),imshow(i2),title('全局阈值,二值图像');
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)