MATLAB-均值滤波 中值滤波对高斯噪声和椒盐噪声的对比

M=imread('go.jpg'); %读取图像
[ROW,COL, DIM] = size(M);%保存图像尺寸
subplot(3,3,1),imshow(M),title('original');%显示原始图像
P1=imnoise(M,'gaussian',0.05); %加入高斯躁声
subplot(3,3,4),imshow(P1),title('gaussian noise');%加入高斯躁声后显示图像
P2=imnoise(M,'salt & pepper',0.05); %加入椒盐躁声
subplot(3,3,5),imshow(P2),title('salt & pepper noise');%%加入椒盐躁声后显示图像
S1=rgb2ycbcr(P2);
imgn=P2;
imgn=im2double(imgn);
subplot(3,3,6),imshow(imgn),title('gray');
g(:,:,1)=medfilt2(P1(:,:,1)); %对高斯躁声中值滤波
g(:,:,2)=medfilt2(P1(:,:,2));
g(:,:,3)=medfilt2(P1(:,:,3));
subplot(3,3,7),imshow(g),title('medfilter gaussian');
h(:,:,1)=medfilt2(P2(:,:,1)); %对椒盐躁声中值滤波
h(:,:,2)=medfilt2(P2(:,:,2));
h(:,:,3)=medfilt2(P2(:,:,3));
mean_filter_img=imgn;
mean_filter_img=im2double(mean_filter_img);
subplot(3,3,8),imshow(h),title('medfilter salt & pepper noise');
for r = 2:1:ROW-1
    for c = 2:1:COL-1
        for d =1:3
        mean_filter_img(r,c,d) = (imgn(r-1, c-1,d) + imgn(r-1, c,d) + imgn(r-1, c+1,d) + imgn(r, c-1,d) + imgn(r, c,d) + imgn(r, c+1,d) + imgn(r+1, c-1,d) + imgn(r+1, c,d) + imgn(r+1, c+1,d)) / 9;
        %mean_filter_img(r,c,2) = (imgn(r-1, c-1) + imgn(r-1, c) + imgn(r-1, c+1) + imgn(r, c-1) + imgn(r, c) + imgn(r, c+1) + imgn(r+1, c-1) + imgn(r+1, c) + imgn(r+1, c+1)) / 9;
        %mean_filter_img(r,c,3) = (imgn(r-1, c-1) + imgn(r-1, c) + imgn(r-1, c+1) + imgn(r, c-1) + imgn(r, c) + imgn(r, c+1) + imgn(r+1, c-1) + imgn(r+1, c) + imgn(r+1, c+1)) / 9;
        end
    end
end
subplot(3,3,3),imshow(mean_filter_img),title('mean_img');
disp('====================finish================'); 

 

猜你喜欢

转载自blog.csdn.net/weixin_41445387/article/details/90140041