声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1634|回复: 1

[综合讨论] 小波图像去噪后每次算出来的psnr都不一样。。

[复制链接]
发表于 2012-5-16 20:33 | 显示全部楼层 |阅读模式

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

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

x
每次算出来的峰值信噪有时候比中值滤波的大,有时候还小。怎么回事啊。请各位看看。。
A=imread('concordorthophoto.png');

%--------------------------------------------------------------------------
%为源图像加上高斯噪声
B=imnoise(A,'gaussian',0,0.006);
imwrite(B,'concordorthophoto.png','png');

A1=im2double(A);
B1=im2double(B);
%--------------------------------------------------------------------------
%计算去噪前的PSNR值
[m,n]=size(A);
err=0;
sum=0;
for i=1:m,
    for j=1:n,
        err=err+(A1(i,j)-B1(i,j))*(A1(i,j)-B1(i,j));
        sum=sum+A1(i,j)*A1(i,j);
    end
end
psnr=err/sum;
psnr_before_noisedelete=-10*log10(psnr)
PSNR1=num2str(psnr_before_noisedelete);

%--------------------------------------------------------------------------
%小波分解去噪。使用wdcbm2获得图像去噪阈值,然后用函数wdencmp实现图像去噪
%使用haar小波进行二层分解
wname='haar';lev=2;
[c,s]=wavedec2(B1,lev,wname);
%使用wdcbm2获得去噪阈值
alpha=3;m=3.5*prod(s(1,:));
[thr,nkeep]=wdcbm2(c,s,alpha,m);
%对信号进行去噪
sorh='s';
xd=wdencmp('lvd',c,s,wname,lev,thr,sorh);
imwrite(xd,'concordorthophoto.png','png');

%--------------------------------------------------------------------------
%计算软阈值小波去噪后的PSNR值
[m,n]=size(A1);
err=0;
sum=0;
for i=1:m,
    for j=1:n,
        err=err+(A1(i,j)-xd(i,j))*(A1(i,j)-xd(i,j));
        sum=sum+A1(i,j)*A1(i,j);
    end
end
psnr=err/sum;
psnr_after_noisedelete=-10*log10(psnr)
PSNR2=num2str(psnr_after_noisedelete);


%小波分解去噪。使用wdcbm2获得图像去噪阈值,然后用函数wdencmp实现图像去噪
%使用haar小波进行二层分解
wname='haar';lev=2;
[c,s]=wavedec2(B1,lev,wname);
%使用wdcbm2获得去噪阈值
alpha=3;m=3.5*prod(s(1,:));
[thr,nkeep]=wdcbm2(c,s,alpha,m);
%对信号进行去噪
sorh='h';
xd1=wdencmp('lvd',c,s,wname,lev,thr,sorh);
imwrite(xd1,'concordorthophoto.png','png');

%计算硬阈值小波去噪后的PSNR值
[m,n]=size(A1);
err=0;
sum=0;
for i=1:m,
    for j=1:n,
        err=err+(A1(i,j)-xd1(i,j))*(A1(i,j)-xd1(i,j));
        sum=sum+A1(i,j)*A1(i,j);
    end
end
psnr=err/sum;
psnr_after_noisedelete=-10*log10(psnr)
PSNR3=num2str(psnr_after_noisedelete);
%--------------------------------------------------------------------------
%采用中值去噪并计算去噪后的PSNR值
C=medfilt2(B1);
[m,n]=size(A1);
err=0;
sum=0;
for i=1:m,
    for j=1:n,
        err=err+(A1(i,j)-C(i,j))*(A1(i,j)-C(i,j));
        sum=sum+A1(i,j)*A1(i,j);
    end
end
psnr=err/sum;
psnr_after_medfiltering=-10*log10(psnr)
PSNR4=num2str(psnr_after_medfiltering);
imwrite(C,'concordorthophoto.png','png');
clf;
subplot(2,3,1),imshow(A);title('原始图像');
subplot(2,3,2),imshow(C);title('中值去噪后的图像');xlabel(['PSNR=',PSNR4]);
subplot(2,3,3),imshow(B);title('加入高斯噪声后图像');xlabel(['PSNR=',PSNR1]);
subplot(2,3,4),imshow(xd);title('软阈值去噪图像');xlabel(['PSNR=',PSNR2]);
subplot(2,3,5),imshow(xd1);title('硬阈值去噪图像');xlabel(['PSNR=',PSNR3]);

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2012-12-24 15:53 | 显示全部楼层
因为所加噪声为随机分布,其实每次加的噪声都是不一样的,当然PSNR值不一样了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-26 21:14 , Processed in 0.073549 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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