A_number=0; %初始化A部分总像素值
B_number=0; %初始化B部分总像素值
A_all=0; %初始化A部分总灰度值
B_all=0; %初始化B部分总灰度值
for i=1:M
for j=1:N
if (I(i,j)>=T1)
A_number=A_number+1; %A部分总像素值
A_all=A_all+I(i,j); %A部分总灰度值
elseif (I(i,j)<T1)
B_number=B_number+1; %A部分总像素值
B_all=B_all+I(i,j); %B部分总灰度值
end
end
end
A_ave=A_all/A_number; %A部分灰度均值
B_ave=B_all/B_number; %B部分灰度均值
T2=1/2*(A_ave+B_ave); %A与B灰度均值的中间值,即新阈值
while (abs(T2-T1)>level) %判断T1与T2之间的误差绝对值是否大于设定值
T1=T2; %把T2赋给T1,反复重复上述程序,直到T2-T1的绝对值小于设定值为止
A_number=0;
B_number=0;
A_all=0;
B_all=0;
for i=1:M
for j=1:N
if (I(i,j)>=T1)
A_number=A_number+1;
A_all=A_all+I(i,j);
elseif (I(i,j)<T1)
B_number=B_number+1;
B_all=B_all+I(i,j);
end
end
end
A_ave=A_all/A_number;
B_ave=B_all/B_number;
T2=1/2*(A_ave+B_ave);
end %T1与T2之间的误差绝对值小于设定值时,跳出循环