Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-05-20, 09:35   #1
1103
初级会员
 
注册日期: 2009-05-16
帖子: 4
声望力: 0
1103 正向着好的方向发展
问题 为什么程序会提示??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13

这个是大津法的程序:

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('简化大津法计算阈值')



但是在MATLAB上运行后 会出现:
??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13
Missing MATLAB operator.


为什么啊?!!!!!
1103 当前离线   回复时引用此帖
旧 2009-05-20, 10:21   #2
yhcode
高级会员
 
注册日期: 2008-05-13
年龄: 44
帖子: 232
声望力: 21
yhcode 正向着好的方向发展
默认 回复: 为什么程序会提示??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13

第二行:subplot(131)imshow(I);
没有逗号或分号(matlab operator)

subplot(131),imshow(I);应该就可以了
__________________
工科'985'博士,(图像处理、分析及理解;模式识别;运动估计;数据分析等)定做程序、算法实现--qq:752105755
yhcode 当前离线   回复时引用此帖
旧 2009-05-20, 18:32   #3
1103
初级会员
 
注册日期: 2009-05-16
帖子: 4
声望力: 0
1103 正向着好的方向发展
微笑 回复: 为什么程序会提示??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13

谢谢ls,我试试哈~
1103 当前离线   回复时引用此帖
旧 2009-05-21, 03:44   #4
silas_xue
高级会员
 
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26
silas_xue 是一个将要出名的人
默认 回复: 为什么程序会提示??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13

lz 另外iMax变量上下大小写不一致
T= uint8(T(1,dix));中变量名有错误

Thx for reading.
PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。
个人观点 仅供参考 多多交流 相互学习
silas_xue 当前离线   回复时引用此帖
旧 2009-05-21, 17:23   #5
1103
初级会员
 
注册日期: 2009-05-16
帖子: 4
声望力: 0
1103 正向着好的方向发展
默认 回复: 为什么程序会提示??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13

引用:
作者: silas_xue 查看帖子
lz 另外iMax变量上下大小写不一致
T= uint8(T(1,dix));中变量名有错误

Thx for reading.
PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。
个人观点 仅供参考 多多交流 相互学习


ls,我找不到 thanks~呃。。。
1103 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 18:16


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.