小波变换软硬阈值半软阈值图像去噪matlab程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%软阈值硬阈值半软阈值巴特沃斯滤波
clc
close all
clear all
map=gray(256);
x=imread('hzw.jpg');
x=rgb2gray(x);
subplot(2,3,1);
image(x);
colormap(map);
title('原始图片');
axis square;
init=2055615866;
randn('seed',init);
x1=50.*randn(size(x)); %均值为0 方差50^2
x=double(x)
nx=x+x1;
subplot(2,3,2);
image(nx);
colormap(map);
title('加噪后的图片');
axis square;
c=num2str(c);
text(100,100,'PSNR:');
text(300,100,c);
%硬阈值
[thr,sorh,keepapp]=ddencmp('den','wv',nx);
nx1=wdencmp('gbl',nx,'sym5',2,thr,'h',keepapp); subplot(2,3,3);
image(nx1);
title('Ó²ãÐֵȥÔëºóͼÏñ');
axis square;
a1=psnr(nx1,x);
a1=num2str(a1);
text(100,100,'PSNR:');
text(300,100,a1);
%软阈值
nx2=wdencmp('gbl',nx,'sym5',2,thr,'s',keepapp); subplot(2,3,4);
image(nx2);
title('ÈíãÐֵȥÔëºóͼÏñ');
axis square;
c=psnr(nx2,x);
c=num2str(c);
text(100,100,'PSNR:');
text(300,100,c);
%半软阈值
nx3=hsoft(nx,'sym5',2,0.5,thr);
subplot(2,3,5);
image(nx3);
title('°ëÈíãÐֵȥÔëºóͼƬ');
axis square;
a4=psnr(nx3,x);
a4=num2str(a4);
text(100,100,'PSNR:');
text(300,100,a4);
%巴特沃斯
g=fft2(nx);
g=fftshift(g);
[m,n]=size(g);
N=3;d0=60;
n1=floor(m/2);
n2=floor(n/2);
for i=1:m
for j=1:n
d=sqrt((i-n1)^2+(j-n2)^2);
h=1/(1+(d/d0)^(2*N));
g(i,j)=h*g(i,j);
end
end
g=ifftshift(g);
g=(real(ifft2(g)));
subplot(2,3,6);
image(g);
title('°ÍÌØÎÖ˹µÍͨÂ˲¨');
axis square;
a5=psnr(g,x);
a5=num2str(a5);
text(100,100,'PSNR:');
text(300,100,a5);
function X=hsoft(x,wname,n,thr,thrl)
[C,S]=wavedec2(x,n,wname);
dcoef=C(prod(S(1,:))+1:end);
ind=find(abs(dcoef) C(ind)=0; ind=find(abs(dcoef)>=thrl&abs(dcoef) C(ind)=sign(C(ind)).*((thr/(thr-thrl)*(abs(C(ind))-thrl))); A1=wrcoef2('a',C,S,wname,n); H1=wrcoef2('h',C,S,wname,n); V1=wrcoef2('v',C,S,wname,n); D1=wrcoef2('d',C,S,wname,n); X=A1+H1+V1+D1;