shenzhi123 发表于 2007-4-23 18:30

请教一下为什么画不出变化曲线

我想选取滤波效果最好的参数,但不知道该怎么选取好,
所以想把滤波后的图象计算完信噪比,然后根据信噪比和参数,画出变化曲线,再选择
但下面的程序有错误,想请教一下大家怎么改才好:'(先谢谢了

I=imread('1134.JPG');%原图象
R=imread('1133.JPG');%噪声图象
r=R(:,:,1);
g=R(:,:,2);
b=R(:,:,3);
for i=3;i=i+2;
    while i<=99
      r1=Medfilt2(r,);
      g1=Medfilt2(g,);
      b1=Medfilt2(b,);
      In=cat(3,r1,g1,b1);
      R1=SNR(I,In);
    end
end
s=(99-3)/2;
l1=length(s);
stem(l1, abs(R1));


SNR的计算是按eight发的精华帖改的
function snr=SNR(I,In)
% 计算信号噪声比函数
% by Qulei
% I :original signal
% In:noisy signal(ie. Original signal + noise signal)
% snr=10*log10(sigma2(I2)/sigma2(I2-I1))
=size(I);
snr=0;
if nchannel==1%gray image
Ps=sum(sum((I-mean(mean(I))).^2));%signal power
Pn=sum(sum((In-mean(mean(In))).^2));%noise power
snr=10*log10(Ps/(Ps-Pn));
elseif nchannel==3%color image
for i=1:3
Ps=sum(sum((I(:,:,i)-mean(mean(I(:,:,i)))).^2));%signal power
Pn=sum(sum((In(:,:,i)-mean(mean(In(:,:,i)))).^2));%noise power
snr=snr+10*log10(Ps/(Ps-Pn));
end
snr=snr/3;
end

先谢谢大家了:loveliness:

[ 本帖最后由 eight 于 2007-4-23 19:09 编辑 ]

eight 发表于 2007-4-23 18:35

for i=3;i=i+2;

这句错了

另外,建议下次发帖时候先阅读一下置顶贴:聚宝盆,你既不提供数据文件、也不提供出错信息,别人根本帮不到你,也根本不想帮你

shenzhi123 发表于 2007-4-23 18:49

不好意思,图片太大,我传不上去,对不起,真的写谢谢你,你能再帮我看看吗?我该怎么改才好?
还有就是出错是一直在运行,根本不出现运行完“>>”的这个符号,我是点ctrl+c停止的,
错误是Error in ==> SNR at 17
Ps=sum(sum((I(:,:,i)-mean(mean(I(:,:,i)))).^2));%signal power
我怎么才能把图片给你看到呢?

eight 发表于 2007-4-23 18:51

原帖由 shenzhi123 于 2007-4-23 18:49 发表 http://forum.vibunion.com/forum/images/common/back.gif
不好意思,图片太大,我传不上去,对不起,真的写谢谢你,你能再帮我看看吗?我该怎么改才好?
还有就是出错是一直在运行,根本不出现运行完“>>”的这个符号,我是点ctrl+c停止的,
错误是Error in ==> SNR at 1 ...


不是给你提示了吗?

for i=3;i=i+2;

这句错了

shenzhi123 发表于 2007-4-23 19:04

我刚用PS改完图片,附件是图片

eight 发表于 2007-4-23 19:10

原帖由 shenzhi123 于 2007-4-23 19:04 发表 http://forum.vibunion.com/forum/images/common/back.gif
我刚用PS改完图片,附件是图片


按照我上面的提示修改一下吧,for循环的语法是:for 变量名 = 起始值:步长:结束值。如果用你的代码,一定会死循环的,这正是你上面所描述的现象

shenzhi123 发表于 2007-4-23 19:26

哦,明白了,谢谢啊,我比较笨,太谢谢你了,:loveliness: 真的真的很谢谢你
页: [1]
查看完整版本: 请教一下为什么画不出变化曲线