matlab按照教材敲的代码报错,求大神指点

代码如下I=imread('C:\Users\Administrator\Desktop\HCN\0207214130.bmp')subplot(1,3,1);imsho... 代码如下
I = imread('C:\Users\Administrator\Desktop\HCN\0207214130.bmp')
subplot(1,3,1);imshow(Init);
xlabel('原始图像')
%使用graythresh函数计算阈值
level=graythresh(I);
%大津法计算全局图像I的阈值
BW=im2bw(I,level)
subplot(1,3,2);imshow(BW);
xlabel('graythresh函数计算阈值')
disp(strcat('graythresh函数计算灰度阈值:',num2str(uint8(level*255))));

%下面程序实现简化计算阈值
IMAX=max(max(I)); %取出最大灰度值
IMIN=min(min(I));
T=double(IMIN:IMAX);
ISIZE=size(I);%图像大小
muxSize=ISIZE(1)*ISIZE(2);
for i=1:length(T)
%从最小灰度值到最大灰度值计算方差
TK=T(1,i);
ifground=0;
ibground=0;
%定义前景和背景灰度总和
FgroundS=0;
BgroundS=0;
for j=1:ISIZE(1);
for k=1:ISIZE(2)
tmp=I(j,k);
if(tmp>=TK)
ifground=ifground+1;
FgroundS=FgroundS+double(tmp);%前景灰度值
else
%背景像素点的计算
ibground=ibground+1;
BgroundS=BgroundS+double(tmp);
end
end
end
%计算前景和背景的比例,平均灰度值
%这里存在一个0分母的情况,警告产生但不影响结果
w0=ifground/muxSize;
w1=ibground/muxSize;
u0=FgroundS/ifground;
u1=BgroundS/ibground;
T(2,i)=w0*w1*(u0-u1)*(u0-u1);
end
%遍历后寻找I第二行的最大值
oMax=max(T(2,:));
%第二行方差的最大值,忽略NaN
idx=find(T(2,:))>=oMax;
%方差最大值对应的列号
T=uint8(T(1,idx));
%从第一行取出灰度值作为赋值
disp(strcat('简化大津法计算灰度阈值:',num2str(T)));
BW=im2bw(I,double(T)/255); %阈值分割
subplot(1,3,3);imshow(BW);
xlabel('简化大津法计算阈值');

报错结果
??? Error using ==> im2bw>parse_inputs at 129
IM2BW: Threshold luminance LEVEL has to be a non-negative number between 0 and 1.
Error in ==> main at 55
BW=im2bw(I,double(T)/255); %阈值分割
展开
 我来答
百度网友079a595a5
2013-06-01 · 超过19用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:46.1万
展开全部
倒数第三行,你看看T是多少,double(T)/255不在[0, 1]之间
追问
嗯,网上很多人也是问这个问题的。不知道这个代码能如何修改。您能帮我看看吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式