پاسخ : کاهش نویزتصویر توسط ویولت
سلام.
ببخشید منظورم "روش های تخمین واریانس نویز" بود :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
%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
دیدگاه