我想要一种方法,从图像中删除盐和胡椒效果,而不使用MATLAB的内置函数。我怎样才能做到这一点?

时间:2011-11-30 12:59:31

标签: matlab

我想要一种方法来从图像中去除盐和胡椒效果而不使用MATLAB的内置函数(方法)。我怎样才能做到这一点? 我做了这一行

  
    

A = filter2(fspecial('average',3),RGB)/ 255;

         

imshow(A);

         

L = medfilt2(RGB,[3,3]);

  

但我的老师告诉我,我也不能使用fspecial或medfilt2 所以现在我迷路了,谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

fspecial中使用的算法在documentation中给出,在您的情况下非常简单

>> fspecial('average',3)

ans =

    0.1111    0.1111    0.1111
    0.1111    0.1111    0.1111
    0.1111    0.1111    0.1111

>> ones(3,3)/(3*3)

ans =

    0.1111    0.1111    0.1111
    0.1111    0.1111    0.1111
    0.1111    0.1111    0.1111    

要实现中值滤波,您应该遍历图像上的每个像素。如果in(x,y)是输入图片中坐标x,y处的像素值,那么out(x,y)将是in(x-1:x+1,y-1:y+1)的中位数[3,3] 。我想,你应该自己实施,因为这是一个功课。

有关您的信息,filter2(fspecial('average',3),RGB)/255;不会消除盐和胡椒噪音。它模糊了图像,即消除了高斯噪声,但实际上我推荐使用高斯窗口。您可以阅读this来创建高斯内核,这可以帮助您更好地理解fspecial