数字图像处理实验五
分别在灰度图像中加入一定量的高斯噪声和椒盐噪声,然后采用3×3的均值滤波器和3×3中值滤波器分别对噪声图像进行处理,给出两种处理方法的峰值信噪比(PSNR);仿效“中值滤波”的方法,对原图像分别进行“极大值滤波”和“极小值滤波”,对所形成的图像给出说明。
List item
im=imread('12-Panda.bmp');
%加入高斯噪声
im1=imnoise(im,'gaussian');
%加入椒盐噪声
im2=imnoise(im,'salt & pepper');
%%
im=double(im);
im1=double(im1);
im2=double(im2);
%%
%均值滤波
h=fspecial('average',3);
im1_mean=imfilter(im1,h);
im2_mean=imfilter(im2,h);
%中值滤波
im1_median=ordfilt2(im1,5,ones(3,3));
im2_median=ordfilt2(im2,5,ones(3,3));
%极小值滤波
im1_min=ordfilt2(im1,1,ones(3,3));
im2_min=ordfilt2(im2,1,ones(3,3));
%极大值滤波
im1_max=ordfilt2(im1,9,ones(3,3));
im2_max=ordfilt2(im2,9,ones(3,3));
%%
figure
subplot(231)
imshow(mat2gray(im));
title('Original')
subplot(232)
imshow(mat2gray(im1));
title('Gaussian')
subplot(233)
imshow(mat2gray(im1_mean));
title('Mean')
fprintf('GMean,PSNR=%.2f dB',PSNR(im,im1_mean))
subplot(234)
imshow(mat2gray(im1_median));
title('Median')
fprintf('GMedian,PSNR=%.2f dB',PSNR(im,im1_median))
subplot(235)
imshow(mat2gray(im1_min));
title('Min')
subplot(236)
imshow(mat2gray(im1_max));
title('Max')
%%
figure
subplot(231)
imshow(mat2gray(im));
title('Original')
subplot(232)
imshow(mat2gray(im2));
title('salt & pepper')
subplot(233)
imshow(mat2gray(im2_mean));
title('Mean')
fprintf('saltMean,PSNR=%.2f dB',PSNR(im,im2_mean));
subplot(234)
imshow(mat2gray(im2_median));
title('Median')
fprintf('saltMedian,PSNR=%.2f dB',PSNR(im,im2_median))
subplot(235)
imshow(mat2gray(im2_min));
title('Min')
subplot(236)
imshow(mat2gray(im2_max));
title('Max')
新建脚本
function psnr=PSNR(x,y)
x=double(x);
y=double(y);
cnt=length(x(:));
mse=sum((x(:)-y(:)).^2)/cnt;
psnr=10*log10(255^2/mse);
end