![]() |
为什么程序会提示??? 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. 为什么啊?!!!!! |
回复: 为什么程序会提示??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13
第二行:subplot(131)imshow(I);
没有逗号或分号(matlab operator) subplot(131),imshow(I);应该就可以了 |
回复: 为什么程序会提示??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13
谢谢ls,我试试哈~
|
回复: 为什么程序会提示??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13
lz 另外iMax变量上下大小写不一致
T= uint8(T(1,dix));中变量名有错误 Thx for reading. PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。 个人观点 仅供参考 多多交流 相互学习 |
回复: 为什么程序会提示??? Error: File: C:\MATLAB7\work\otsu.m Line: 2 Column: 13
[QUOTE=silas_xue;28317]lz 另外iMax变量上下大小写不一致
T= uint8(T(1,dix));中变量名有错误 Thx for reading. PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。 个人观点 仅供参考 多多交流 相互学习[/QUOTE] ls,我找不到 thanks~呃。。。 |
所有时间均为北京时间。现在的时间是 05:45。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.