
求助matlab中的一个小程序总是运行不出来~希望高手指点一二。
是关图像处理二值化的程序老是提示dividedbyzero,程序如下:f=imread('hm.bmp');subplot(1,2,1)imshow(f);title('...
是关图像处理二值化的程序 老是提示 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('迭代阈值二值化图像'); 展开
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('迭代阈值二值化图像'); 展开
1个回答
展开全部
r2=find(f>T); 这句有问题,因为根据你的程序,min(f)=0时,T有可能等于max(f),这时r2的结果是个空数据,所以才会出错。
不懂你的算法,检查一下T=(min(f(:))+max(f(:))+max(f(:)))/2; 是不是有问题。
不懂你的算法,检查一下T=(min(f(:))+max(f(:))+max(f(:)))/2; 是不是有问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询