对于中值滤波器,MATLAB也有自带的函数medfilt2(),中值滤波器对椒盐噪声的处理效果很好。
close all
clc
i=7; %
filename='D:\Matlab2018a\work\meanfilter\Set12\08.png'; %图片路径,改成你自己的
imgGray = im2double(imread(filename)); %读入图片
% imgnoise=imnoise(imgGray,'gaussian',0,0.01); %添加椒盐噪声
imgnoise=imnoise(imgGray,'salt & pepper',0.2);
%imgnoise=imnoise(imgGray,'speckle',0.04);
output = medfilt2(imgnoise,[i,i],'symmetric' );%symmetric:边缘采用镜像反射外边界的方式来扩展,这种方式对边缘的处理效果最好
imwrite(output,'D:\Matlab2018a\work\meanfilter\median\result\res_c_median7.png')%写出处理后的图片到指定目录
imshow ([imgGray,imgnoise,doutput]);%分别显示原图,含噪图像,去噪图像
PSNR = psnr(imgGray,output);% 计算PSNR