MATLAB学习之中值滤波

33中值滤波
指在3
3方格里,最中间方格等于9个方格的中值。
这个滤波方式对于椒盐噪声效果很好。
(均值滤波对于高斯噪声效果好

matlab代码

img=imread("dragon.png");
subplot(1,1,1);
imshow(img);
imgn=imnoise(img,"salt & pepper",0.05);
subplot(1,1,1);
imshow(imgn);
%3*3中值滤波
[m,n]=size(img);
temp=zeros(1,9);
for i=2:1:m-1
    for j=2:1:n-1
        count=1;
        for p=i-1:1:i+1
            for q=j-1:1:j+1
                temp(count)=imgn(p,q);
                count=count+1;
            end
        end
        temp=sort(temp);
        imgn(i,j)=temp(5);
    end
end
subplot(1,1,1);
imshow(imgn);

效果图

可以看到我这个代码边缘依旧有噪声。
MATLAB学习之中值滤波_第1张图片
这也是以后要努力的方向。
根据学习,目前有三种方法:

  1. 外加一圈0值后滤波。
  2. 边缘默认是0
  3. 边缘默认是离他最近的值。

你可能感兴趣的:(MATLAB)