📄 cdenoisegaussian.m
字号:
% function contour denoise & enhance
%%% Cdenoise gaussian 仅仅是C分解、重构滤波,采用阈值而已。
%%%%%%%%%%%%%%%%%%%%contourlet去噪 add noise and denoise
clc
clear all
a=imread('barbara.png');
% aa=rgb2gray(a);
figure,imshow(a);title('原始图像');
im=double(a);
%
% th=30;
% rho=10;
% Generate noisy image.
% noiseim=imnoise(a,'salt & pepper',0.05);
sigema=0.098;
noiseim=imnoise(a,'gaussian',0,sigema)
im2uint8(0.018) %%%5
im2uint8(0.04) %%%10
im2uint8(0.058) %%%15
im2uint8(0.08) %%20
im2uint8(0.098) %%%25
figure,imshow(noiseim);title('噪声图像');
%%%%contourlet transform
nlevels=[1,2,3];
pfilter = '9-7' ;
dfilter = 'pkva' ;
coeffs = pdfbdec( double(noiseim), pfilter, dfilter, nlevels );
% [c,s]=pdfb2vec(coeffs);
%%%%%%%%%%现在工件表面做三层LP分解,方向数分别为2的一次方,2的二次方,2的三次方
y1=coeffs{1,1};
y2=coeffs{1,2};
y3=coeffs{1,3};
y4=coeffs{1,4};
%%%%%%%%%%%%%%%
%%%%第二层子带di er ceng de liang ge zi dai
y21=y2{1,1};
y22=y2{1,2};
%%%%%第三层子带di san ceng de sige zidai
y31=y3{1,1};
y32=y3{1,2};
y33=y3{1,3};
y34=y3{1,4};
%%%%%第四层子带di si ceng de ba ge zidai
y41=y4{1,1};
y42=y4{1,2};
y43=y4{1,3};
y44=y4{1,4};
y45=y4{1,5};
y46=y4{1,6};
y47=y4{1,7};
y48=y4{1,8};
%%%%%%%%%% calculate the y41-y48 PCA modify the value:
%%%%%%%%%55
%%%%%%%%%%%55 y41
th=sigema.^0.5*(2*64*128).^0.5;
for i=1:64;j=1:128;
k41=find(y41<th);
y41(k41)=0;
Y41=y41;
k42=find(y42<th);
y42(k42)=0;
Y42=y42;
k43=find(y43)<th;
y43(k43)=0;
Y43=y43;
k44=find(y44)<th;
y44(k44)=0;
Y44=y44;
end
for i=1:128;j=1:64;
k45=find(y45<th);
y45(k45)=0;
Y45=y45;
k46=find(y46)<th;
y46(k46)=0;
Y46=y46;
k47=find(y47)<th;
y47(k47)=0;
Y47=y47;
k48=find(y48)<th;
y48(k48)=0;
Y48=y48;
end
Y=cell(1,4);
Y{1,1}=y1;
Y{1,2}=y2;
Y{1,3}=y3;
%
y4{1,1}=Y41;
y4{1,2}=Y42;
y4{1,3}=Y43;
y4{1,4}=Y44;
y4{1,5}=Y45;
y4{1,6}=Y46;
y4{1,7}=Y47;
y4{1,8}=Y48;
Y{1,4}=y4;
% Reconstruction% Reconstruction% Reconstruction
cim = pdfbrec(Y, pfilter, dfilter);%%%%%%% use the modified cofficients to reconstruction
newim=adjgamma(cim,1);
figure,imshow(newim);
title(' CPCA去噪图像');
% pp=double(noiseim)-newim;
pp=im-newim;
for i=1:256;j=1:256;
P(i,j)=pp(i,j).^2;
MSE=sum(P(:))/(256*256);
end
PSNR=20*log( (255.^2) / MSE );
PSNR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -