پاسخ : کاهش نویزتصویر توسط ویولت
سلام.
ببخشید منظورم "روش های تخمین واریانس نویز" بود :redface:
سلام.
ببخشید منظورم "روش های تخمین واریانس نویز" بود :redface:
%recodec clear all clc x=imread('1.png'); x=rgb2gray(x); imshow(x) % x=clear image sigma1=0.1 y=imnoise(x,'gaussian',0,sigma1);%mean=0 & sigma1=0.01% figure(2) imshow(y) w=fspecial('gaussian',[101 101],1); x2=imfilter(y,w); figure(3) imshow(x2) MSE=sum(sum((x2-x).^2))/512 %less-better PSNR= 10*log10(255/MSE)^2
oo:
oo:
%recodec
clear all
clc
x=imread('Lena.jpg');
% x=rgb2gray(x);
imshow(x) % x=clear image
sigma1=0.1;
y=imnoise(x,'gaussian',0,sigma1);%mean=0 & sigma1=0.01%
figure(2)
imshow(y)
figure(3)
winsize = [3, 15, 75];
sigma = [0.05, 0.15, 0.75];
for i = 1 : 3
for j = 1:3
w=fspecial('gaussian',[winsize(i) winsize(i)],sigma(j));
x2=imfilter(y,w);
MSE=sum(sum((x2-x).^2))/(length(x(:))); %less-better
PSNR= 20*log10(255/sqrt(MSE));
subplot(3,3,(i-1)*3 + j);
imshow(x2)
title(['win size = ',num2str(winsize(i)),' & \sigma = ',num2str(sigma(j)) ...
' MSE = ',num2str(MSE),' PSNR = ',num2str(PSNR) ]);
end
end
%recodec
clear all
clc
% inline definition of standard deviation from standard deviation in dB and
% signal;
std_n = @(x)( std( reshape( double(x{1}),1,[]) ) ./ ( 10 .^ ( x{2} / 20 ) ));
x=imread('Lena.jpg');
% x=rgb2gray(x);
imshow(x) % x=clear image
sigma1_dB = 50;
sigma1 = std_n({x,sigma1_dB});
% sigma1=0.1;
y=imnoise(x,'gaussian',0,sigma1);%mean=0 & sigma1=0.01%
figure(2)
imshow(y)
figure(3)
winsize = [3, 15, 75];
sigma_db = [50 40 30];
sigma = std_n({y,sigma_db});
% sigma = [0.05, 0.15, 0.75];
for i = 1 : 3
for j = 1:3
w=fspecial('gaussian',[winsize(i) winsize(i)],sigma(j));
x2=imfilter(y,w);
MSE=sum(sum((x2-x).^2))/(length(x(:))); %less-better
PSNR= 20*log10(255/sqrt(MSE));
subplot(3,3,(i-1)*3 + j);
imshow(x2)
title(['win size = ',num2str(winsize(i)),' & \sigma = ',num2str(sigma(j)) ...
' MSE = ',num2str(MSE),' PSNR = ',num2str(PSNR) ]);
end
end
%recodec
clear all
clc
% inline definition of standard deviation from standard deviation in dB and
% signal;
std_n = @(x)( std( reshape( double(x{1}),1,[]) ) ./ ( 10 .^ ( x{2} / 20 ) ));
x=imread('Lena.jpg');
% x=rgb2gray(x);
imshow(x) % x=clear image
sigma1_dB = 50;
sigma1 = std_n({x,sigma1_dB});
% sigma1=0.1;
y=imnoise(x,'gaussian',0,sigma1);%mean=0 & sigma1=0.01%
figure(2)
imshow(y)
figure(3)
winsize = [3, 15, 75];
sigma_db = [50 40 30];
sigma = std_n({y,sigma_db});
% sigma = [0.05, 0.15, 0.75];
for i = 1 : 3
for j = 1:3
w=fspecial('gaussian',[winsize(i) winsize(i)],sigma(j));
x2=imfilter(y,w);
MSE=sum(sum((x2-x).^2))/(length(x(:))); %less-better
PSNR= 20*log10(255/sqrt(MSE));
subplot(3,3,(i-1)*3 + j);
imshow(x2)
title(['win size = ',num2str(winsize(i)),' & \sigma = ',num2str(sigma(j)) ...
' MSE = ',num2str(MSE),' PSNR = ',num2str(PSNR) ]);
end
end
oo:(5دسی بل رو به عدد29!!تبدیل میکنه!!)
یعنی درسته نویز کمتری دیده میشه اما تصویر خیلی نرم و مات شده.
oo:
دیدگاه