%用于测试阈值设置后图像的反变换
clear
%===读入图像===
img=imread('C:\Users\ThinkPad\Pictures\lena.jpg');
X=mat2gray(img(100:107,100:107)); %暂时取局部图像进行测试
%===添加噪声===
noise=randn(size(X));
sigma=20/255;
X=X+noise*sigma;
dctX=dct2(X);
dctR=dctX;
Nn=size(X,1);
% 取小波系数中的高频部分,以它的标准方差作为图像的标准方差估计值。
sgm=std2(dctR(5:8,5:8));
figure
subplot(2,2,1);
imshow(X,[]);
title('原图像');
%==============
mythr=1*sgm*sqrt(2*log(Nn*Nn));
dctX(abs(dctX)<mythr)=0;
rx=idct2(dctX);
subplot(2,2,2);
imshow(rx,[]);
title('逆变换后的图像1');
%==============
mythr=0.6*sgm*sqrt(2*log(Nn*Nn));
dctX=dctR;
dctX(abs(dctX)<mythr)=0;
rx=idct2(dctX);
subplot(2,2,3);
imshow(rx,[]);
title('逆变换后的图像2');
%==============
mythr=0.4*sgm*sqrt(2*log(Nn*Nn));
dctX=dctR;
dctX(abs(dctX)<mythr)=0;
rx=idct2(dctX);
subplot(2,2,4);
imshow(rx,[]);
title('逆变换后的图像3');
随着阈值mythr越来越小,高频部分被限制的越来越少,逆变换后的图像越接近原图像