声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1015|回复: 1

[图像处理] ostu求阈值怎么老出错

[复制链接]
发表于 2009-2-15 10:56 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有账号?我要加入

x
x=imread('QRcode.jpg');
%figure;
%imshow(x);
[m,n]=size(x);
N=m*n;
num=zeros(1,256);%生成一个1*256的全0矩阵%
p=zeros(1,256);
for i=1:m
     for j=1:n
         num(x(i,j)+1)=num(x(i,j)+1)+1;
     end
end
for i=0:255;
     p(i+1)=num(i+1)/N;%计算灰度值为i的像素点出现的概率%
end
totalmean=0;
for i=0:255;
     totalmean=totalmean+i*p(i+1);%总体的均值%
end
maxvar=0;
for k=0:255
     kk=k+1;
     zerosth=sum(p(1:kk));
   
     firsth=0;
     for h=0:k
         firsth=firsth+h*p(h+1);
     end
     var=totalmean*zerosth-firsth;
     var=var*var;
     var=var/(zerosth*(1-zerosth)+0.01);
     var=sqrt(var);
     if(var>maxvar)
         maxvar=var;
         point=k;
     end
   
end
threshold=point
这是用ostu求图像二值化阈值的,一运行就显示??? Error using ==> +
Function '+' is not defined for values of class 'uint8'.
Error in ==> c:\MATLAB6p5\work\Untitled12.m
On line 12  ==>          num(x(i,j)+1)=num(x(i,j)+1)+1;
我把 num(x(i,j)+1)=num(x(i,j)+1)+1;改为   num(x(i,j))=num(x(i,j))+1;又显示??? Subscript indices must either be real positive integers or logicals.
Error in ==> c:\MATLAB6p5\work\Untitled12.m
On line 12  ==>          num(x(i,j))=num(x(i,j))+1
我觉得线标没有超出范围啊,可就是不对,请问哪位高手会吗
qrcode.jpg
回复
分享到:

使用道具 举报

发表于 2009-2-15 13:59 | 显示全部楼层
感觉楼主三个帖是相同一个问题! 是吗?
可否帮LZ合成一帖, 方便大家容易了解状况!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-23 18:11 , Processed in 0.065695 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表