在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3195|回复: 3

求助!MATLAB 提示 如下 错误信息~~

[复制链接]
发表于 2009-5-20 09:36:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 eecsseudl 于 2013-4-29 10:04 编辑

下面是 大津法的程序,不知道哪里错了~~

I=imread('coins.png');
subplot(131)imshow(I);
title('原始图象')
%下面使用MATLAB函数计算阈值
level=graythresh(I);
%用大津法计算全局图像I的阈值
BW=im2bw(I,level);
%阈值分割
subplot(132),imshow(BW)
title('graythresh计算灰度阈值')
disp(strcat('简化大津法计算灰度阈值:',num2str(uint8(level*255))))
%下面的MATLAB程序实现简化计算阈值
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);
iForeground=0;
iBackground=0;
%定义前景和背景数
Foreground=0;
Background=0;
%定义前景和背景灰度总和
for j=1:iSize(1)
  for k=1:iSize(2)
     tmpData=I(j,k)
     if(tmpData>=TK)
     %前景像素点的计算
     iForeground=iForeground+1;
     ForegroundSum=ForegroundSum+double(tmpData);
else
     %背景像素点的计算
     iBackground=iBackground+1;
     BackgroundSum=BackgroundSum+double(tmpData);
   end
end
end
%计算前景和背景的比例和平均灰度值
%这里存在一个0分母的情况,导致告警,解决方法很简单,
%但不影响结果,请读者改进
w0 = iForeground/muxSize;
w1 = iBackground/muxSize;
u0 = ForegroundSum/iForeground;
U1 = BackgroundSum/iBackgroundSum;
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,dix));
%从第一行取出灰度值作为阈值
disp(strcat('简化大津法计算灰度阈值:',num2str(T)))
BW = im2bw(I,double(T)/255);
%阈值分割
subplot(133),imshow(BW)
title('简化大津法计算阈值')



运行后提示:

??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13
Missing MATLAB operator.



为什么啊?!!!!!!!!!!!!!!

[ 本帖最后由 spring_mm 于 2009-5-20 09:43 编辑 ]







发表于 2009-5-20 12:04:08 | 显示全部楼层
你使用了很多中文输入法模式下的标点
试着修改了一下,你看看
具体算法问题,你自己研究吧


I=imread('coins.png');
subplot(131);imshow(I);
title('原始图象')
%下面使用MATLAB函数计算阈值
level=graythresh(I);
%用大津法计算全局图像I的阈值
BW=im2bw(I,level);
%阈值分割
subplot(132),imshow(BW)
title('graythresh计算灰度阈值')
disp(strcat('简化大津法计算灰度阈值:',num2str(uint8(level*255))))
%下面的MATLAB程序实现简化计算阈值
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);
iForeground=0;
iBackground=0;
%定义前景和背景数
Foreground=0;
Background=0;
%定义前景和背景灰度总和
for j=1:iSize(1)
  for k=1:iSize(2)
     tmpData=I(j,k)
     if(tmpData>=TK)
     %前景像素点的计算
     iForeground=iForeground+1;
     ForegroundSum=ForegroundSum+double(tmpData);
else
     %背景像素点的计算
     iBackground=iBackground+1;
     BackgroundSum=BackgroundSum+double(tmpData);
   end
end
end
%计算前景和背景的比例和平均灰度值
%这里存在一个0分母的情况,导致告警,解决方法很简单,
%但不影响结果,请读者改进
w0 = iForeground/muxSize;
w1 = iBackground/muxSize;
u0 = ForegroundSum/iForeground;
U1 = BackgroundSum/iBackgroundSum;
T(2,i) = w0*w1*(U0-U1)*(U0-U1);
%第二行为计算的方差
end
%遍历后寻找I的第二行的最大值
oMax = max(T(2,1));
%第二行方差的最大值,忽略NaN
idx = find(T(2,1)>=oMax);
%方差最大值所对应的列号
T= uint8(T(1,dix));
%从第一行取出灰度值作为阈值
disp(strcat('简化大津法计算灰度阈值:',num2str(T)))
BW = im2bw(I,double(T)/255);
%阈值分割
subplot(133),imshow(BW)
title('简化大津法计算阈值')
 楼主| 发表于 2009-5-20 18:19:43 | 显示全部楼层
ls 强的,不管怎么说 图片是终于出来了哈~
奇怪还是有错误 :

简化大津法计算灰度阈值:126
??? Undefined function or variable "iMax".
Error in ==> otsu at 16
T=double(iMin:iMax);
发表于 2009-5-24 14:37:35 | 显示全部楼层
You defined iMAX as iMAX=max(max(I));
But you used iMax.
Note that cases of letters are sensitive in MATLAB code.
For example, BUE is different from bue.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-19 18:29 , Processed in 0.016247 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表