求助matlab中的一个小程序总是运行不出来~希望高手指点一二。

来源:百度知道 编辑:UC知道 时间:2024/06/04 04:43:35
是关图像处理二值化的程序 老是提示 divided by zero,程序如下:
f=imread('hm.bmp');
subplot(1,2,1)
imshow(f);
title('原始图像');
f=double(f);
T=(min(f(:))+max(f(:))+max(f(:)))/2;
done=false;
i=0
while ~done
r1=find(f<=T);
r2=find(f>T);
Tnew=(mean(f(r1))+mean(f(r2)))/2
done=abs(Tnew-T)<1
T=Tnew;
i=i+1;
end
f(r1)=0;
f(r2)=1;
subplot(1,2,2)
imshow(f);
title('迭代阈值二值化图像');

r2=find(f>T); 这句有问题,因为根据你的程序,min(f)=0时,T有可能等于max(f),这时r2的结果是个空数据,所以才会出错。
不懂你的算法,检查一下T=(min(f(:))+max(f(:))+max(f(:)))/2; 是不是有问题。