我想要一种方法来从图像中去除盐和胡椒效果而不使用MATLAB的内置函数(方法)。我怎样才能做到这一点? 我做了这一行
A = filter2(fspecial('average',3),RGB)/ 255;
imshow(A);
L = medfilt2(RGB,[3,3]);
但我的老师告诉我,我也不能使用fspecial或medfilt2 所以现在我迷路了,谢谢你的帮助
答案 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
。