Matlab编程求一个最大类间方差法的计算最佳阈值的程序。

Matlab编程求一个最大类间方差法的计算最佳阈值的程序。,第1张

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('全局阈值,二值图像');

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12176610.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存